Barre de recherche
axeldeux
Messages postés
42
Date d'inscription
Statut
Membre
Dernière intervention
-
axeldeux Messages postés 42 Date d'inscription Statut Membre Dernière intervention -
axeldeux Messages postés 42 Date d'inscription Statut Membre Dernière intervention -
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.
rechercher.php
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;
}
}
?>
A voir également:
- Barre de recherche
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Windows 11 barre des taches a gauche - Guide
- Barre de défilement - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Barré whatsapp - Guide
3 réponses
Voilà
le code sql marche apres je ne c'est pas quoi mettre..
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;
}
}
?>
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.
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.
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
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
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>