goldrazor06 Posté 30 Octobre 2007 Posté 30 Octobre 2007 Bonjour, J'ai codé un script qui permet de lister des resultats en fonction du mot clef entré dans la case "motclef". Mais je ne comprend pas pkoi la page me crache les erreurs suivantes : "Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\wamp\www\destockage\search.php on line 268 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\destockage\search.php on line 273" Voici une partie de mon code : <?php$parpage=15;$stats=mysql_fetch_object(mysql_query("SELECT COUNT(*) AS `stats` FROM `annonces` WHERE INSTR (titre, '".$_REQUEST['motclef']."') OR INSTR (description, '".$_REQUEST['motclef']."')")); $total=$stats->stats;$_GET['debut']=$_GET['debut']*1;$res=mysql_query("SELECT * FROM `annonces` WHERE INSTR (titre,'".$_REQUEST['motclef']."') OR INSTR (description,'".$_REQUEST['motclef']."') ORDER BY `date` DESC LIMIT ".$_GET['debut'].",$parpage");$ocp=0;while($annonces=mysql_fetch_array($res)){$ocp+=1;?> Si un pro peut y jeter un oeil, ca m'arrangerai. Merci beaucoup
captain_torche Posté 30 Octobre 2007 Posté 30 Octobre 2007 Le mieux, pour tester, est de mettre tes requêtes dans une variable. Tu affiches cette requête dans ta page, et tu peux éventuellement voir où se trouve l'erreur. Si elle n'est pas évidente, tu la copies/colles dans PHPMyAdmin.
marcb Posté 30 Octobre 2007 Posté 30 Octobre 2007 Bonjour, Est-tu certain que la valeur de $_REQUEST['motclef'] est correctement renseignée ? Tu devrais l'afficher aussi. Pour un test, remplace $_REQUEST['motclef'] par une constante. Ca te permettra de valider la syntaxe SQL de la requête. Enfin, comme conseille captain' : $sql = "SELECT COUNT(*) AS `stats` FROM `annonces` WHERE INSTR (titre, '".$_REQUEST['motclef']."') OR INSTR (description, '".$_REQUEST['motclef']."');echo "<br><br>SQL : $sql <br><br>";$stats = mysql_fetch_object(mysql_query($sql)); M
goldrazor06 Posté 30 Octobre 2007 Auteur Posté 30 Octobre 2007 (modifié) Merci pour vos interventions, le mot clef est bien recuperé par REQUEST. J'ai mieu organisé mon code : <?php $motclef=$_REQUEST['motclef']; $parpage=15; $sql = "SELECT COUNT(*) AS `stats` FROM `annonces` WHERE INSTR (titre, $motclef) OR INSTR (description, $motclef)"; $sql2 = mysql_query($sql); $sql3 = mysql_fetch_object($sql2); echo "<br><br>SQL1 : $sql <br><br>"; echo "<br><br>SQL2 : $sql2 <br><br>"; echo "<br><br>SQL3 : $sql3 <br><br>"; $total=$stats->stats; $_GET['debut']=$_GET['debut']*1; $req="SELECT * FROM `annonces` WHERE INSTR (titre, '$motclef') OR INSTR (description, '$motclef') ORDER BY `date` DESC LIMIT ".$_GET['debut'].",$parpage"; $req2 = mysql_query($req); echo "<br><br>REQ1 : $req <br><br>"; echo "<br><br>REQ2 : $req2 <br><br>"; $ocp=0; while($annonces=mysql_fetch_array($req2)){ $ocp+=1; ?> Voici ce que renvoi le code sur une recherche 'PS3' : Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\wamp\www\destockage\search.php on line 274 SQL1 : SELECT COUNT(*) AS `stats` FROM `annonces` WHERE INSTR (titre, PS3) OR INSTR (description, PS3) SQL2 : SQL3 : REQ1 : SELECT * FROM `annonces` WHERE INSTR (titre, 'PS3') OR INSTR (description, 'PS3') ORDER BY `date` DESC LIMIT 0,15 REQ2 : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\destockage\search.php on line 292 Si vous avez une idée, n'hasitez pas. Merci beaucoup Modifié 30 Octobre 2007 par goldrazor06
marcb Posté 30 Octobre 2007 Posté 30 Octobre 2007 Bonjour, Tu pourrais remplacer $sql2 = mysql_query($sql); par $result = mysql_query($sql);if (!$result) { die('Requête invalide : ' . mysql_error());} et $sql3 = mysql_fetch_object($sql2); par $row = mysql_fetch_object($result);echo $row->stat; As-tu effectué : SELECT COUNT(*) AS `stats` FROM `annonces` WHERE INSTR (titre, PS3) OR INSTR (description, PS3);SELECT * FROM `annonces` WHERE INSTR (titre, 'PS3') OR INSTR (description, 'PS3') ORDER BY `date` DESC LIMIT 0,15; directement dans phpmyadmin ? M
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant