Aller au contenu

Probleme script moteur de recherche


Sujets conseillés

Posté

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

Posté

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.

Posté

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

Posté (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é par goldrazor06
Posté

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...