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 :

liste deroulante alimenté PDO sur deux tables


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut liste deroulante alimenté PDO sur deux tables
    Bonjour,

    j'ai alimenté une liste déroulante mais cela affiche plusieurs fois la meme ville.

    j'ai une table destination avec les nom des villes et relié a une table voyage avec l'id de la ville destination.

    J'ai alimenté une liste deroulante pour que l'on puisse choisir la ville mais une ville peut apparaitre plusieurs fois.

    Je voudrai qu'elle n'apparait qu'une fois meme si elle a plusieurs voyage a son active.
    VOICI MOn formulaire

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <form action="" method ="POST" id="search" name="search">
                <div class="row">
                    <div class="col-lg-12">
                        <div class="row">
                            <div class="col-lg-3 col-md-3 col-sm-12 p-0">
     
     
                                       <select class="form-control search-slt" id="annee" name="annee">
                                      <option value="title">Année de voyage</option>
      <option value="2022">2022</option>
      <option value="2023">2023</option>
      <option value="2024">2024</option>
      <option value="2025">2025</option>
      <option value="2027">2026</option>
                                </select>
                            </div>
                             <div class="col-lg-3 col-md-3 col-sm-12 p-0">
     
     
                                       <select class="form-control search-slt" id="destination" name="destination">
                                      <option value="title">Destination</option>
      <?php
    $managerVoyage = new VoyageManager_PDO($db);
     
    foreach($managerVoyage->getListGroupByDestinationByType('croisiere') as $ContenuVoyage)
        {
    ?>
      <option value="<?php echo $ContenuVoyage->getTitreVoyage() ?>"> <?php echo $ContenuVoyage->getTitreVoyage() ?></option>
      <?php
        }
        ?>
                                </select>
                            </div>
                             <div class="col-lg-3 col-md-3 col-sm-12 p-0">
     
     
     
                                        <select class="form-control search-slt" id="nbjours" name="nbjours">
      <option value="title">Nombre de jours disponible</option>
    <?php
    $managerVoyage = new VoyageManager_PDO($db);
     
    foreach($managerVoyage->getListGroupByDestinationByType('croisiere') as $ContenuVoyage)
        {
    ?>
      <option value="<?php echo $ContenuVoyage->getJoursVoyage() ?>"> <?php echo $ContenuVoyage->getJoursVoyage() ?></option>
      <?php
        }
        ?>
            </select>
                            </div>
                            <div class="col-lg-3 col-md-3 col-sm-12 p-0">
                                <input type="submit" name="search" id="search" value="Rechercher">
                            </div>
                        </div>
                    </div>
                </div>
            </form>
    Voici ma requete dans ma classe pdo

    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
    public function getListGroupByDestinationByType($type_voyage)
        {
     
            $listeVoyage = array();
     
            $sql = 'SELECT id_voyage,page_voyage,annee_voyage,titre_voyage,jours_voyage,duree_voyage,description_voyage,tarif_voyage,depart_voyage,nomfichierIMAGE_voyage,urlIMAGE_voyage,nomfichierPDF_voyage,urlPDF_voyage,active_voyage,date_voyage,destination_id,contenu_id,contenu_nom,contenu_description
                    FROM voyage
                    INNER JOIN destination ON voyage.destination_id = destination.contenu_id
                    where page_voyage="'.$type_voyage.'" and active_voyage="1"
                    ORDER BY contenu_id ASC';
     
     
     
            $requete = $this->db->query($sql);
     
            while ($Voyage = $requete->fetch(PDO::FETCH_ASSOC))
            $listeVoyage[] = new Voyage ($Voyage);
     
            $requete->closeCursor();
     
     
            return $listeVoyage;
     
     
        }
    Comment faire apparaitre le nom des voyages qu'une fois dans la liste déroulante ?

    J'ai compris qu'il faut recuperer la liste des id de destination dans la table voyage qui ne sont que du type de voyage selectionne exempel croisiere et apres relié a la table destination pour recuperer le nom de la destination.


    merci pour votre aide

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 599
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Sans la description exacte des tables incluant les contraintes de type REFERENCE pour vérifier que la jointure est faite sur la bonne colonne, difficile de vous aider

    En l'état, on peut douter de ceci INNER JOIN destination ON voyage.destination_id = destination.contenu_id

  3. #3
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Bonjour,

    Utilisez la clause group by.

  4. #4
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    j'ai réussi en fessant cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT DISTINCT
        V.id_destination,
        D.contenu_nom
    FROM
        voyage V
            INNER JOIN destination D
                ON V.destination_id = D.contenu_id
    WHERE
        V.page_voyage = "$type_voyage"
        AND V.active_voyage = "1"
    ORDER BY D.contenu_nom ASC

    J'aurai une autre question dans ma page je souhaite affiché des titres avec les année et dans chaque année la liste des voyage de croisiere correspondants.

    CA ferait

    2022

    liste croisiere 2022

    2023

    liste croisiere 2023

    Sachant que l'année je l'ai dans la table voyage ?

    Voici mes 2 tables rapidement :

    destination
    id, nom, description.

    voyage
    id, nom, annee, etc.. id_destination.


    MERCI

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Bonjour,

    Dans ce cas, vous devriez d'abord récupérer les années (sans répétition) existants dans la table voyage, puis les parcourir pour récupérer les lignes correspondantes à chaque année.

Discussions similaires

  1. Liste déroulante sur deux tables
    Par NooD dans le forum IHM
    Réponses: 4
    Dernier message: 11/07/2006, 13h54
  2. Cumul sur deux tables
    Par lper dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/11/2004, 15h02
  3. Comptez sur deux tables en même temps
    Par genova dans le forum Langage SQL
    Réponses: 12
    Dernier message: 13/09/2004, 18h58
  4. trigger sur deux tables
    Par Shabata dans le forum Développement
    Réponses: 4
    Dernier message: 04/05/2004, 16h55
  5. 2 Count() sur deux tables en jointures gauches
    Par Alexandre T dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/09/2003, 16h53

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