Erreur warning mysql_fetch_array

fabrice11901 Messages postés 787 Date d'inscription   Statut Membre Dernière intervention   -  
fabrice11901 Messages postés 787 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   108
 
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   Statut Membre Dernière intervention   64
 
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   Statut Membre Dernière intervention   108
 
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   Statut Membre Dernière intervention   507
 
Sorry, j'ai posté sans avoir vérifié si tu avais répondu...
0
wiwimagique Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   108
 
On a répondu presque en même temps :p

0
crabs Messages postés 908 Date d'inscription   Statut Membre Dernière intervention   507
 
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   Statut Membre Dernière intervention   64
 
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   Statut Membre Dernière intervention   507
 
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   Statut Membre Dernière intervention   64
 
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