Moteur de recherche PHP - MySQL [Résolu]

djsquinje 772 Messages postés lundi 19 janvier 2009Date d'inscription 31 mai 2017 Dernière intervention - 31 juil. 2014 à 11:41 - Dernière réponse : djsquinje 772 Messages postés lundi 19 janvier 2009Date d'inscription 31 mai 2017 Dernière intervention
- 31 juil. 2014 à 13:47
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
Afficher la suite 

Votre réponse

1 réponse

djsquinje 772 Messages postés lundi 19 janvier 2009Date d'inscription 31 mai 2017 Dernière intervention - 31 juil. 2014 à 13:47
0
Merci
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>";
}


Commenter la réponse de djsquinje

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.