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 déroulante php et Mysql


Sujet :

PHP & Base de données

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Par défaut Liste déroulante php et Mysql
    Bonjour à tous étant en alternance dans le développement informatique et que dans ma boite personne ne peux m'aider. Je me permet de me tourner vers vous.

    Je suis actuellement en train de développement un site web qui permettra de vendre des voitures.

    Mais depuis quelque temps je suis bloquée sur une page. Je vais essayer de faire simple pour vous expliquer, j'ai trois listes déroulantes qui me permette d'afficher des résultats suivant ce que les internautes vont vouloir chercher mais si par exemple les trois listes déroulantes sont sélectionnées et qu'il n'y a pas de résultat ça affiche "aucun résultat" mais après que j'ai eu ce message si l'internaute refais une recherche quoi qu'il arrive ca mettra toujours aucun résultat.
    J'aimerais trouvé un système pour réinitialisé les listes déroulantes (les remettent avec l'intitulé "sélectionner un modèle" ... ).

    Je vous met le code qui permet d'afficher les trois listes et le résultat.

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    <!-- //Inclure la connexion a la base de données -->
    <?php
    include ('connexion.php');
    ?>
     
     
     
     
    <!-- // On inclus un form pour récupéré les données -->
    <form action="" method="post">
     
     
    <select  name="modele" onchange="this.form.submit();"> <!-- // onchange permet en selectionnant sa valeur de la garder -->
    <?php
     
    $modele = $bdd->query('SELECT DISTINCT * FROM  modele where idtype="2" '); // La requete permet d'afficher tout les modèles de type crossover
     
    ?>
     
    <option value="">Selectionner un modele</option> <!-- // en tete de la liste déroulante -->
     
     
     
    <?php
     
    while($affichage1 = $modele->fetch()) 
     
    { //tant qu'il y a des enregsitrements, remplir la liste déroulante
        $selected = '';
        if ( isset($_POST['modele']) && $_POST['modele'] == $affichage1['idModele'] ) $selected = 'selected="selected"'; //permet de garder selectionné le modele choisi même après l'envoi du formulaire. $_POST['user'] correspond au nom du select
     
       echo '<option value="'.$affichage1["idModele"].'" '.$selected.'>'.$affichage1["libelleModele"].'</option><br/>'; // Affiche le Nom du Modele avec son ID en valeur
    }
    ?>
    </select>
     
     
     
     
     
    <select  name="carburant"  onchange="this.form.submit();">
     
    <option value="">Selectionner un carburant</option>
     
    <?php
    $carburant = $bdd->query ("SELECT  idEnergie, libelleEnergie FROM energie " );
     
     
    while($donnees=$carburant->fetch()) 
    { //tant qu'il y a des enregsitrements, remplir la liste déroulante
        $selected2 = '';
        if ( isset($_POST['carburant']) && ($_POST['carburant']) == $donnees['idEnergie'] ) $selected2 = 'selected="selected"'; //permet de garder selectionné la liste choisie même après l'envoi du formulaire. $_POST['list'] correspond au nom du select
     
        echo '<option value="'.$donnees["idEnergie"].'" '.$selected2.'>'.$donnees["libelleEnergie"].'</option><br/>'; //Affiche le nom de la liste, avec l'ID en valeur
    }
     
     
    ?>
     
    </select>
     
     
     
     
    <?php if (isset($_POST['carburant'])  AND isset($_POST['modele']))  { // Si une valeur est selectionné dans la liste du carburant alors on affiche une troisieme liste déroulante pour choisir le moteur
     
      ?>
     
     
    <select name="moteur"  onchange="this.form.submit();">
     
    <option value="">Selectionner un moteur</option>
     
    <?php
     
     
     
    $moteur = $bdd->query ("SELECT  * FROM moteur,energie, modele where modele.idModele = moteur.idModele and 
    moteur.idEnergie = energie.idEnergie and moteur.idEnergie='".$_POST['carburant']."' and modele.idModele = '".$_POST['modele']."'"); // Permet d'afficher les listes des moteurs correspondant au carburant choisi
     
     
    while($affichage=$moteur->fetch()) 
    { //tant qu'il y a des enregsitrements, remplir la liste déroulante
        $selected3 = '';
        if ( isset($_POST['moteur']) && ($_POST['moteur']) == $affichage['idMoteur'] ) $selected3 = 'selected="selected"'; //permet de garder selectionné la liste choisie même après l'envoi du formulaire. $_POST['list'] correspond au nom du select
     
         echo '<option value="'.$affichage["idMoteur"].'" '.$selected3.'>'.$affichage["libelleMoteur"].'&nbsp;'.$affichage["puissanceDIN"].'CV</option><br/>'; //Affiche le nom de la liste, avec l'ID en valeur
     
     
    }
     
     
     
     
    }
     
    ?>
    </select>
    </form>
    </div>
     
    <?php
     
    if (isset($_POST['modele']) AND empty($_POST['carburant']) AND empty($_POST['moteur'])){
     
    $voiture = $bdd->query("SELECT DISTINCT libelleModele, prix,url FROM voiture, modele, moteur where modele.idModele= moteur.idModele and moteur.idMoteur = voiture.idMoteur and moteur.idModele='".$_POST['modele']."'");
     
     
    while ($affichage = $voiture->fetch())
     
            {  ?>
     
    <div class="col-md-3 col-sm-6 hero-feature">
                    <div class="thumbnail">
                        <img src="../<?php echo $affichage['url'];?>" alt="">
                        <div class="caption">
                            <h3><?php echo $affichage['libelleModele'];?></h3>
                            <p><?php echo $affichage['prix'];?>€</p>
                            <p>
                                <a href="#" class="btn btn-primary">Plus d'infos</a> 
                            </p>
                        </div>
                    </div>
                </div>
     
    <?php
    }
    echo "Aucun résultat, essayer utlérieuremment";
     
     
     
    }
     
     
    elseif (isset($_POST['modele']) AND isset($_POST['carburant']) AND empty($_POST['moteur'])){
    ?>
     
        <script>
     
     alert('Vous devez choisir un moteur!');  
    </script>
     
    <?php
    }
     
     
     
    elseif (isset($_POST['modele']) AND isset($_POST['carburant']) AND isset($_POST['moteur']) )  {
     
    $voiture = $bdd->query("SELECT DISTINCT libelleModele, prix,url FROM voiture, modele, moteur where modele.idModele= moteur.idModele and moteur.idMoteur = voiture.idMoteur and moteur.idModele='".$_POST['modele']."' and voiture.idMoteur='".$_POST['moteur']."'");
     
     
    while ($affichage = $voiture->fetch())
            {  ?>
     
    <div class="col-md-3 col-sm-6 hero-feature">
                    <div class="thumbnail">
                        <img src="../<?php echo $affichage['url'];?>" alt="">
                        <div class="caption">
                            <h3><?php echo $affichage['libelleModele'];?></h3>
                            <p><?php echo $affichage['prix'];?>€</p>
                            <p>
                                <a href="#" class="btn btn-primary">Plus d'infos</a> 
                            </p>
                        </div>
                    </div>
                </div>
     
     
     
    <?php 
    } 
    ?>
    <script>
     
     alert('Aucun résultat essayer une autre recherche!');  
     
     
    </script>
     
     
     
    <?php
     
    }
     
     
    else {
     
        $test = $bdd->query("SELECT  libelleModele, prix,url FROM voiture, modele,moteur where modele.idModele= moteur.idModele and moteur.idMoteur = voiture.idMoteur and idType='2'");
     
    while ($test1 = $test->fetch())
            {  ?>
       <div class="col-md-3 col-sm-6 hero-feature">
                    <div class="thumbnail">
                        <img src="../<?php echo $test1['url'];?>" alt="">
                        <div class="caption">
                            <h3><?php echo $test1['libelleModele'];?></h3>
                            <p><?php echo $test1['prix'];?>€</p>
                            <p>
                                <a href="#" class="btn btn-primary">Plus d'infos</a> 
                            </p>
                        </div>
                    </div>
                </div>
     
                <?php }
     
     
     
    }
     
     
    ?>
    Merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il y a beaucoup trop de répétitions dans ton code.

    Regarde comment tu peux simplifier tes différents cas :
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    <?php
    include ('connexion.php');
    ?>
    <form action="" method="post">
     
    <select  name="modele" onchange="this.form.submit();"> <!-- // onchange permet en selectionnant sa valeur de la garder -->
    <option value="">Selectionner un modele</option>
    <?php
    $modele = $bdd->query('SELECT DISTINCT idModele, modele FROM  modele where idtype="2" '); // La requete permet d'afficher tout les modèles de type crossover
    while($affichage1 = $modele->fetch()) 
    { //tant qu'il y a des enregsitrements, remplir la liste déroulante
    	$selected = (isset($_POST['modele']) && $_POST['modele'] == $affichage1['idModele'] )  ? 'selected="selected"' : ''; //permet de garder selectionné le modele choisi même après l'envoi du formulaire. $_POST['user'] correspond au nom du select
    	echo '<option value="'.$affichage1["idModele"].'" '.$selected.'>'.$affichage1["libelleModele"].'</option><br/>'; // Affiche le Nom du Modele avec son ID en valeur
    }
    ?>
    </select>
     
    <select  name="carburant"  onchange="this.form.submit();">
    <option value="">Selectionner un carburant</option>
    <?php
    $carburant = $bdd->query ("SELECT  idEnergie, libelleEnergie FROM energie " );
    while($donnees=$carburant->fetch()) 
    { //tant qu'il y a des enregsitrements, remplir la liste déroulante
        $selected = (isset($_POST['carburant']) && ($_POST['carburant']) == $donnees['idEnergie'] ) ? 'selected="selected"' : ''; //permet de garder selectionné la liste choisie même après l'envoi du formulaire. $_POST['list'] correspond au nom du select
        echo '<option value="'.$donnees["idEnergie"].'" '.$selected2.'>'.$donnees["libelleEnergie"].'</option><br/>'; //Affiche le nom de la liste, avec l'ID en valeur
    }
    ?>
    </select>
    <?php
    if (isset($_POST['carburant'], $_POST['modele']))  { // Si une valeur est selectionné dans la liste du carburant alors on affiche une troisieme liste déroulante pour choisir le moteur
    	?>
    	<select name="moteur"  onchange="this.form.submit();">
    	<option value="">Selectionner un moteur</option>
    	<?php
    	$moteur = $bdd->prepare("SELECT * FROM moteur,energie, modele where modele.idModele = moteur.idModele and 
    								moteur.idEnergie = energie.idEnergie and moteur.idEnergie= ?  and modele.idModele = ?"); // Permet d'afficher les listes des moteurs correspondant au carburant choisi
     
    	$moteur->execute(array($_POST['carburant', $_POST['modele']));
    	while($affichage=$moteur->fetch()) 
    	{ //tant qu'il y a des enregsitrements, remplir la liste déroulante
    		$selected = (isset($_POST['moteur']) && ($_POST['moteur']) == $affichage['idMoteur']) ? 'selected="selected"' : ''; //permet de garder selectionné la liste choisie même après l'envoi du formulaire. $_POST['list'] correspond au nom du select
    		 echo '<option value="'.$affichage["idMoteur"].'" '.$selected3.'>'.$affichage["libelleMoteur"].'&nbsp;'.$affichage["puissanceDIN"].'CV</option><br/>'; //Affiche le nom de la liste, avec l'ID en valeur
    	}
    }
    ?>
    </select>
    </form>
    </div>
     
    <?php
     
    $param = array();
    $resultat = FALSE;
     
    if (isset($_POST['modele'])) {
    	$where[] = 'moteur.idModele = ?';
    	$param[] = $_POST['modele'];
    }
     
    if (isset($_POST['moteur'])) {
    	$where[] = 'voiture.idMoteur = ?';
    	$param[] = $_POST['moteur'];
    }
     
    $sql = "SELECT DISTINCT libelleModele, prix,url FROM voiture, modele, moteur where modele.idModele= moteur.idModele and moteur.idMoteur = voiture.idMoteur";
    if (isset($where)) {
    	$sql .= ' WHERE ' . implode(' AND ', $where);
    }
     
    $voiture = $bdd->prepare($sql);
    $voiture->execute($param);
     
    while ($affichage = $voiture->fetch())  {  
    	$resultat = TRUE;
    	?>
    	<div class="col-md-3 col-sm-6 hero-feature">
    		<div class="thumbnail">
    			<img src="../<?php echo $affichage['url'];?>" alt="">
    			<div class="caption">
    				<h3><?php echo $affichage['libelleModele'];?></h3>
    				<p><?php echo $affichage['prix'];?>€</p>
    				<p>
    					<a href="#" class="btn btn-primary">Plus d'infos</a> 
    				</p>
    			</div>
    		</div>
    	</div>
     
    	<?php
    	}
    }
    ?>
    Sinon pour ton problème, je n'ai pas compris : tu veux dire que si l'utilisateur met des critères différents, il n'obtient plus jamais aucun résultat ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Par défaut
    Merci beaucoup pour ton aide.

    J'ai essayé le code que tu m'as donné, j'ai un petit soucis les deux dernières listes déroulantes lorsque je sélectionne un champ il ne se garde pas il se réinitialise aussitôt c'est à dire qu'il revient sur sélectionner un carburant par exemple.

Discussions similaires

  1. [AJAX] Liste déroulante php mysql ajax javascript
    Par abbescr7 dans le forum AJAX
    Réponses: 26
    Dernier message: 28/05/2015, 22h09
  2. [MySQL] liste déroulante php mysql
    Par Davy1 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/06/2014, 11h32
  3. [MySQL] Affichage contenu liste déroulante /php mysql
    Par LiliValerie dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/09/2012, 15h21
  4. Réponses: 3
    Dernier message: 16/03/2011, 16h47
  5. [MySQL] Liste déroulante php & mysql
    Par soksabaidee dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/05/2010, 09h25

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