Moteur de recherche PHP - MySQL [Résolu]

Signaler
Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
-
Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
-
Bonjour à tous, je vous sollicite pour une petite aide

J'ai mon moteur de recherche :

<?
if(isset($_POST['requete']) && $_POST['requete'] != NULL) // on vérifie d'abord l'existence du POST et aussi si la requete n'est pas vide.
{
mysql_connect('localhost','root','');
mysql_select_db('test'); // on se connecte à MySQL. Je vous laisse remplacer les différentes informations pour adapter ce code à votre site.
 
$requete = htmlspecialchars($_POST['requete']); // on crée une variable $requete pour faciliter l'écriture de la requête SQL, mais aussi pour empêcher les éventuels malins qui utiliseraient du PHP ou du JS, avec la fonction htmlspecialchars().
$query = mysql_query("SELECT * FROM recherche WHERE entreprise LIKE '%$requete%' ORDER BY id DESC") or die (mysql_error()); // la requête, que vous devez maintenant comprendre <img title=";)" alt=";)" src="../../bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/clin.png">
$nb_resultats = mysql_num_rows($query); // on utilise la fonction mysql_num_rows pour compter les résultats pour vérifier par après
if($nb_resultats != 0) // si le nombre de résultats est supérieur à 0, on continue
{
// maintenant, on va afficher les résultats et la page qui les donne ainsi que leur nombre, avec un peu de code HTML pour faciliter la tâche.
?>
<h3>Résultats de votre recherche.</h3>
<p>Nous avons trouvé <? echo $nb_resultats; // on affiche le nombre de résultats 
if($nb_resultats > 1) { echo 'résultats'; } else { echo 'résultat'; } // on vérifie le nombre de résultats pour orthographier correctement. 
?>
dans notre base de données. Voici les fonctions que nous avons trouvées :<br/>
<br/>
<?
while($donnees = mysql_fetch_array($query)) // on fait un while pour afficher la liste des fonctions trouvées, ainsi que l'id qui permettra de faire le lien vers la page de la fonction
{
?>
<a href="recherche.php?id=<? echo $donnees['id']; ?>"><? echo $donnees['entreprise']; ?></a><br/>
<?
} // fin de la boucle
?><br/>
<br/>
<a href="index.php">Faire une nouvelle recherche</a></p>
<?
} // Fini d'afficher les résultats ! Maintenant, nous allons afficher l'éventuelle erreur en cas d'échec de recherche et le formulaire.
else
{ // de nouveau, un peu de HTML
?>
<h3>Pas de résultats</h3>
<p>Nous n'avons trouvé aucun résultat pour votre requête "<? echo $_POST['requete']; ?>". <a href="rechercher.php">Réessayez</a> avec autre chose.</p>
<?
}// Fini d'afficher l'erreur <img title="^^" alt="^^" src="../../bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/hihi.png">
mysql_close(); // on ferme mysql, on n'en a plus besoin
}
else
{ // et voilà le formulaire, en HTML de nouveau !
?>
<p>Vous allez faire une recherche dans notre base de données concernant les fonctions PHP. Tapez une requête pour réaliser une recherche.</p>
 <form action="index.php" method="Post">
<input type="text" name="requete">
<input type="submit" value="Ok">
</form>
<?
}
// et voilà, c'est fini !
?>




Quand je recherche sur ma table "recherche" cela me sort bien la liste, mais ensuite le lien ne fonctionne pas et je ne sais pas pourquoi...

Si vous pouvez m'aidez.

Bien merci
A voir également:

1 réponse

Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
3
Merci de votre aide...

mais resolut :

 

$id = intval($_GET['id']); // pas de risque d'injection: on aura toujours un nombre entier, jamais de chaine de caractères
$query = mysql_query("SELECT * FROM recherche WHERE id=$id") or die (mysql_error());
$nb_resultats = mysql_num_rows($query);
if ($nb_resultats == 0) {
    echo "non trouvé";
} else {
    $donnees = mysql_fetch_array($query); // oui, une seule fois: 1 id pour 1 ligne, pas +!
    echo "E-mail: ".$donnees['email']."<br>";
}