AAAAAAAA mysql_fetch_array ca marche comment?

Signaler
Messages postés
21
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
9 juin 2004
-
Messages postés
21
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
9 juin 2004
-
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
A voir également:

12 réponses

Messages postés
88
Date d'inscription
mercredi 15 mai 2002
Statut
Membre
Dernière intervention
3 mai 2005

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 -
Messages postés
152
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
18 novembre 2004

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.
Messages postés
118
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
2 janvier 2006

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 !
Messages postés
152
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
18 novembre 2004

Salut Samiby,

Tu as raison, mais l'intérêt de mon code était son aspect pédagogique à l'attention d'un débutant....
Messages postés
21
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
9 juin 2004

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 ;) )
Messages postés
21
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
9 juin 2004

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 ;)
Messages postés
118
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
2 janvier 2006

Ta table est vide :question)
Messages postés
21
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
9 juin 2004

Non, j'ai 3 enregistrements dans ma table c'est pour ça que je capte pas le délire.
Messages postés
152
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
18 novembre 2004

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.
Messages postés
21
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
9 juin 2004

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>
Messages postés
118
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
2 janvier 2006

//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 ?)
Messages postés
21
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
9 juin 2004

Merci Samiby j'arrive maintenant à afficher 2 de mes enregistrement sur 3 je vais essayé de me débrouiller pour la suite, merci encore.