Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2337 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  erreur d'exécution script

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

erreur d'exécution script

n°2113238
bostak
Posté le 25-11-2011 à 11:59:41  profilanswer
 

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,

mood
Publicité
Posté le 25-11-2011 à 11:59:41  profilanswer
 

n°2113268
olivthill
Posté le 25-11-2011 à 15:02:06  profilanswer
 

$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
n°2113269
mohoi
Posté le 25-11-2011 à 15:09:39  profilanswer
 

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. }

n°2113272
bostak
Posté le 25-11-2011 à 15:36:55  profilanswer
 

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

n°2113273
olivthill
Posté le 25-11-2011 à 15:42:54  profilanswer
 

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.

n°2113274
mohoi
Posté le 25-11-2011 à 15:45:00  profilanswer
 

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`');

n°2113275
bostak
Posté le 25-11-2011 à 15:47:15  profilanswer
 

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)) {

n°2113279
olivthill
Posté le 25-11-2011 à 15:59:48  profilanswer
 

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.

n°2113285
bostak
Posté le 25-11-2011 à 16:31:14  profilanswer
 

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

n°2113330
bostak
Posté le 26-11-2011 à 01:01:53  profilanswer
 

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,

mood
Publicité
Posté le 26-11-2011 à 01:01:53  profilanswer
 

n°2113435
mohoi
Posté le 27-11-2011 à 13:07:52  profilanswer
 

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. ?>


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  erreur d'exécution script

 

Sujets relatifs
Log : récupérer le numéro de la ligne d’exécution.script de désinstallation d'imprimante réseau
Aide pour script d'actualitéMise à jour automatique de code / script
Adapter un script jQuery (popin)... pour l'exécuter depuis un flash[PL/SQL] Erreur création procédure
Spybot : silent install & silent scan : script boqué par une fênetreErreur 500 quand mise en cache .htaccess
Fatal error: Maximum execution time of 60 seconds exceeded in 
Plus de sujets relatifs à : erreur d'exécution script


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR