PHP-MySQL: LIKE +variables saisies dans FORM
Résolu
Jer
-
joh; -
joh; -
Bonjour,
Je me casse la tête depuis hier pour adapter les bouts de codes que ja glane à droite et à gauche pour convenir à mes besoins. Vous l'avez compris, je ne m'y connais pas vraiment, et j'apprends sur le tas.
J'ai une page1.htm dans laquelle se trouve un FORM en méthode POST, action=page2.php. Les INPUT et SELECT de cette page doivent permettre aux utilisateurs de sonder la db avec des mots ou des parties de mots.
Avec la page2.php, dont le code se trouve ci-dessous, je reçois tous les enregistrements, sans le(s) filtre(s) prévus dans le FORM.
Pouvez-vous me mettre sur une piste de solution ?
Merci mille fois.
Je me casse la tête depuis hier pour adapter les bouts de codes que ja glane à droite et à gauche pour convenir à mes besoins. Vous l'avez compris, je ne m'y connais pas vraiment, et j'apprends sur le tas.
J'ai une page1.htm dans laquelle se trouve un FORM en méthode POST, action=page2.php. Les INPUT et SELECT de cette page doivent permettre aux utilisateurs de sonder la db avec des mots ou des parties de mots.
Avec la page2.php, dont le code se trouve ci-dessous, je reçois tous les enregistrements, sans le(s) filtre(s) prévus dans le FORM.
<?php $con = mysql_connect("aaaa","bbbb","cccc") OR die( "Erreur de connexion.<br />\nErreur MySQL '" . mysql_error() . "'" ); mysql_select_db("aaaa", $con) OR die ( "Impossible de sélectionner la base spécifiée.<br />\nErreur MySQL '" . mysql_error() . "'" ); $query = "SELECT * FROM marginalia WHERE margindex LIKE '$_POST[$margindex]%' ORDER BY margindex "; $result = mysql_query($query) OR die(mysql_error()); echo "<table> <tr> <th>Index</th> <th>Nota</th> <th>Variante</th> <th>Variante suscrite</th> <th>Chapitre</th> <th>Réf Ed. 1601</th> <th>Sujet (texte)</th> <th>Lien texte-note</th> <th>Sujet (note)</th> <th>Vices & vertus</th> <th>Nombre de mots</th> <th>Main</th> <th>Commentaire</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['margindex'] . "</td>"; echo "<td>" . $row['nota'] . "</td>"; echo "<td>" . $row['nota_var'] . "</td>"; echo "<td>" . $row['nota_sup'] . "</td>"; echo "<td>" . $row['ref_txt'] . "</td>"; echo "<td>" . $row['ref_1601'] . "</td>"; echo "<td>" . $row['t_suj'] . "</td>"; echo "<td>" . $row['lien'] . "</td>"; echo "<td>" . $row['n_suj'] . "</td>"; echo "<td>" . $row['v_v'] . "</td>"; echo "<td>" . $row['nombre'] . "</td>"; echo "<td>" . $row['main'] . "</td>"; echo "<td>" . $row['commentaire'] . "</td>"; echo "</tr>"; } echo "</table>"; ?>
Pouvez-vous me mettre sur une piste de solution ?
Merci mille fois.
A voir également:
- Mysql php like
- Easy php - Télécharger - Divers Web & Internet
- Voir like instagram - Guide
- Coco like - Accueil - Réseaux sociaux
- Mysql community server - Télécharger - Bases de données
- Expert php pinterest - Télécharger - Langages
2 réponses
Dans ta requête, comme index de $_POST tu utilises une variable, qui semble ne pas avoir été définie. Du coup le $_POST ne retourne rien, et ta recherche se fait juste sur le % ce qui retourne toues tes entrées.
Aussi, pense bien à échapper toutes tes données en POST/GET avec mysql_real_escape_string pour éviter les requêtes malveillantes !
Essaye ça :
Aussi, pense bien à échapper toutes tes données en POST/GET avec mysql_real_escape_string pour éviter les requêtes malveillantes !
Essaye ça :
$margindex = mysql_real_escape_string($_POST['margindex']); $query = "SELECT * FROM marginalia WHERE margindex LIKE '".$margindex."%'ORDER BY margindex";
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql
Si tu as envie de comprendre un peu plus en détail.
Sinon je comprend pas ton problème en fait, est ce que tu pourrais reformuler ?
Si tu as envie de comprendre un peu plus en détail.
Sinon je comprend pas ton problème en fait, est ce que tu pourrais reformuler ?
Ton exemple fonctionne bien.
Je voudrais cependant ajouter d'autres valeurs, et je pense que je les combine mal, car ça n'affiche plus rien quand j'ajoute des critères dans la requête (en les prenant un par un, ça marche, mais j'ai besoin de tous les combiner) ... :