IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Recherche multicritères avec données SQL


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Graphiste
    Inscrit en
    Avril 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Graphiste
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2019
    Messages : 25
    Points : 8
    Points
    8
    Par défaut Recherche multicritères avec données SQL
    Bonjour,

    Pour un site internet de mobilité, j'aimerai créé un formulaire permettant aux gens de sélectionner leur commune et puis leur mode de transports souhaité.
    J'ai donc créé une table "communes" avec les noms des communes et une table "catégories" avec les 4 catégories différentes de moyen de transport.

    J'ai également créé une table "services" pour la page du résultat reprenant tous les services de transports qui seront à afficher en fonction de la commune et du moyen de transport choisi.

    Pour le formulaire de recherche, j'ai deux "select" avec les données de chaque table.
    Le premier affiche bien les communes mais aussi les catégories, le deuxième n'affiche rien du tout.

    Pouvez-vous m'aider ?

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <h3>2. Rechercher une <span>solution de mobilité</span> dans ma commune :</h3>	
     
     
    <form action="communes.php" method="GET">
    	 <?php 
    			$reponse = $bdd->query("SELECT * FROM communes UNION SELECT * FROM categories");
            ?>
    <select value="id_communes" name="id_communes" type="text" class="form-control">
    	<option disabled>Selectionnez votre commune</option> 
     
     
            <?php
    while ($donnees = $reponse->fetch())
    {
     
    echo '<option value="'.$donnees['id'].'">'.$donnees['commune'].'</option>';
     
    }
    ?>
    </select><br>
     
    <h3>3. De quel type de transport adapté avez-vous besoin ? </h3>
     
    <select value="id_categories" name="id_categories" type="text" class="form-control">
    	<option disabled>Selectionnez type de transport</option> 
     
     
            <?php
    while ($donnees = $reponse->fetch())
    {
     
    echo '<option value="'.$donnees['idcat'].'">'.$donnees['categorie'].'</option>';
     
     
    ?>
     
    	<?php }
    	$reponse->closeCursor();
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    	?>	</select>				
    										</form>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$reponse = $bdd->query("SELECT * FROM communes UNION SELECT * FROM categories");
    Cette requête va chercher les "communes" ET les "categories".


    Il faut faire 2 requêtes distinctes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php // communes
    	$reponse_communes = $bdd->query("SELECT * FROM communes ORDER BY commune ASC;");
    ?>
    ....
    <?php // categories
    	$reponse_categories = $bdd->query("SELECT * FROM categories ORDER BY categorie ASC;");
    ?>
    ....

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Graphiste
    Inscrit en
    Avril 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Graphiste
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2019
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    Merci pour la réponse, ça fonctionne !

    Mais est-ce que le bouton "rechercher" prend bien en compte les deux "select" ?

    Dans ma page résultat, j'ai écrit le code ci-dessous mais il me dit qu'il y a une erreur pour : ''WHERE S.id_communes = '.$_GET["id_communes"].''

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    			$reponse = $bdd->query("SELECT S.*, C.*
    			FROM services S
    			INNER JOIN communes C ON S.id_communes = C.id
    			WHERE S.id_communes = '.$_GET["id_communes"].'
    			UNION ALL
    			SELECT S.*, T.*
    			FROM services S
    			INNER JOIN categories T ON S.id_categories = T.id
    			WHERE S.id_categories = '.$_GET["id_categories"].'
    			"); 
     
    while ($donnees = $reponse->fetch())
    {?>
     
    				<h3>Résultats de la recherche</h3>
    				<?php echo ($donnees['nom']);
     
     
    $reponse->closeCursor(); 
     
     
    ?>

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bon.

    1- pour éviter de passer les paramètres dans l'URL, on choisit plutôt la methode "POST" :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post"....>

    2- Où as-tu trouvé cette syntaxe avec "... UNION ..." ?
    OK, elle existe... mais ce n'est pas une raison pour la mettre à toutes les sauces !

    3- Donc, si tu veux les 2 critères (l'un ET l'autre) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    // 1- requête
    $sql = "SELECT S.*, C.*, T.*
    	FROM services S
    	INNER JOIN communes C 
    		ON S.id_communes = C.id
    	INNER JOIN categories T 
    		ON S.id_categories = T.id
    	WHERE S.id_communes = :id_communes
    	AND S.id_categories = :id_categories
    	";
    // 2- Préparation de la requête
    $reponse = $bdd->prepare( $sql ); 
    // 3- Exécution, avec passage des paramètres externes
    $reponse->execute(array(
    	':id_communes' => $_POST["id_communes"],
    	':id_categories' => $_POST["id_categories"]
    ));
    A NOTER :
    • Requête préparée !

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Graphiste
    Inscrit en
    Avril 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Graphiste
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2019
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    J'ai trouvé ça sur un tuto

    Le pire, c'est qu'à la base, j'avais fait comme tu as fait mais en oubliant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $reponse->execute(array(
    	':id_communes' => $_POST["id_communes"],
    	':id_categories' => $_POST["id_categories"]
    ));

    Tout fonctionne, merci beaucoup pour ton aide.

    Je clôture le post ;-)

    Bon férié !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche multicritères avec SQL
    Par maxdel26 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/07/2015, 22h04
  2. [MySQL] Menu déroulant avec données sql
    Par matt38 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/08/2012, 23h40
  3. [XL-2007] MACRO : Extractions base de données texte, recherche multicritères avec interrogation
    Par Moi9999 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 18/04/2012, 10h17
  4. Recherche multicritère avec C# & Sql server 2k5
    Par Invité dans le forum Accès aux données
    Réponses: 3
    Dernier message: 26/05/2008, 23h50
  5. [MySQL] Problème affichage tableau PHP avec données SQL
    Par akalaan dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/04/2006, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo