erreur d'exécution script

erreur d'exécution script - PHP - Programmation

Marsh Posté le 25-11-2011 à 11:59:41    

bonjour !
 
Je viens chercher de l'aide sur votre forum car j'ai un problème avec l'exécution d'un script que voici :
 
http://pastebin.com/qvc9VUKb
 
Mon code me renvoie une erreur a la deuxième instruction de Mysql à cette ligne exactement
 

Code :
  1. $strSQL = ('SELECT `titre` FROM `films` WHERE `id_distributeur` ='.$var.' ORDER BY `id_genre`, `annee_production`, `titre`');


 
Le message d'erreur est le suivant :
 
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given  
 
je pense que c'est mon $var qui me renvoie une erreur, je passe en faite un paramètre dans l'url que je récupère via la méthode GET, j'ai ensuite attribué mon $var=$_GET["data"].
Mais la requête de MySql n'a pas l'air d'apprécié cela, comment faire ?
 
Cordialement,

Reply

Marsh Posté le 25-11-2011 à 11:59:41   

Reply

Marsh Posté le 25-11-2011 à 15:02:06    

$strSQL devrait être une chaîne de caractères, comme son préfixe "str" le suggère.
 
Sauf erreur, une chaîne de caractères en PHP, s'écrit :
 
  $toto = "abc..."; ou $toto = 'abc...';
 
mais ne s'écrit pas :
 
  $toto= ('abc...');
 
Edit : Ah non, d'après les messages suivants on pourrait avoir les parenthèses.


Message édité par olivthill le 25-11-2011 à 15:43:49
Reply

Marsh Posté le 25-11-2011 à 15:09:39    

Cela ne change rien selon moi.
 
J'ai fait l'essai et PHP comprend que c'est une chaîne de caractère.
 
Cependant, je crois plutôt que ta requête échoue et renvoie FALSE!
 
Ensuite tu essayes de lire, dans "FALSE", un tableau... D'ou l'erreur "boolean given" .
 
Tu dois regarder ce que te renvoie ta requête avant de lire dedans.
 

Code :
  1. if ($requete)
  2. {
  3.      /*Ca marche*/
  4. }
  5. else
  6. {
  7.      /*Aucun résultat*/
  8. }

Reply

Marsh Posté le 25-11-2011 à 15:36:55    

merci de vos réponses non les parenthèses ne change rien. Mais je ne comprend toujours pas pourquoi cela renverrait false. J'ai essayé ma requête SQL en plus, et elle fonctionne parfaitement.
Je ne comprend donc pas comment faire ?
 
Cordialement

Reply

Marsh Posté le 25-11-2011 à 15:42:54    

Le message d'erreur parle de mysql_fetch_array(), mais la ligne montrée ne contient pas mysql_fetch_array().
Je soupçonne un problème d'apostrophes.

Reply

Marsh Posté le 25-11-2011 à 15:45:00    

Essaye de mettre des backquotes ( ` ) autour de $var.
 

Code :
  1. $strSQL = ('SELECT `titre` FROM `films` WHERE `id_distributeur` = `'.$var.'` ORDER BY `id_genre`, `annee_production`, `titre`');

Reply

Marsh Posté le 25-11-2011 à 15:47:15    

oups pardon je viens de voir que je me suis enfaite tromper de ligne c'est cette ligne qui ne va pas :  
 

Code :
  1. while($row = mysql_fetch_array($rs)) {

Reply

Marsh Posté le 25-11-2011 à 15:59:48    

Ah, je vois le code source grâce au lien.
 
La ligne 19 me parait très suspecte : mysql_close();
 
Ca ferme la connexion, alors qu'il y a encore des requêtes à faire derrière.

Reply

Marsh Posté le 25-11-2011 à 16:31:14    

effectivement javais une erreur à ce niveau j'ai remplacé par ceci :
 

Code :
  1. mysql_free_result($rs)


 
mais rien ne change et j'ai même une erreur en plus maintenant que voici :
 

Code :
  1. Warning: mysql_free_result() expects parameter 1 to be resource, boolean given


 
je comprend vraiment pas

Reply

Marsh Posté le 26-11-2011 à 01:01:53    

Il suffisait tout simplement enfaite de mettre des quotes simple autour de '$var' et la cela fonctionne.
 
Je voudrais par contre que cette deuxième requête s'exécute que quand on lui demande c'est à dire quand on clic sur le lien, j'ai essayé avec des if(isset) mais rien n'y fait cela ne fonctionne pas je suis en train de m'arracher les cheveux!
Pourriez vous m'aidez ?
 
Cordialement,

Reply

Marsh Posté le 26-11-2011 à 01:01:53   

Reply

Marsh Posté le 27-11-2011 à 13:07:52    

Alors, je ne suis pas sur d'avoir véritablement tout compris. mais je pense que tu peux partir sur ça:
 

Code :
  1. <?php
  2. mysql_connect("localhost", "root", "" ) or die (mysql_error ());
  3. mysql_select_db("cinema" ) or die(mysql_error());
  4. if (!$_GET['data'])
  5. {
  6.     $strSQL = ('SELECT `nom`, `id_distributeur` FROM `distributeurs`');
  7.     $rs = mysql_query($strSQL);
  8.     while($row = mysql_fetch_array($rs))
  9.     {
  10.        $strName = $row['nom'];
  11.        $strLink = "<a href = 'list.php?data= ".$row['id_distributeur']."'>" . $strName . "</a>";
  12.        echo "<li>" . $strLink . "</li>";
  13.     }
  14.     mysql_free_result($rs)
  15. }
  16. else if ($_GET['data'])
  17. {   
  18.     $var=$_GET["data"];
  19.     $strSQL = ('SELECT `titre` FROM `films` WHERE `id_distributeur` ='.$var.' ORDER BY `id_genre`, `annee_production`, `titre`');
  20.     $rs = mysql_query($strSQL);
  21.      
  22.      
  23.     while($row = mysql_fetch_array($rs))
  24.     {
  25.         echo "<td>titre:</td><td>" . $row["titre"] . " </td>";
  26.     }
  27.     mysql_free_result($rs)
  28. }
  29. mysql_close();
  30. ?>

Reply

Sujets relatifs:

Leave a Replay

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