bug moteur rechercher

Eléphant du PHP | 81 Messages

05 févr. 2011, 13:06

Bonjour

Suite à différent tutoriels je viens faire une fonction rechercher dans une table bien précise.
Mais je ne dépasse pas le stade de "veuillez entrer un mot clé".

merci d'éclairer ma lanterne.
fichier connect.php
<?php
    // Connexion au serveur 

$hote='localhost';          // le chemin vers le serveur

$nom_bd='base_fred';          // le nom de la base de données
$utilisateur='root';      // nom d'utilisateur pour se connecter
$pwd='';        // mot de passe de l'utilisateur pour se connecter



$c=mysql_connect("$hote","$utilisateur","$pwd");
$b=mysql_select_db("$nom_bd", $c) or die (mysql_error()) ;

?>
fichier rechercher_client.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
<title>Recherche Avancée</title>

</head>
<?php
    include_once'lien_css.php';
?>
<body>
    <div id="global">
<?php
		include_once 'header.php';
?>
<?php
			require_once'mysql_connect.php';
?>
 
<div id="principal">
	 <div id="label_haut">
				   <div id="label_client">
				[b]  <label>Recherche Trouvée Client</label>[/b] // je ne passe pas plus loin
				  </div>
	 </div>
<div id="commentaire_saisis_client">

<?php

// on choisit la bonne table
$bdt= mysql_query("SELECT * FROM client order by xguest_nom asc");
mysql_select_db($bdt) or die ("Connexion a la Table Client  impossible");

// on choisit la bonne base
//mysql_select_db($nom_bd) or die ("Connexion a la base  impossible");

echo "
<html>

<head>

<title>Résultat de la recherche</title>

</head>

<body>";

if (($Mot == "")||($Mot == "%")) {
		// Si aucun mot clé n'a été saisi,
		// le script demande à l'utilisateur
		// de bien vouloir préciser un mot clé

			echo "
			Veuillez entrer un mot clé s'il vous plaît!
			<p>";

}

else {
// On selectionne les enregistrements contenant le mot clé
// dans les keywords ou le titre
	$query = "SELECT distinct count(lien) FROM search
	WHERE keyword LIKE \"%$Mot%\"
	OR titre LIKE \"%$Mot%\"
	";

	$result = mysql_query($query);

	$row = mysql_fetch_row($result);

	$Nombre = $row[0];

// Si aucun enregistrement n'est retourné,
// on affiche un message adéquat
if ($Nombre == "0") {
	echo "
	<h2>Aucun résultat ne correspond à votre recherche</h2>

	<p>

	";

}

// Sinon, on affiche le nombre d'enregistrements correspondant
// et les résultats eux-mêmes
else {
	$query = "SELECT distinct lien,keyword,titre FROM search
	WHERE keyword LIKE \"%$Mot%\"
	OR titre LIKE \"%$Mot%\" ORDER by titre ASC";

	$result = mysql_query($query);

	// Si un seul enregistrement est trouvé, on affiche un message au singulier
	if ($Nombre == "1") {
	echo "
	<a name=\"#resultat\"><h2>Résultat: Un article trouvé</h2></a>

	<p>";

	}
	// Dans le cas contraire le message est au pluriel...
	else {
	echo "
	<a name=\"#resultat\"><h2>Résultat: $Nombre articles trouvés</h2></a>

	<p>";

	}
	while($row = mysql_fetch_row($result))
	{
		echo "
		<p>\n
		<b>$row[2]</b>\n
		<br><a href=\"../$row[0]\">Visualiser l'article</a>\n
		<p>\n
		";

	}
}

}

// on ferme la base
mysql_close();

?>
</div>

</div><!-- fin div principal -->
</div> <!-- fin div global-->
</body>
</html>


Mammouth du PHP | 672 Messages

07 févr. 2011, 11:36

- Quand tu mets ton commentaire je ne passe pas plus loin, ça veut vraiment dire que tu n'as plus rien ensuite ?
Même pas les </div> juste après ?

- Le fichier HTML que tu crées est foireux : tu as deux fois ton en-tête (balises <html> et <head>

- Mets des echo régulièrement et rajoutes des or die explicites quand tu appelles une fonction mysql_, pour voir à quel endroit tu plantes...

- Penses aussi à indenter correctement ton code. Il sera plus lisible, et donc plus facile à lire.

Eléphant du PHP | 81 Messages

07 févr. 2011, 12:00

ok merci je vais faire les corrections et les tests.
Mais oui je ne vais pas plus loin mais ma page s'affiche bien avec les div.

ViPHP
ViPHP | 5462 Messages

07 févr. 2011, 12:50

- Mets des echo régulièrement et rajoutes des or die explicites quand tu appelles une fonction mysql_, pour voir à quel endroit tu plantes...
pas top les or die en plus c'est or exit, il faut utiliser mysql.trace_mode :
ini_set('mysql.trace_mode', true);