PHP SQL PDO champs de recherche n'affiche rien !
Résolu
watarux
Messages postés
266
Date d'inscription
Statut
Membre
Dernière intervention
-
watarux Messages postés 266 Date d'inscription Statut Membre Dernière intervention -
watarux Messages postés 266 Date d'inscription Statut Membre Dernière intervention -
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>";
}
}
?>
A voir également:
- PHP SQL PDO champs de recherche n'affiche rien !
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Le clavier de mon telephone ne s'affiche plus - Guide
- Recherche photo - Guide
- Word mettre à jour tous les champs ✓ - Forum Word
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 :
Et mettre :
Sinon, tu devrais revoir ta requêten celle-ci n'est pas protégé des injections Sql.
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.
et dois-je sécuriser aussi des liste déroulant ?
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.
je doute mais sur phpmanuel je comprends pas toujours comment les choses sont expliqué...
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 utiliser et : ç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.
$sql2 = $DB->prepare('SELECT * FROM tp_film WHERE id_genre = '.$DB->quote($_POST['genre'], PDO::PARAM_INT).'ORDER BY titre');