PHP SQL PDO champs de recherche n'affiche rien !
Résolu
watarux
Messages postés
324
Statut
Membre
-
watarux Messages postés 324 Statut Membre -
watarux Messages postés 324 Statut Membre -
Bonjour, Je souhaite faire un champs de recherche, en gros je demande à l'utilisateur de taper le nom d'un film dans le formulaire
à l'envoie du formulaire ça devrait me retourner Le titre du film et son résumé.
j'ai essayé plusieurs choses mais à chaque fois je n'ai pas d'erreur dans le code mais a l'envoie du formulaire ça ne me renvoie rien
merci de votre aide :)
je vous poste la partie du code concernée
Cordialement watarux :)
<form method="post">
<label for="nom">Nom</label>
<input type="text" name="nom" />
<input type="submit" name="subnom" value="The" />
</form>
<php
if(isset($_POST['subnom']))
{
$me = htmlentities($_POST['nom']);
$sql5 = $DB->prepare('SELECT * FROM tp_film WHERE titre='.$me.'');
$sql5->execute();
$tab4 = $sql5->fetchall();
foreach ($tab5 as $a)
{
echo "<div>";
echo "<h2>";
echo $a['titre'];
echo "</h2>";
echo "<p>";
echo $a['resum'];
echo "</p>";
echo "</div>";
}
}
?>
à l'envoie du formulaire ça devrait me retourner Le titre du film et son résumé.
j'ai essayé plusieurs choses mais à chaque fois je n'ai pas d'erreur dans le code mais a l'envoie du formulaire ça ne me renvoie rien
merci de votre aide :)
je vous poste la partie du code concernée
Cordialement watarux :)
<form method="post">
<label for="nom">Nom</label>
<input type="text" name="nom" />
<input type="submit" name="subnom" value="The" />
</form>
<php
if(isset($_POST['subnom']))
{
$me = htmlentities($_POST['nom']);
$sql5 = $DB->prepare('SELECT * FROM tp_film WHERE titre='.$me.'');
$sql5->execute();
$tab4 = $sql5->fetchall();
foreach ($tab5 as $a)
{
echo "<div>";
echo "<h2>";
echo $a['titre'];
echo "</h2>";
echo "<p>";
echo $a['resum'];
echo "</p>";
echo "</div>";
}
}
?>
1 réponse
-
Bonjour !
Tu a un problème de nommage de variable, c'est pas une bonne idée de nommé tes variables tab5, tab4, etc ... c'est le meilleurs moyen de se planter.
Tu l'aurais appelé films tout simplement, ça aurait été plus compréhensible et source de moins d'erreur.
donc l'erreur est ici :$tab4 = $sql5->fetchall(); foreach ($tab5 as $a)
Et mettre :$tab4 = $sql5->fetchall(); foreach ($tab4 as $a)
Sinon, tu devrais revoir ta requêten celle-ci n'est pas protégé des injections Sql.-
-
Revoit tout simplement le principe des requête préparé, tu trouvera les explications et exemple sur php.net
https://www.php.net/manual/fr/pdo.prepare.php
Une variable en GET ou en POST peut être égal à n'importe quoi, n'importe qui peut y envoyer ce qu'il veut, que ce soit une checkbox, un select ou un champ caché.
Il faut toujours tout vérifier. -
-
Non, les fonctions
mysql_*
sont:
1. obsolètes donc à bannir
2. incompatibles avec PDO
Les requêtes préparées que PDO te permet de faire gèrent ça à ta place. Cf les exemples de PDO::prepare pour savoir comment insérer des paramètres.
Après tu peux (et même dois) quand même utiliserhtmlentities
ettrim
: ça n'a rien a voir avec la BDD en soi, c'est pour protéger la sortie texte de tout code HTML non voulu. -
-