Barre de recherche

Fermé
axeldeux Messages postés 42 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 14 décembre 2015 - 29 mai 2015 à 14:09
axeldeux Messages postés 42 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 14 décembre 2015 - 29 mai 2015 à 15:54
Bonjour,
je souhaite faire une barre de recherche] dans un script j'ai regardé plusieurs tutoriel mais je ne comprend vraiment rien a se qu'il faut faire pouvez-vous m'aidé a le faire?(je ne suis pas très fort en php, c'est pour mon stage en entreprise). j'ai une table clients et dans cette table il y a une rubrique artis (int) et un nom (varchar) je voudrais faire une recherche sur sa en affichant le nom.

<form action="rechercher.php" method="post">
<input type="text" name="mot">
<input type="submit" name="form" value="Rechercher">
</form>


rechercher.php
<?php
$mot = htmlentities($_POST['mot']);

$req = $pdo->prepare("SELECT * FROM clients WHERE nom = '$mot' OR artis = '$mot'");
$req->execute();

while($donnees = $req->fetch(PDO::FETCH_OBJ)) {
echo $donnees->sujet;
}
}
?>

3 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
29 mai 2015 à 14:20
Salut,

Pas de connexion à la base de données dans ton fichier rechercher.php ?
0
axeldeux Messages postés 42 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 14 décembre 2015
Modifié par axeldeux le 29/05/2015 à 14:33
Voilà

le code sql marche apres je ne c'est pas quoi mettre..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Recherche</title>
<style type="text/css" media="screen">@import "style.css";</style>
<body>
<?php
$link = mysql_connect ("localhost", "root", "****")

or die("Impossible de se connecter : " . mysql_error());
if (!mysql_select_db('dti', $link)) {
echo 'Sélection de base de données impossible';
exit;
}
?>
<br></br>
<p>resultat de la recherche!</p>
<?php
$mot = htmlentities($_POST['mot']);

$req = $pdo->prepare("SELECT * FROM clients WHERE nom = '$mot' OR artis = '$mot'");
$req->execute();

while($donnees = $req->fetch(PDO::FETCH_OBJ)) {
echo $donnees->sujet;
}

}
?>
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
29 mai 2015 à 14:42
Tu te connecte avec l'API Mysql puis te exécute ta requête avec l'API PDO ce qui n'est pas correct, tu ne peux pas mélanger l'utilisation de ces deux APIs :
https://www.php.net/manual/fr/mysqlinfo.api.choosing.php

Puisque l'API Mysql est obsolète, tu devrais donc utiliser l'API PDO ou Mysqli.
Pour te connecter avec PDO : https://www.php.net/manual/fr/pdo.construct.php

Au passage, attention aux injections sql. Si tu utilises les requêtes préparées avec PDO, tu dois utiliser des paramètres nommés ou des marqueurs sur tes données pour éviter les injections sql, voir les exemples de cette page : https://www.php.net/manual/fr/pdo.prepare.php
La fonction htmlentities (ou htmlspecialchars) ne devrait pas être utilisée sur tes données avant de les utiliser en sql mais uniquement lors de leurs affichages dans une page html.
0
axeldeux Messages postés 42 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 14 décembre 2015
29 mai 2015 à 14:50
j'ai utiliser sa car je les récupérées d'un tuto.. je ne comprend pas trop c'est tous nouveau pour moi.. :/
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
29 mai 2015 à 15:03
Tu as dû mélanger deux tutos car il n'est pas possible de mélanger l'utilisation de deux API pour gérer ta bdd.

Je t'invite à reprendre un tuto sur PDO pour mieux comprendre ce que tu fais. Tu pourra en trouver très facilement via ton moteur de recherche préféré, un exemple parmi d'autres : https://www.commentcamarche.net/faq/27489-pdo-une-autre-facon-d-acceder-a-vos-bases-de-donnees
0
axeldeux Messages postés 42 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 14 décembre 2015
29 mai 2015 à 15:54
j'ai pas réussi avec pdo.. jai donc utilisé quelque chose que j'avais déjà réalisé.. je ne c'est pas si c'est mieux mais sa ne marche toujours pas..

<body>         
<?php
$link = mysql_connect ("localhost", "root", "mounier")

or die("Impossible de se connecter : " . mysql_error());
if (!mysql_select_db('dti', $link)) {
echo 'Sélection de base de données impossible';
exit;
}
?>
<br></br>
<p>résultat de la recherche!</p>
<?php
$mot = htmlentities($_POST['mot']);

$reponse = $bdd->query("SELECT * FROM clients WHERE nom = '$mot' OR artis = '$mot'");

while($donnees = $reponse->fetch())
{
nom : echo $donnees['nom']; ?>
}

</body>
</html>
0