Page 1 sur 1

requette de recherche

Posté : 23 juin 2006, 03:29
par artotal
Bonjour,
j'essaie de faire une requette de recherche à partir d'une liste déroulante :
Il ne fonctionne pas et je ne comprend pas pourquoi, sa me semble bien écrit ?
A l'envoi j'ai ce genre d'erreur :

Code : Tout sélectionner

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\apachefriends\xampp\htdocs\projet\essai_resultat.php on line 43 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\apachefriends\xampp\htdocs\projet\essai_resultat.php on line 44 Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\apachefriends\xampp\htdocs\projet\essai_resultat.php on line 57
Le lien
http://creatif-web.be/projet/essai_deroulant.php
Le formulaire
<?php 
print <<<EAO
<p>Moteur de recherche :</p>
<form action="essai_resultat.php" method="post">
Choisissez le type de recherche.<br />
  <select name="searchtype"> 
	<option value="leprojet">Projet</option>
	<option value="pseudo">Pseudo</option>
	<option value="facultatif">Information personnel</option>
  </select><br />
  Rentrée un terme :<br />
  <input type='text' name='searchterm'><br />
  <input type='submit' value='Search'>
</form>
EAO;
?>
La page de réception.
<?php 
$searchtype=$_POST['searchtype'];
$searchterm=$_POST['searchterm'];

$searchterm=trim($searchterm);

if (!$searchterm || !$searchtype) {
	print "Vous n'avez pas détailler votre recherche. Veuillez s'il vous plais réessayer encore une fois"; 
	exit();
}
if (!get_magic_quotes_gpc()) {
	$searchtype=addslashes($searchtype);
	$searchterm=addslashes($searchterm);
}
###################################CONNEXION##############
require ("inc/connexion.inc.php");
$lien=mysql_connect(SERVEUR, NOM, PASSE);

// test de connexion au serveur
if (!$lien) {
	echo "Désolé, connexion à " .SERVEUR ." impossible\n"; }
	//echo "merci<br />";
// test de connexion à la base
if (!mysql_select_db(BASE, $lien)) {
	echo "Acces to base denied " .BASE ." impossible\n";
	}	else { //echo "selection de la base ok<br />"; 
	}

if (!mysql_select_db(BASE, $lien)) {
	$erreurbdd=mysql_error();
	return false;
}	
################################### FIN DE CONNEXION #########
$requete="SELECT * FROM eprojet where ".$searchtype." like'%".searchterm."%' ";
$resultat=mysql_query($lien, $requette);
$num_resultat=mysql_num_rows($resultat);
// la fonction mysqli_num_rows() stock le nombre de ligne
for ($i=0; $i<$num_resultat; $i++) {
	// traitement
	$row=mysql_fetch_assoc($resultat);
	echo ($i+1)."/";
	print "<br />Projet : ";
	print stripslashes($row['leprojet'])."<br />";
	print "facultatif (champs facultatif)): ";
	print stripslashes($row['facultatif'])."<br />";
	print "pseudo: ";
	print stripslashes($row['pseudo'])."<br />";
}
mysql_free_result($resultat);
mysql_close($lien);
?>
Merci

Posté : 23 juin 2006, 09:05
par guilt92
Petite idée : utiliser le meme nom de variable, a savoir requete et pas requette :) :)

$resultat=mysql_query($lien, $requette);
devrait etre a mon avis :
$resultat=mysql_query($lien, $requete);
Conseil : utilise apres chaque mysql_query() un or die(mysql_error()); Cela pourra te permettre de detecter ce genre d erreurs.

Posté : 23 juin 2006, 17:29
par artotal
En plein dans le mille, je l'ai écris en fr et je trouvais sa normal, lol.
J'utilise die() d'habitude, mais en essayant une écriture objet je me suis embrouillé, merci pour tout ;-))