AAAAAAAA mysql_fetch_array ca marche comment?

cs_Tiriel Messages postés 21 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 9 juin 2004 - 22 avril 2004 à 11:55
cs_Tiriel Messages postés 21 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 9 juin 2004 - 23 avril 2004 à 15:54
Lorsque j'execute ce script: (Pas besoin de preciser que je suis débutant vu le script :) )

<?php
include("ID.htaccess\sql.php");

$connect=mysql_connect($host,$user,$pass);

mysql_select_db($base, $connect);

$result=mysql_query("SELECT*FROM Dida");

while($row=mysql_fetch_array($result)) //(ligne 19)
{
echo "Enregistrement #" . $row["id"] . " : ";
echo $row["nom"] ." > ";
echo $row["prénom"] ." > ";
echo $row["email"] ." > ";
echo $row["date"] . "
";
}
?>

J'obtient ce message d'erreur :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\easyphp 1.7\www\index\indexa.php on line 19

J'aurai aimé savoir ce que je dois modifier pour faire fonctionner ce bordel :big) . Merci d'avance

12 réponses

cs_Psy Messages postés 88 Date d'inscription mercredi 15 mai 2002 Statut Membre Dernière intervention 3 mai 2005
22 avril 2004 à 12:14
Salut Tiriel !!

Bon, déjà, je te conseille de lire plusieurs tutoriaux sur PHP car cette erreur est expliquer à pas mal d'endroit mais bon, je vais quand même te répondre ! ;)

Donc, l'erreur que tu as signifie que ta requete SQL contient une erreur, donc :
- Dida est-il bien le nom d'une des tables de ta base ?
- le mieux, c'est que tu fasses :
$query = "Select * from Dida";
print $query; //Ainsi tu pouras voir si t'as requete est OK !
$result = mysql_query($query);

Apres, ta boucle est OK !!

Voilà, en esperant t'avoir éclaircis !

- Psy -
0
phpwankenobi Messages postés 152 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 18 novembre 2004
22 avril 2004 à 12:24
Bonjour,

Un règle d'or lors des accès base de données est de vérifier que cela s'est bien passé avant de poursuivre!

Donc tu peux par exemple définir une fonction qui sera appelée en cas d'erreur :

function mysql_die($error_message '', $the_query '')
    {
        if (empty($error_message)) {
            $error_message = mysql_error();
        }
        if (empty($the_query)) {
            $the_query     = "Requête inconnue...";
        }
echo "
<html><head><title>Erreur Base de données</title></head>
  	<center>
Problème technique

 

 	ERREUR de base de données Mysql

</center>

</html>
";
    }

Puis lors de ta requête :

<code>
$query="SELECT*FROM Dida";
$mysql_result = mysql_query($query);
if (mysql_error()) {
            $error = mysql_error();
            mysql_die($error, $query);
            exit();
        }


Ainsi tu auras les renseignements nécessaires pour résoudre ton problème, car dans ton cas la requête s'est mal passé (problème de syntaxe ou de ressource inexistante...)

Essaie ça, tu verras.
0
Samiby Messages postés 118 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 2 janvier 2006
22 avril 2004 à 12:54
Il y a plus simple que le dernier script de phpwankenobi, tu met:

$query="SELECT*FROM Dida";
$mysql_result = mysql_query($query) or mysql_die(mysql_error(), $query);
exit();
} 

C'est la même chose, mais en plus compacte !
0
phpwankenobi Messages postés 152 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 18 novembre 2004
22 avril 2004 à 13:38
Salut Samiby,

Tu as raison, mais l'intérêt de mon code était son aspect pédagogique à l'attention d'un débutant....
0

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

Posez votre question
cs_Tiriel Messages postés 21 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 9 juin 2004
22 avril 2004 à 15:12
Merci à tous pour votre aide.
Je m'attendais pas a avoir une réponse si rapidement.

MERCI MERCI MERCI aux Dieux de la programmation (là je suis a genoux ;) )
0
cs_Tiriel Messages postés 21 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 9 juin 2004
22 avril 2004 à 17:57
Là je comprend plus rien :sad) .
Maintenant j'ai plus de problème avec "mysql_fetch_array".
Mais j'ai comme qui dirait une couille au niveau de la boucle while ci dessous.

while($row=mysql_fetch_array($result))
{
echo "Enregistrement #" . $row["id"] . " : ";
echo $row["nom"] ." > ";
echo $row["prénom"] ." > ";
echo $row["email"] ." > ";
echo $row["date"] . "
";
}

Sans la boucle j'arrive à afficher le 1er enregistrement (id, nom, prénom, email et date) mais une fois intègré à la boucle ça fonctionne plus tout ce qui m'affiche c'est ça :
:>>> et le retour à la ligne comme c sensé faire mais sans le nom, prénom , etc...

Si quelqu'un à une réponse je suis preneur :big) .
Merci davance
Et surtout à bientôt ;)
0
Samiby Messages postés 118 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 2 janvier 2006
22 avril 2004 à 18:29
Ta table est vide :question)
0
cs_Tiriel Messages postés 21 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 9 juin 2004
23 avril 2004 à 09:19
Non, j'ai 3 enregistrements dans ma table c'est pour ça que je capte pas le délire.
0
phpwankenobi Messages postés 152 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 18 novembre 2004
23 avril 2004 à 10:12
Salut,

Effectivement la table n'est pas vide sinon ça ne passerait pas dans la boucle.

Je ne sais pas ce qui se passe, mais est-tu sur de tes noms de champs, tu peux essayer ceci pour voir :

while($row=mysql_fetch_array($result))
{
echo "Enregistrement #" . $row[0] . " : ";
echo $row[1] ." > ";
echo $row[2] ." > ";
echo $row[3] ." > ";
echo $row[4] . "
";
}


Si la tes valeurs sortent, c'est qu'il y probleme avec le tableau associatif.
0
cs_Tiriel Messages postés 21 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 9 juin 2004
23 avril 2004 à 11:00
Merci phpwankenobi, mais malheuresement c'est le même topo. Ca fonctionne correctement en-dehors de la boucle while mais une fois dedans ça fonctionne plus :question) . Ci-dessous l'intégralité du code

Code enregistré sous ...\www\index\ID.htaccess\sql.php

<html>

<head>
<title></title>
</head>

<?php
$host="localhost";
$user="root";
$pass="";
$base="didactitiel";
?>

</html>


Code enregistré sous ...\www\index\indexa.php

<html>
<head>
<title>Tableau</title>
</head>

<?php
         include("ID.htaccess\sql.php");
         $connect=mysql_connect($host,$user,$pass);
         $mabase=mysql_select_db("didacticiel", $connect);
         $requete="SELECT*FROM Dida";
         echo "
";
         $result=mysql_query($requete);
         $all=mysql_fetch_array($result);
         $a=1;
          
         // Affiche l'enregistrement ayant un ID = 1       

         echo "Enregistrement #" . $all["id"] ."
";
         echo $all["nom"]."
";
         echo $all["prénom"] ."
";
         echo $all["email"] ."
";
         echo $all["date"] ."

";

         
         //Fontionne pas avec la boucle suivante :

         //while ($all=mysql_fetch_array($result) == TRUE)
         //{
         //       echo "Enregistrement #" . $all["id"] . " : ";
         //       echo $all["nom"] ." > ";
         //       echo $all["prénom"] ." > ";
         //       echo $all["email"] ." > ";
         //       echo $all["date"] . "
";
         //}
         //$row=mysql_fetch_row($result);
     
         mysql_free_result($result);
         mysql_close($connect);
?>

</html>
0
Samiby Messages postés 118 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 2 janvier 2006
23 avril 2004 à 11:34
//while ($all=mysql_fetch_array($result) == TRUE)

Tu n'as pas besoin de mettre ' == TRUE', ça sert à rien (c'estpeut-être ça qui fait bugger ?)
0
cs_Tiriel Messages postés 21 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 9 juin 2004
23 avril 2004 à 15:54
Merci Samiby j'arrive maintenant à afficher 2 de mes enregistrement sur 3 je vais essayé de me débrouiller pour la suite, merci encore.
0
Rejoignez-nous