Que veut dire ce message d'erreur ?

Que veut dire ce message d'erreur ? - PHP - Programmation

Marsh Posté le 02-03-2004 à 01:21:57    

J'obtient ce message lorsque je tape un mot dans un formulaire
qui est connecté a une base SQL.Ensuite j'appui sur "ok" et je devrai faire apparaitre mon résulat, et c'est ceci qui s'affiche:
 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp\www\traitement.php on line 6
 
voila mon prog
 
<?php include("connexion.php" ); ?>
<?php
$query = "SELECT * FROM apmusic WHERE Nom = '$cadre'";  
$result = mysql_query($query);
?>
<?php while($val = mysql_fetch_array($result)){ ?>  -->> (Ligne 6)
<?php echo "Résultats pour le nom $cadre"; ?><br><br>
<?php echo " "; ?>
<?php echo $val["nom"]; ?>
<?php echo " "; ?>
<?php echo $val["année"]; ?>
<?php echo " "; ?>
<?php echo $val["nationalite"]; ?><br>
                                                                   
<?php } ?>
<?php mysql_close(); ?>

Reply

Marsh Posté le 02-03-2004 à 01:21:57   

Reply

Marsh Posté le 02-03-2004 à 01:40:27    

Il dit que tu as une erreur dans l'éxecution de la requête. Fait

Code :
  1. $result = mysql_query($query) or die(mysql_error()."<br />$query" );


 
pour avoir une idée plus précise de l'erreur

Reply

Marsh Posté le 02-03-2004 à 03:11:39    

Ca veut dire que la requête ne t'as retourné aucun résultat.
Teste le retour à l'aide d'un if ($result = mysql_query($query))
 
Au fait, a quoi ca sert de commener chaque ligne par "<?php" et de les finir par "?>" ?
 
Si tu fait ça, le jour où tu voudra utiliser les entêtes ou les sessions, tu auras des messages d'erreur. ;)

Reply

Marsh Posté le 02-03-2004 à 03:58:37    

omega2 a écrit :

Ca veut dire que la requête ne t'as retourné aucun résultat.
Teste le retour à l'aide d'un if ($result = mysql_query($query))
 
Au fait, a quoi ca sert de commener chaque ligne par "<?php" et de les finir par "?>" ?
 


 
1. Surement pas, mysql_query retourne toujours un résultat, le recordset ou false s'il y a une erreur. De plus, si le recordset est vide, mysql_fetch_array retournera false, pas une erreur.
 
2. Parce qu'il y a de l'html entre les lignes et qu'il a estimé a raison qu'il pouvait nous en faire grâce ? :D

Reply

Marsh Posté le 02-03-2004 à 08:36:14    

naceroth a écrit :


2. Parce qu'il y a de l'html entre les lignes et qu'il a estimé a raison qu'il pouvait nous en faire grâce ? :D


 
Toi t'es optimiste :whistle:

Reply

Marsh Posté le 02-03-2004 à 13:55:29    

naceroth a écrit :


 
1. Surement pas, mysql_query retourne toujours un résultat, le recordset ou false s'il y a une erreur. De plus, si le recordset est vide, mysql_fetch_array retournera false, pas une erreur.
 

Et oui, mais "mysql_fetch_array(false)" sort le message d'erreur qu'il a obtenu. ;)
S'il avait fait un "if ($result = mysql_query($query))", son code n'aurait pas tenté de faire mysql_fetch_array sur une variable dont la valeur est "false" et donc ne lui aurait pas retourné de message d'erreur.

Reply

Marsh Posté le 02-03-2004 à 17:13:14    

Oui, mysql_fetch_array(false) sort le message d'erreur, j'ai jamais dit le contraire.  
 
Mais tu disais que mysql_query n'avait pas retourné de résultat, ce qui est faux, elle a retourné une erreur, pas un recordset vide :)

Reply

Marsh Posté le 04-03-2004 à 17:43:36    

Je ferai plutot ça ...
 
while($val = mysql_fetch_row($result))
{
}

Reply

Marsh Posté le 04-03-2004 à 18:28:18    

ingeni_killer a écrit :

Je ferai plutot ça ...
 
while($val = mysql_fetch_row($result))
{
}


c'est kif-kif comparé à son code  :heink:

Reply

Marsh Posté le 07-03-2004 à 10:56:52    

Hello,
moi je pense que ça provient en effet d'une erreur mais du à la nature de ta requete car tu te sert de la variable $cadre ds ta requete mais déjà elle n'est pas définie plus haut. Donc c clair que t'aura pa de retour. Cela dit tu aurai pas forcément d'erreur pour ça mais juste un résultat vide....
 
De plus je vois pas de trace de ta connexion.... tu déclare la page connexion.php mais ou est ta fonction pr te connecter à ta base ? sinon c CLAIR que ça vient de là....
 
En espérant que ça t'aura aidé....

Reply

Marsh Posté le 07-03-2004 à 10:56:52   

Reply

Marsh Posté le 09-03-2004 à 00:41:02    

voici mon fichier "conexion"
 
<?php
$host="localhost";
$user="root";
$pass="";
$bdd="apmusic";
 
@mysql_connect($host,$user,$pass) or die("Impossible de se connecter" );
@mysql_select_db("$bdd" ) or die("Impossible de se connecter" );
?>
 
de plus je pense avoir un problème comme tu le dis sur le "$cadre",car dans mon Formulaire html dont le code est le suivant :
 
<html>
<head>
<title>Document sans nom</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<body class="image">
<form name="form3" method="post" action="traitement.php">
 <input type="text" name="[g]cadre
">
  <input type="submit" name="Submit" value="ok">
</form>
</body>
</html>
 
 
Lorsque je tape un mot qui dans ma base de donnée nomé: "apmusic",le résulat ne s'affiche pas, j'ai ce message :
 
Notice: Undefined variable: cadre in c:\program files\easyphp1-7\www\traitement.php on line 3
 
donc j'ai un problème avec la ligne 3 du fichier traitement et le problème vient de la variable "cadre" et je ne comprend pas ce problème car je l'ai bien d"fini pourtant ( je pense ).
 
de plus, quand je suppriùe le "$" devant "cadre", j'ai une page blanche ... et plus de message d'erreur
 
Je perd la tête :crazy:

Reply

Marsh Posté le 09-03-2004 à 01:34:56    

remplace ton $cadre par $_POST['cadre'] :)
 
ou fait un $cadre = $_POST['cadre']; avant d'effectuer ta requête, comme tu veux  :ange:


Message édité par naceroth le 09-03-2004 à 01:35:53
Reply

Marsh Posté le 09-03-2004 à 01:45:10    

dans le formulaire html ? ou dans le programme PHP
ou dans les 2 ?

Reply

Marsh Posté le 09-03-2004 à 01:48:49    

j'ai rajouter :
$cadre = $_POST['cadre'];  
dans les variables
 
et j'obtient tjs ma meme erreur.

Reply

Marsh Posté le 09-03-2004 à 02:30:31    

marcooo a écrit :

dans le formulaire html ? ou dans le programme PHP
ou dans les 2 ?


 
C'est du php, la bonne réponse est bien sûr dans le programme php, au début, avant la requête :

Code :
  1. if (isset($_POST['cadre'])){
  2.   $cadre = $_POST['cadre'];
  3. } else
  4. {
  5.   $cadre = '';
  6. }
  7. $query = "SELECT * FROM apmusic WHERE Nom = '$cadre'";
  8. $result = mysql_query($query) or die ($query);


 
ey si ça marche toujours pas, donne nous la requête que le code ci-dessus t'affiche :)


Message édité par naceroth le 09-03-2004 à 02:32:32
Reply

Marsh Posté le 09-03-2004 à 16:34:27    

OK pr ton fichier connexion alors,
cela dit il te manque une variable pour obtenir une connexion persistante a ta base et ainsi la placer en argument dans la requete...
du style
$connexion = connexion($user,$password,$serveur,$db);
$requete = "SELECT * FROM db";
$resultat = mysql_query($requete,$connexion);
 
si tu met pas la connexion en argument c normal que ça marche pas..
après c peu etre que tu la mi mais que nous la pas mi sur le fichier...ça se peu aussi.
 
enfin vérifie...
 
ciao

Reply

Marsh Posté le 09-03-2004 à 17:03:10    

BOssGTS a écrit :


cela dit il te manque une variable pour obtenir une connexion persistante a ta base et ainsi la placer en argument dans la requete...


 
euh, non, le deuxième arguments d'un mysql_query est facultatif. S'il est absent, c'est la dernière connexion ouverte qui est utilisée ou à défaut une connexion est créée avec les arguments par défaut...
 
(Ah et j'oubliais, connexion n'est pas non plus une fonction, donc pas de retour  :ange: )


Message édité par naceroth le 09-03-2004 à 17:05:27
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed