Formulaire moteur de recherche PHP
Nicolas
-
Nicolas -
Nicolas -
Bonjour,
Je suis un débutant dans le code, le php je me connais pas trop mais je voulais faire un site web pour aider les élèves qui ont des difficultés a chercher leur formation/école, du coup j'ai commencé a faire le site et remplir la base de données mais je n'arrive pas a comprendre le code nécessaire qui fera la communication avec la base de données.
Je m'explique en faite l'élève une fois rempli le formulaire il pourra avoir toutes les écoles en fonction de ces réponses, exemple il habite en bretagne et il veut une école en design avec une alternance.
J'ai un ami qui ma envoyé ce conseille,
" l'idée serait plutôt que toutes les checkboxes aient le meme nom et soit un tableau (name=region[]) et aussi une value="nom_de_la_region" ou si tu as une table des régions l'id de région. De cette manière tu récupères un truc du type $_GET["region"] qui sera un tableau par ex ["hauts de france", "pays de loire"] ou bien si tu travailles sur les id [3,7]
ensuite tu génères la requete en parcourant le tableau et en rajoutant des clauses à chaque fois à l'aide d'une boucle foreach "
Mais je vais être honnête avec vous, transformer ça en code je ne sais pas comment le faire est ce que vous pouvez m'aider s'il vous plaît ?
Je suis un débutant dans le code, le php je me connais pas trop mais je voulais faire un site web pour aider les élèves qui ont des difficultés a chercher leur formation/école, du coup j'ai commencé a faire le site et remplir la base de données mais je n'arrive pas a comprendre le code nécessaire qui fera la communication avec la base de données.
Je m'explique en faite l'élève une fois rempli le formulaire il pourra avoir toutes les écoles en fonction de ces réponses, exemple il habite en bretagne et il veut une école en design avec une alternance.
J'ai un ami qui ma envoyé ce conseille,
" l'idée serait plutôt que toutes les checkboxes aient le meme nom et soit un tableau (name=region[]) et aussi une value="nom_de_la_region" ou si tu as une table des régions l'id de région. De cette manière tu récupères un truc du type $_GET["region"] qui sera un tableau par ex ["hauts de france", "pays de loire"] ou bien si tu travailles sur les id [3,7]
ensuite tu génères la requete en parcourant le tableau et en rajoutant des clauses à chaque fois à l'aide d'une boucle foreach "
Mais je vais être honnête avec vous, transformer ça en code je ne sais pas comment le faire est ce que vous pouvez m'aider s'il vous plaît ?
Configuration: Windows / Chrome 92.0.4515.131
A voir également:
- Formulaire moteur de recherche PHP
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Google moteur de recherche page d'accueil - Guide
- Formulaire de reclamation instagram - Guide
2 réponses
Niveau formulaire, je te conseille d'utiliser du POST au lieu du GET
Au niveau du code php
Avant de continuer, je t'invite à jeter un oeil à ceci.. vu que tu fais du PDO
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Et donc
<form action="recherche.php" method="POST">
Au niveau du code php
<?php
$regions = !empty($_POST['region']) ? $_POST['region'] : NULL;
var_dump($regions); // pour voir ce que contient ta variable regions ( en l'occurrence.. un array )
$strRegions = join("','" , $regions); // on concerti la variable en liste texte...
Avant de continuer, je t'invite à jeter un oeil à ceci.. vu que tu fais du PDO
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Et donc
//préparation de la requête
$sql = "SELECT * FROM audiovisuel WHERE region IN ('".$regions."')";
//Execution de la requete
try{
$requete = $bdd -> prepare($sql) ;
$requete->execute() ;
}catch(Exception $e){
// en cas d'erreur :
echo " Erreur ! ".$e->getMessage();
}
$result = $requete->fetchall(PDO::FETCH_ASSOC);
var_dump($result ); // pour voir ce que contient ta variable result ( en l'occurrence.. un array )
if(!empty($result )){
echo "<table> <tr><th>Formation</th> <th>Lieu</th> <th>Alternance</th> <th>Duree</th></tr>";
foreach ($result as $row){
echo "<tr><td>".$row['region']."</td><td>".$row['lieu']."</td> ><td>".$row['alternance']."</td> ><td>".$row['date']."</td></tr>";
}
echo "</table>";
}else{
echo " Aucun résultat";
}
Bonjour,
Ton ami est de bons conseils.
Par contre, pour t'aider, il va d'abord falloir que tu nous montres ce que tu as commencé à faire...
NB: Pour poster ton code correctement sur le forum, tu devras utiliser les balises de code
Explications ( à lire ENTIEREMENT !! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ton ami est de bons conseils.
Par contre, pour t'aider, il va d'abord falloir que tu nous montres ce que tu as commencé à faire...
NB: Pour poster ton code correctement sur le forum, tu devras utiliser les balises de code
Explications ( à lire ENTIEREMENT !! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Le formulaire :
Le code en php, fin ce que j'essaie de comprendre mais j'ai pas trop bien compris le fonctionnement du conseil de mon pote....
<div class="container">
<h2>Localisation</h2>
<form action="recherche.php" method="GET">
<div class="localisation">
<div class="er">
<div class="region">Choisis ta région</div>
<div class="ex"><section><input type="checkbox" name="region" id="" value="Auvergne-Rhones-Alpes">Auvergne-Rhônes-Alpes</section>
<section><input type="checkbox" name="region[]" id="" value="Bourgogne-Franche-Comte">Bourgogne-Franche-Comté</section>
<section><input type="checkbox" name="region[]" id="" value="Bretagne">Bretagne</section>
<section><input type="checkbox" name="region[]" id="" value="Centre-Val-de-Loire">Centre-Val de Loire</section>
<section><input type="checkbox" name="region[]" id="" value="Corse">Corse</section>
<section><input type="checkbox" name="region[]" id="" value="Grand-Est">Grand Est</section>
<section><input type="checkbox" name="region[]" id="" value="Haut-de-France">Haut-de-France</section>
<section><input type="checkbox" name="region[]" id="" value="Ile-de-France">Ile-de-France</section>
<section><input type="checkbox" name="region[]" id="" value="Normandie">Normandie</section>
<section><input type="checkbox" name="region[]" id="" value="Nouvelle-Aquitaine">Nouvelle-Aquitaine</section>
<section><input type="checkbox" name="region[]" id="" value="Occitanie">Occitanie</section>
<section><input type="checkbox" name="region[]" id="" value="Pays-de-Loire">Pays de Loire</section>
<section><input type="checkbox" name="region[]" id="" value="Provences-alpes-cotes-azur">Provences-Alpes-Côte</section>
<section><input type="checkbox" name="region[]" id="">Peu m'importe</section>
</div>
<input type="submit" value="Envoyer">
</div>
</div>
</div>
<h2>Domaine</h2>
<div class="domaine">
<section><input type="checkbox" name="audiovisuel" id="">Audiovisuel</section>
<section><input type="checkbox" name="communication" id="">Communication</section>
<section><input type="checkbox" name="design" id="">Design</section>
<section><input type="checkbox" name="gestion" id="">Gestion de Projet</section>
<section><input type="checkbox" name="informatique" id="">Informatique</section>
<section><input type="checkbox" name="marketing" id="">Marketing</section>
<section><input type="checkbox" name="multimedia" id="">Multimedia</section>
<section><input type="checkbox" name="ux" id="">UX/UI</section>
<section><input type="checkbox" name="autres" id="">Autres</section>
</div>
<h2>Type de formation</h2>
<div class="formation">
<section><input type="checkbox" name="initial" id="">Initial</section>
<section><input type="checkbox" name="alternance" id="">Alternance</section>
<section><input type="checkbox" name="all" id="">Peu m'importe</section>
</div>
<h2>Durée d'étude</h2>
<div class="duree">
<section><input type="checkbox" name="1an" id="">1 an</section>
<section><input type="checkbox" name="3ans" id="">3 ans</section>
<section><input type="checkbox" name="all" id="">Peu m'importe</section>
</div>
<button>Trouver des informations</button>
</form>
Le code en php, fin ce que j'essaie de comprendre mais j'ai pas trop bien compris le fonctionnement du conseil de mon pote....
$req = "SELECT * FROM audiovisuel WHERE region={$_GET[region]}";
$stmt = $db->query($req);
$result = $stmt->fetchall(PDO::FETCH_ASSOC);
echo "<table> <tr><th>Formation</th> <th>Lieu</th> <th>Alternance</th> <th>Duree</th></tr>";
foreach ($result as $row){
echo "<tr><td>".$row['region']."</td><td>".$row['lieu']."</td> ><td>".$row['alternance']."</td> ><td>".$row['date']."</td></tr>";
}
echo "</table>";
Merci beaucoup encore une fois !