Page 1 sur 1

[PHP-MySQL] Pb à réaliser outil de recherche

Posté : 17 mars 2007, 17:23
par jakkihm
Bonjour,

J'essaie de réaliser un petit outil de recherche qui permettrait de trouver certaines informations sur mon site en fonction de mots clés.

Je reçois toutefois les messages suivants sans pouvoir saisir mon erreur:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ...
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ...
Voici une partie de mon code PHP:
<?php
// Variables initialization
$recherche = "";
$submitCheck = "1";
$envoyer = "";
$msg = "";

// Form processing
if ($submitCheck == "1") {
	if(isset ($_POST['envoyer'])) {
	$recherche = $_POST['recherche'];
	$submitCheck = $_POST['submitCheck'];
	$envoyer = $_POST['envoyer'];
	if(empty($_POST['recherche'])) {
		$msg.= "Veuillez entrer un critère de recherche.<br>";
	} // end if empty
	} // end if $_POST['envoyer']
} // end if submitCheck

// Database connection
include("connexionBdd.php");

// Input data filtering
$recherche = strtoupper($recherche);
$recherche = strip_tags($recherche);
$recherche = trim ($recherche);

// Searching for term
$data = mysql_query("SELECT * FROM objects LIKE '%$recherche%'");

// Counting the results - and if there isn't any provides a message
$resultsCount = mysql_num_rows($data);
if ($resultsCount == 0) {
$msg.= "Désolé, aucun résultat ne correspond à votre critère de recherche.<br>";
} // end if resultsCount

Then I display my results...
?>
Voici le code de mon formulaire:
<form name="rechForm" method="POST" action="rechercheForm.php">
Recherche: <input type="text" name="recherche" size="15">
<input type="hidden" name="submitCheck" value="1">
<input type="submit" name="envoyer" value="Go">
</form>
<?php echo $msg; ?>
Merci beaucoup !

Posté : 17 mars 2007, 17:46
par @rthur
Bonjour,

Remplace:
// Searching for term
$data = mysql_query("SELECT * FROM objects LIKE '%$recherche%'"); 
par
// Searching for term
$data = mysql_query("SELECT * FROM objects LIKE '%$recherche%'") or die("Erreur MySQL : ".mysql_error()); 
ça devrait te permettre de détecter une erreur MySQL si l'exécution de la requête échoue...

Posté : 17 mars 2007, 17:49
par jakkihm
En effet, voici le message qui apparaît désormais:
Erreur MySQL : Erreur de syntaxe près de 'LIKE '%%'' à la ligne 1

Posté : 17 mars 2007, 19:32
par @rthur
Ta variable $recherche est vide d'après le message d'erreur retourné par MySQL...

Posté : 17 mars 2007, 20:31
par Cyrano
Tout juste, et j'ajouterais deux choses :
-1- Séparer le PHP du reste;
-2- Créer une variable contenant la requête qui permettrait de l'afficher pour débuggage avant exécution;
Ce qui donne :
// Requête SQL
$sql = "SELECT * FROM objects LIKE '%". $recherche ."%'";
// Affichage de débuggage :
echo($sql)
// fin affichage débuggage
// Searching for term
$data = mysql_query($sql) or die("Erreur MySQL : ".mysql_error());

Posté : 17 mars 2007, 21:58
par Invité
La solution à mon problème m'a été fournie :
la clause WHERE champs_à_rechercher manquait.
A présent, ça fonctionne.

Merci à tous !