Erreur warning mysql_fetch_array

Fermé
fabrice11901 Messages postés 787 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 12 juillet 2007 - 21 oct. 2005 à 13:11
fabrice11901 Messages postés 787 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 12 juillet 2007 - 22 oct. 2005 à 09:20
Bonjour, je vous donne mon code et l'erreur juste en dessous merci de m'aider j'ai analyser plusieurs fois mon code mais le code fais toujours cette erreur :

code php :
<?session_start();?>
<?echo $_SESSION['pseudo'];?>
<?$_SESSION['pseudo']=$_POST['pseudo'];

$dbc = @mysql_connect ("sql.free.fr", "sons.gratuits", "****");

if(!mysql_errno($dbc)) {
mysql_select_db("sons_gratuits");

$query = "SELECT naissance, sexe, ville FROM compte";
$query .= " WHERE pseudo='$pseudo'";

$requete = mysql_query($query);

while ($donnees = mysql_fetch_array($requete)) { ?>


<?$_SESSION['naissance']=$donnees['naissance']; $_SESSION['sexe']=$donnees['sexe']; $_SESSION['ville']=$donnees['ville'];?>


<?
if(isset($_POST['message']))
{
$pseudo=$_SESSION['pseudo']; $naissance=$donnees['naissance']; $sexe=$donnees['sexe']; $ville=$donnees['ville']; $h=date("U");
$msg = trim($_POST['message']);
$m = htmlentities($msg);
$requete = "insert into chat1 VALUES('' , '".$pseudo."' , '".$naissance."' , '".$sexe."' , '".$ville."' ,$h , NOW() , \"".$m."\")";

$dbc = @mysql_connect ("sql.free.fr", "sons.gratuits", "****");
if(!mysql_errno($dbc))
{
//***Sélection de la base de données***
mysql_select_db("sons_gratuits");
$requete=@mysql_query($requete) or die("Impossible d'executer la requete : " . mysql_error());
mysql_close();
}
else
{
echo mysql_errno($dbc)." : ".mysql_error($dbc)."\n";
}
}

}}
?>






<HTML> <FORM METHOD="POST" action="chat1.php"> Message :<INPUT TYPE="text" name="message"> <INPUT TYPE="submit" value="Envoyer le message !"> </FORM> </html>
et l'erreur :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/f/0/sons.gratuits/chat1.php on line 15
en fait quand je me connecte à ma bdd j'arrive sur donc cette page avec le formulaire ou je dois rentrer mon message, et quand je fais envoyer sur le formularie j'ai cette erreur; merci de m'aider !

6 réponses

wiwimagique Messages postés 481 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 20 avril 2006 108
21 oct. 2005 à 13:55
Il me semble que je t'ai déjà répondu il y a quelques jours.
Tu réaffacte une valeur à $requete alors que ta boucle en dépend.
0
fabrice11901 Messages postés 787 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 12 juillet 2007 64
21 oct. 2005 à 14:05
re, merci de m'avoir répondu, je ne comprend pas trop ce que tu me dis; peux-tu un peu plus m'expliquer? merci de ta patience
0
wiwimagique Messages postés 481 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 20 avril 2006 108
21 oct. 2005 à 16:08
tu fait une boucle sur les résultats de ta requête

$requete = mysql_query($query);
while ($donnees = mysql_fetch_array($requete)) {
...
}


$requête contient le résultat de ta requête $query on va dire.
Et $donnees contient la ligne courante.
La boucle while parcourt dont ligne par ligne les résultats de $requete et les met dans $donnees.

Or, à l'intérieur de ta boucle, tu affectes :

$requete = "insert into chat1 VALUES('' , '".$pseudo."' , '".$naissance."' , '".$sexe."' , '".$ville."' ,$h , NOW() , \"".$m."\")";


Donc, $requete ne contient plus les resultats de ta $query mais une vulgaire chaine de caractères.
Et donc lors de l'extraction de la ligne suivante, mysql_fetch_array plante.


Tu comprends ?


Tu devrais p-ê commencer à apprendre les bases de la programmation avec un bouquin ou un tutorial sur un site. Ne serait-ce que pour comprendre le fonctionnement général d'un programme, les variables, les boucles, les fonctions.

Car dans ton script par exemple, tu fais une nouvelle connexion à chaque requête ...

0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 506
21 oct. 2005 à 16:13
Sorry, j'ai posté sans avoir vérifié si tu avais répondu...
0
wiwimagique Messages postés 481 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 20 avril 2006 108
21 oct. 2005 à 16:16
On a répondu presque en même temps :p

0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 506
21 oct. 2005 à 16:11
Salut,
Ce que te dit wiwimagique, c'est que :
Le while utilise la variable $requete; lors de appel mysql_fetch_array() et que
dans le corps de la boucle tu reaffectes $requete :
Donc là tu déglingue le fonctionnement de ton programme.
Utilises de nouveaux noms de variables pour tes requetes et tes resultats de
requetes dans ta boucle.
Normalement un seul appel mysql_connect() suffit par script php. Même
remarque pour mysql_select_db()
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fabrice11901 Messages postés 787 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 12 juillet 2007 64
21 oct. 2005 à 17:04
re, ha oui je comprenez pas ce que tu voulez me dire et je commence à comprendre ! oui tu as raison y a deux requete; donc en fait si je modifi le nom requete par par exemple $query dans la boucle ça devrait marcher? le php je le comprend je suis juste étourdi quand je fais les script; merci de me répondre !
0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 506
21 oct. 2005 à 18:30
Salut,
Mets plutot un truc du genre $sql_2, $res_2 et $row_2. Comme ça si tu as
besoin d'imbriquer encore des requètes dans de nouvelles boucles, tu passeras à
l'indice 3 (et ainsi de suite).
Tu auras par la suite moins de mal à savoir d'où provient ton résultat, lors
d'un echo par exemple.
A+, bon courage, Crabs
0
fabrice11901 Messages postés 787 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 12 juillet 2007 64
22 oct. 2005 à 09:20
re, c'est bon ça marche en effet cété les $requete qui n'allez pas par contre
je débute dans les session et j'ai juste une question : dans mon script, la première requete va chercher naissance, sexe ville, dans la table et dans la req 2 on envois des info dans la table grace au à mysql_fetch_array (naissance, sexe, ville) mon pb est que dans mon script en haut de page j'ai bien mi <?session_start();?> pour que le pseudo du membre soit mi dans session mais celui-ci ne s'enregistre pas dans ma table mysql comment ce fait-il? je vous donne le code maintenant tel que je l'ai modifier :

<?session_start();?>
<?$_SESSION['pseudo']=$_POST['pseudo'];
$pseudo=$_SESSION['pseudo'];
$dbc = @mysql_connect ("sql.free.fr", "sons.gratuits", "***");

if(!mysql_errno($dbc)) {
mysql_select_db("sons_gratuits");

$query = "SELECT naissance, sexe, ville FROM compte";
$query .= " WHERE pseudo='$pseudo'";

$requete = mysql_query($query);

while ($donnees = mysql_fetch_array($requete)) { ?>


<?$_SESSION['naissance']=$donnees['naissance']; $_SESSION['sexe']=$donnees['sexe']; $_SESSION['ville']=$donnees['ville'];?>


<?
if(isset($_POST['message']))
{
$naissance=$donnees['naissance']; $sexe=$donnees['sexe']; $ville=$donnees['ville']; $h=date("U");
$msg = trim($_POST['message']);
$m = htmlentities($msg);
$req = "insert into chat1 VALUES('' , '".$pseudo."' , '".$naissance."' , '".$sexe."' , '".$ville."' ,$h , NOW() , \"".$m."\")";

$dbc = @mysql_connect ("sql.free.fr", "sons.gratuits", "***");
if(!mysql_errno($dbc))
{
//***Sélection de la base de données***
mysql_select_db("sons_gratuits");
$req1=@mysql_query($req) or die("Impossible d'executer la requete : " . mysql_error());
mysql_close();
}
else
{
echo mysql_errno($dbc)." : ".mysql_error($dbc)."\n";
}
}

}}
?>


<HTML> <FORM METHOD="POST" action="chat1.php"> Message :<INPUT TYPE="text" name="message"> <INPUT TYPE="submit" value="Envoyer le message !"> </FORM> </html>

pour moi je trouve que au niveau des sessions est bon mais comme j'ai dit je débute juste dans les sessions je ne m'en suis jamais servi à présent;
merci !
0