Aller au contenu

Probleme script moteur de recherche


goldrazor06

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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