[PHP] Je ne pige pas ce message d erreur........ [RESOLU]

Je ne pige pas ce message d erreur........ [RESOLU] [PHP] - PHP - Programmation

Marsh Posté le 31-07-2002 à 13:13:48    

Voila j en ai deja parler dans certains topics mais jusque la par miracle g reussi a les degager mais sans vraiment savoir comment...
 
G ce type de message d erreur sur free :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

 
Voici le code provoquant l erreur :  
 

Code :
  1. switch($Action)
  2.         {
  3.         case 'Suppr':
  4.           if($NomTable=="liste" )
  5.               {
  6.               $Test = mysql_query("SELECT Id_Membres FROM Liste WHERE Login='".$Login."'" );
  7.               $Membre = mysql_fetch_array($Test);  Il plante par ici environ :fou:
  8. ?>
  9. <br><br>
  10. <?
  11. echo "DELETE FROM membre WHERE Id_Membres='".$Membre."'";
  12. $Query  = mysql_query("DELETE FROM membre WHERE Id_Membres='".$Membre."'" ) or die("Suppression de  l'enregistrement impossible" );
  13. echo $Query;


 
Mes echo servent pour du debuggage mais j ai meme pas le loisir d en profiter a cause de ce machin.
 
HELP ME PLEASE :hello:  
:jap:


Message édité par mkracing66 le 31-07-2002 à 14:38:00
Reply

Marsh Posté le 31-07-2002 à 13:13:48   

Reply

Marsh Posté le 31-07-2002 à 13:16:24    

C pa plutot ici que ca plante ?

Code :
  1. $Query  = mysql_query("DELETE FROM membre WHERE Id_Membres='".$Membre."'" ) or die("Suppression de  l'enregistrement impossible" );


 
Je mettrais :
 

Code :
  1. $Query  = mysql_query("DELETE FROM membre WHERE Id_Membres='".$Membre[Id_membre]."'" ) or die("Suppression de  l'enregistrement impossible" );

Reply

Marsh Posté le 31-07-2002 à 13:17:11    

a mon avis ya un probleme avec les '"''"'"'"'"'"'" la :
 $Test = mysql_query("SELECT Id_Membres FROM Liste WHERE Login='".$Login."'" );  
 
moa je metterais WHERE Login ='$login'
mais euh faut pas trop compter sur moa chuis un peu nul :)))
mais essaye toujours on c jamais

Reply

Marsh Posté le 31-07-2002 à 13:17:26    

Et sinon c koi ca ?
 

Code :
  1. echo "DELETE FROM membre WHERE Id_Membres='".$Membre."'";


 
Tu veux que ca ecrive DELETE FROM membre WHERE Id_Membres='".$Membre."'"; sur ta page ?  :??:

Reply

Marsh Posté le 31-07-2002 à 13:20:12    

arf non c pas ca mais tu m as fait trouve je pense ggggrrrr a force de changer mes noms de table je me retrouve avec un nom de table et de variable similaire sauf a la case alors je presume que ca doit venir de la....v tester
 
Mais si qqun a une autre idee (on sait jamais) je suis preneur
 
Merci a vous...
 
Heu c etait juste histoire de debugger le echo de la requete pour la tester ensuite sous phpmyadmin comme ca je suis sur que ca ne vient pas de la requete si ca merde

Reply

Marsh Posté le 31-07-2002 à 13:20:31    

Commence par vérifier que çà marche içi :
 
$Test = mysql_query("SELECT Id_Membres FROM Liste WHERE Login='$Login'" ) or die("Pas de connexion !" );  
 
Ensuite, y'a le pb soulevé par The Real Maxou !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 31-07-2002 à 13:22:18    

Perso, je ferais :
 

Code :
  1. $Test = mysql_query("SELECT Id_Membres FROM Liste WHERE Login='$Login'" );
  2. $Membre = mysql_fetch_array($Test);     
  3.       ?>
  4.       <br><br>
  5.       <?
  6.    
  7.      
  8. $Query  = mysql_query("DELETE FROM membre WHERE Id_Membres='$Membre[Id_Membres]'" ) or die("Suppression de  l'enregistrement impossible" );

Reply

Marsh Posté le 31-07-2002 à 13:23:49    

Heu orazur tu pose une kestion interessante...
 
Dans une requete, comme dans tout code qui demande des chaines de caracteres dans le style nom_commande(" parametre " );  
 
Doit on concatener les variable php ou on peut les mettre directement dans la chaine de caracteres ?
Je m explique peut on faire :
   nom_commande ("blabla = $Variable " );
 
ou doit on faire
   nom_commande ("blabla = ".$Variable);
 
Merci ;)
 

Reply

Marsh Posté le 31-07-2002 à 13:25:34    

Ca devrait marcher : nom_commande ("blabla = $Variable " ); :)

Reply

Marsh Posté le 31-07-2002 à 13:26:28    

Avec les chaînes "....", tu peux mettre directement les noms de variables, elle seront remplacées par leurs valeurs, ce qui n'est pas vrai pour les chaînes '....'.
 


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 31-07-2002 à 13:26:28   

Reply

Marsh Posté le 31-07-2002 à 13:26:56    

Ok merci bcp v tester tout ca et je viendrais editer le mess si c bon...
Merci a tous

Reply

Marsh Posté le 31-07-2002 à 13:26:59    

Mara's dad a écrit a écrit :

Avec les chaînes "....", tu peux mettre directement les noms de variables, elle seront remplacées par leurs valeurs, ce qui n'est pas vrai pour les chaînes '....'.
 
 




 
Yes, exact, y a une diff entre les double quotes, et les quotes simples :)

Reply

Marsh Posté le 31-07-2002 à 13:33:48    

Et pour les resultats de requetes ?
 
Il faut faire $Resultat["nom_chmap"] ou on fait $Resultat[nom_champ] ?
 
Laquelle est la bonne et la plus sur ?
 
Thx ;)

Reply

Marsh Posté le 31-07-2002 à 13:56:57    

En fait le problème est le suivant :
 
Je peux écrire :
 
$a["toto_1"] = 27;
echo( "Résultat :$a[toto_1]<br>\n" );
 
Mais, si je fait çà :
$a["toto 1"] = 27;
Qui est tout à fait légal, je suis obligé de faire :
echo( "Résultat :" . $a["toto 1"] . "<br>\n" );
 
Enfin, il me semble.
 
Encore plus avec :
 
$a["toto] xyz [1"] = 27;
echo( "Résultat :" . $a["toto] xyz [1"] . "<br>\n" );


Message édité par Mara's dad le 31-07-2002 à 13:59:21

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 31-07-2002 à 14:01:37    

J'ai testé pour vous :

Code :
  1. <?php
  2. $a["toto_1"] = 27;
  3. echo( "Résultat :$a[toto_1]<br>\n" );
  4. $a["toto 1"] = 27;
  5. echo( "Résultat :" . $a["toto 1"] . "<br>\n" );
  6. /*
  7. echo( "Résultat :$a[toto 1]<br>\n" ); est interdit : çà donne :
  8. Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting ']'
  9. */
  10. $a["toto] xyz [1"] = 27;
  11. echo( "Résultat :" . $a["toto] xyz [1"] . "<br>\n" );
  12. echo( "Résultat :$a[toto] xyz [1]<br>\n" ); // qui donne : "Résultat : xyz [1]" !
  13. ?>


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 31-07-2002 à 14:07:39    

Merci bcp pour ces precisions  
 
:jap: :jap:  
 
:D

Reply

Marsh Posté le 31-07-2002 à 14:16:08    

Pour résumer :  
 
quand tu crées une requête SQL, ça marche comme suit :
 

Code :
  1. $requete = "select  champ1,
  2.                     champ2
  3.             from
  4.                     matable
  5.             where
  6.                     champ3 = '$variable1'
  7.             and
  8.                     champ4 = $variable2";


 
où champ3 est de type char et champ4 numérique.
 
De manière générale, ce message arrive quand ta requête est mal formulée, ou quand tu fais une erreur dans le $row["champx"].
 
Et donc : quand tu exécutes la requête, utilise la fonction die :
 

Code :
  1. $reponse = mysql_query($requete) or die("$requete" );


 
plutôt que

Code :
  1. $reponse = mysql_query($requete) or die(mysql_error());


 
Ca te permettra de voir si ta requête est bien formulée, et si tu veux voir l'erreur, tu peux toujours la copier/coller dans phpMyAdmin ;)
 
:hello:

Reply

Marsh Posté le 31-07-2002 à 14:37:44    

Merci pour ces ecplicatifs...
 
pour la requete c presque ce que je faisais c pour ca qu il y avait des echo de partout c etait pour verifier sous phpmyadmin :D
 
C pas evident ces conneries de " , ' et autres...

Reply

Marsh Posté le 01-08-2002 à 10:36:56    

C'est une petite gymnastique à laquelle tu t'habitueras! ;)

Reply

Sujets relatifs:

Leave a Replay

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