Filtres PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Filtres PHP

Re: Filtres PHP

par jeremygoldyn » 11 janv. 2021, 10:52

Alalala yep apparemment ce n'était pas connecté #-o
Voilà ce que ca affiche : https://drive.google.com/file/d/1FvAVlX ... sp=sharing

J'ai retiré t.tag_nom car pas utile dans ce qu'on essaie de faire là tout de suite.

Donc ca fonctionne mais pourquoi ca ne filtre pas les éléments ?

Bon déjà je vois que le premier pays est "Afghanistan" mais j'aimerais avoir le premier champ qui est "Tous les lieux".
Je dois faire une requête spéciale pour dire ca avec "SELECT *" ?

Merci de ton aide Or1 (toujours bizarre de t'appeler comme ça :p

Re: Filtres PHP

par or 1 » 09 janv. 2021, 22:55

selectionner une base de donnée dans phpmyadmin.

Re: Filtres PHP

par jeremygoldyn » 09 janv. 2021, 22:42

Si je fais ca il me dit : ERROR;
MySQL said:Documentation
#1046 - No database selected
Je dois faire quoi alors ? :|

Re: Filtres PHP

par or 1 » 09 janv. 2021, 14:38

SELECT l.comte_nom, l.lieu_nom, l.pays_nom, p.flag_nom, l.lieu_url, t.tag.nom
FROM lieux l LEFT JOIN pays p ON l.pays_nom = p.pays_nom LIMIT 630
exécuté dans phpmyadmin, cela donne quoi ?

Re: Filtres PHP

par jeremygoldyn » 09 janv. 2021, 10:08

Ah oui j'avais oublié d'afficher... ce que je voulais afficher #-o
Merci !

Résultat actuel: https://drive.google.com/file/d/15bAShS ... sp=sharing

Par contre, si je clique sur un pays il ne prend pas en considération la demande.
C'est juste une liste, comment je dois faire pour qu'il sélectionne les lieux des pays que je lui demande ?

Par contre depuis que j'ai ajouté le "tag" (dernière colonne), il n'affiche plus rien.
Je dois faire un JOIN avec cette table aussi ? Comment je fais une troisième liaison avec la table (si c'est ca que je dois faire).

Code:

Code : Tout sélectionner

</header> <?php try { // On se connecte à MySQL $bdd = new PDO('mysql:host=localhost;dbname=visitearth;charset=utf8', 'root', 'root'); } catch(Exception $e) { // En cas d'erreur, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } $reponse = $bdd->query('SELECT l.comte_nom, l.lieu_nom, l.pays_nom, p.flag_nom, l.lieu_url, t.tag.nom FROM lieux l LEFT JOIN pays p ON l.pays_nom = p.pays_nom LIMIT 630'); ?> <div id="filters"> <div class="labeltheme"> <div>Thèmes</div> <select name="lieux"> <option value="lieux" selected>Lieux à découvrir</option> </select></div> <div class="labelpays"> <div>Pays</div> <select name="pays"> <?php $requete = 'SELECT pays_nom FROM pays'; $liste_pays = $bdd->query($requete); while ($donnees = $liste_pays->fetch()) { echo '<option value="' . $donnees['pays_nom'] . '">' . $donnees['pays_nom'] . '</option>'; } ?> </select></div> <div class="labeltype"> <div>Types</div> <select name="type"> <?php $requete = 'SELECT tag_nom FROM tags'; $liste_tags = $bdd->query($requete); while ($donnees = $liste_tags->fetch()) { echo '<option value="' . $donnees['tag_nom'] . '">' . $donnees['tag_nom'] . '</option>'; } ?> </select></div> </div>
Merci !!!!

Re: Filtres PHP

par or 1 » 08 janv. 2021, 23:42

J'ai oublié quelque chose ?
oui, cela ne serait pas vide sinon.
https://developer.mozilla.org/fr/docs/W ... ent/select

Re: Filtres PHP

par jeremygoldyn » 08 janv. 2021, 23:38

Super !
Il se passe quelque chose ! :D
Une liste s'affiche mais vide mais avec le bon nombre de ligne je pense.

code:

Code : Tout sélectionner

<div class="labelpays"> <div>Pays</div> <select name="pays"> <?php $requete = 'SELECT pays_nom FROM pays'; $liste_pays = $bdd->query($requete); while ($donnees = $liste_pays->fetch()) { echo '<option value="' . $donnees['pays_nom'] . '"></option>'; } ?> </select></div>
J'ai oublié quelque chose ?

Re: Filtres PHP

par jeremygoldyn » 08 janv. 2021, 23:23

Ah merci !!!
Il me semblait bien que Ryle en avait parlé mais je ne me rappelait plus de ou !!!

Je crois que j'ai compris mon erreur.

Je vais analyser ce que Ryle avait dit et je vais essayer différentes choses si je n'y arrive pas avant de revenir :)

Merci à toi !

Re: Filtres PHP

par or 1 » 08 janv. 2021, 23:01

pour alimenter les listes déroulantes permettant de filtrer, le code a déjà été donné :
post465249.html#p465249

Re: Filtres PHP

par jeremygoldyn » 08 janv. 2021, 22:56

Ok non.
En fait je dois re créer une variable "$Liste_Pays" par exemple avec les champs que je veux récupérer dans cette liste ?

Code : Tout sélectionner

$liste_pays = $bdd->query('SELECT l.pays_nom FROM pays');
Et faire une nouvelle requête ? C'est ça ?

Re: Filtres PHP

par or 1 » 08 janv. 2021, 22:56

il y a besoin des 2 codes.
il faut la requête de base, et si des filtres sont demandés, compléter la requête avec les filtres voulus.
mais avant de construire la requête en php, mieux vaut déjà avoir la requête finale correcte, et pas SELECT $column FROM lieux

Re: Filtres PHP

par jeremygoldyn » 08 janv. 2021, 21:51

C'est déjà ce que je fais en faisant ca non ?

Code : Tout sélectionner

$reponse = $bdd->query('SELECT l.comte_nom, l.lieu_nom, l.pays_nom, p.flag_nom, l.lieu_url FROM lieux l LEFT JOIN pays p ON l.pays_nom = p.pays_nom LIMIT 630');
Donc je supprime la portion du code:

Code : Tout sélectionner

// If post value isset if(isset($_POST['pays_nom'])) { $column = $_POST['pays_nom']; // Set Column $query = "SELECT $column FROM lieux"; // Create Query $sql = mysqli_query($con, $query); // Run Query // Loop through results while ($row = mysqli_fetch_array($sql, MYSQLI_ASSOC)){ echo "<br>". $row[$column] . "<br>"; } // Close connection mysqli_close($con); }

Merci !

Re: Filtres PHP

par or 1 » 08 janv. 2021, 18:43

vu ce départ :
$query = "SELECT $column FROM lieux"; // Create Query
mieux vaut utiliser phpmyadmin pour faire des recherches sur les champs et partir de la requête sql générée par phpmyadmin.

Filtres PHP

par jeremygoldyn » 08 janv. 2021, 16:22

Hello,

J'essaie d'afficher une liste de pays dans les filtres pour filtrer les résultats d'une liste provenant de SQL.

Voir design ici: https://drive.google.com/file/d/1s6awdr ... sp=sharing

J'ai trouvé ce code-ci mais ca ne fonctionne pas:

J'ai remplacé :
- la valeur dans la "POST array []" en mettant le nom de la colonne ou je veux chercher les infos (le nom des pays)
- la valeur du FROM en mettant le nom de la table.

Code : Tout sélectionner

// If post value isset if(isset($_POST['pays_nom'])) { $column = $_POST['pays_nom']; // Set Column $query = "SELECT $column FROM lieux"; // Create Query $sql = mysqli_query($con, $query); // Run Query // Loop through results while ($row = mysqli_fetch_array($sql, MYSQLI_ASSOC)){ echo "<br>". $row[$column] . "<br>"; } // Close connection mysqli_close($con); }

Je ne suis pas sur aussi de où je dois mettre cette portion de code: avant ou après (ou sans importance peut etre) l'endroit ou je veux afficher les options du filtres ?

Voici le code entier:

Code : Tout sélectionner

<?php try { // On se connecte à MySQL $bdd = new PDO('mysql:host=localhost;dbname=visitearth;charset=utf8', 'root', 'root'); } catch(Exception $e) { // En cas d'erreur, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } $reponse = $bdd->query('SELECT l.comte_nom, l.lieu_nom, l.pays_nom, p.flag_nom, l.lieu_url FROM lieux l LEFT JOIN pays p ON l.pays_nom = p.pays_nom LIMIT 630'); // If post value isset if(isset($_POST['pays_nom'])) { $column = $_POST['pays_nom']; // Set Column $query = "SELECT $column FROM lieux"; // Create Query $sql = mysqli_query($con, $query); // Run Query // Loop through results while ($row = mysqli_fetch_array($sql, MYSQLI_ASSOC)){ echo "<br>". $row[$column] . "<br>"; } // Close connection mysqli_close($con); } ?> <div id="filters"> <div class="labeltheme"> <div>Thèmes</div> <select name="lieux"> <option value="lieux" selected>Lieux à découvrir</option> </select></div> <div class="labelpays"> <div>Pays</div> <select name="pays"> <option value="<?php echo $donnees['l.pays_nom']; ?>"></option> </select></div> <div class="labeltype"> <div>Types</div> <select name="tri"> <option value="montagne" selected>Montagnes</option> </select></div> </div> <br> <br />
Merci de votre aide !