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 input [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut Liste deroulante input
    Bonjour,

    j'essaie de mettre en place un formulaire, et je rencontre quelques soucis avec mes champs <input> et ma miste déroulante. le code suivant affiche correctement la liste déroulante mais pas les données qui doivent être présente dans les deux champs <imput> en fin de script.

    Si je supprime la liste déroulante, les deux champs <input> affichent correctement les données retournée par la requête $sql2.

    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
    $sql2 = "SELECT * FROM clients WHERE id = $gouid";  etc...
    --> affichage des donnée liées a cette requête... OK.
    ...
    ..
    .
    echo "<td>Liste commerciaux : </td>
    <td>";
    	echo '<SELECT name="commm" size="1">
    			<option>Selectionner commercial</option>'."";
    	$sql5 = 'SELECT commercial FROM partenaires';
    	$req5 = mysql_query($sql5) or die('Erreur SQL !<br>'.$sql5.'<br>'.mysql_error()); 
    	while($data = mysql_fetch_assoc($req5))
        {
        echo '<option>'.$data['commercial'].'</option><br>';
        }
    "</SELECT></td>";
    echo "<br>
    <td>type de client : <input type='text' name='typeclient' value='".$data['typeclient']."'/></td>
    <td>Date d'ouverture : <input type='text' name='dateopen' value=".$data['dateopen']." ></td>";
    merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    $data est utilisé pour $req2 et/ou $req5 ??
    Le problème vient de là.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut
    en effet le pb était là.

    code MODIFIE:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo '<SELECT name="commm" size="1">
    			<option>Selectionner commercial</option>'."";
    	$sql5 = 'SELECT commercial FROM partenaires';
    	$req5 = mysql_query($sql5) or die('Erreur SQL !<br>'.$sql5.'<br>'.mysql_error()); 
    	while($data5 = mysql_fetch_assoc($req5))
        {
        echo '<option>'.$data5['commercial'].'</option><br>';
        }
    "</SELECT></td>";
    Merci.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Et mets les balises en minuscule :
    <SELECT ...> -> <select ...>
    </SELECT> -> </select>
    Ça t'évitera aussi les confusions avec SQL SELECT...

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut
    j'ai modifier mes <select>

    une autre question, est-il possible (la réponse est oui) de faire afficher dans le champ de ma liste déroulante, la valeur stockée dans la Db sachant que celle-ci change ?

    ma liste deroulante contient X options

    valeur 1
    valeur 2
    valeur 3
    valeur 4

    dans ma base j'ai:
    client 1 valeur 4
    client 2 valeur 4
    client 3 valeur 2
    client 1 valeur 3
    client 4 valeur 1

    quand j'interroge la base, je voudrais que le client 1 remonte la valeur 4, mais si ensuite j'interroge le client 1, je voudrais que se soit la valeur 1 qui s'affiche... une sorte de 'selected' à géométrie variable...

    +

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re. 2 choses :
    1/ si tu veux récupérer quelque chose via le select, il faudrait mettre des value="..." aux options :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        echo '<option value="'.$data5['id_blabla'].'">'.$data5['commercial'].'</option><br>';
    Ici, j'ai mis id_blabla (id, auto-incrément de préférence = unique)

    2/ pour qu'une option soit sélectionnée à l'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $selected_option = ($data2['id_blabla'] == $data5['id_blabla']) ? ' selected="selected"' : '';
        echo '<option value="'.$data5['id_blabla'].'"'.$selected_option.'>'.$data5['commercial'].'</option><br>';

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut
    je viens d'adapter mon code en fonction de tes recommendations de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php	<td>Commerciaux s&eacute;dentaires :";
    	echo '<select name="comm">
    	<option>Selectionner un commercial</option>'."";
    	$sql3 = 'SELECT * FROM vendeurs WHERE commercial LIKE 0'; <-- dans ma db 0 = sedentaire, 1 = itinérant, 2 = externe
    	$req3 = mysql_query($sql3) or die('Erreur SQL !<br>'.$sql3.'<br>'.mysql_error()); 
    	while($data3 = mysql_fetch_assoc($req3))
        {
    	$selected_option = ($data3['id'] == $data3['commercial']) ? ' selected="selected"' : '';
    	echo '<option value="'.$data3['id'].'"'.$selected_option.'>'.$data3['commercial'].'</option><br>';
    	}
    	"</select>
    ?>
    Quand j'interroge le client, la valeur stockée dans la table n'apparait pas il y a toujours affiché "Selectionner un commercial"
    au passage de la variable je récupère bien l'id de mon commercial impecable mais j'ai un retour d'erreur pour la variable "selected_option" ( Notice: Undefined variable: selected_option)

    +

  8. #8
    Invité
    Invité(e)
    Par défaut
    Personnellement, j'écris séparément le code html et le php.
    - c'est plus lisible (coloration syntaxique, indentation) et donc plus facile à déboguer,
    - ça évite les problèmes de " et '
    - ça évite d'interpréter (inutilement) par php du code html

  9. #9
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut
    je dois donc déduire de ta réponse que mon erreur se situe dans la syntaxe et non pas dans le fonctionnement de la requête et du "<select>"

  10. #10
    Invité
    Invité(e)
    Par défaut
    Il serait bon de mettre plus de code (le code avant et le code après),
    car là, il en manque un bout...
    et le manque de coloration syntaxique de ton code ne permet pas d'y voir clair.

    Idem quand tu as un message d'erreur : écrit-le en entier, ca peut aider...

  11. #11
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut
    le premier code avec l'aide de tes modifs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    echo '<SELECT name="comm" size="1">
    			<option>Selectionner commercial</option>'."";
    	$sql3 = 'SELECT commercial FROM vendeurs';
    	$req3 = mysql_query($sql3) or die('Erreur SQL !<br>'.$sql3.'<br>'.mysql_error()); 
    	while($data3 = mysql_fetch_assoc($req3))
        {
        echo '<option>'.$data3['commercial'].'</option><br>';
        }
    "</SELECT></td>";
    la liste de tous les commerciaux s'affiche correctement et la variable passe à l'envois du formulaire, je la récupére sous la forme d'une chaine de caractère.
    les commerciaux sont classés par id donc quand je selectionne un client c'est le premier commercial qui s'affiche et non pas celui attribué au client.

    Deuxième code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    echo 	"<td>Commerciaux s&eacute;dentaires :";
    	echo '<select name="comm">
    	<option>Selectionner un commercial</option>'."";
    	$sql3 = 'SELECT * FROM vendeurs WHERE commercial LIKE 0'; <-- dans ma db 0 = sedentaire, 1 = itinérant, 2 = externe
    	$req3 = mysql_query($sql3) or die('Erreur SQL !<br>'.$sql3.'<br>'.mysql_error()); 
    	while($data3 = mysql_fetch_assoc($req3))
        {
    	$selected_option = ($data3['id'] == $data3['commercial']) ? ' selected="selected"' : '';
    	echo '<option value="'.$data3['id'].'"'.$selected_option.'>'.$data3['commercial'].'</option><br>';
    	}
    	"</select>
    je voudrai que dans le champs s'affiche la valeur stockée dans le champ commercial pour ce client --> tu m'explique le "selected" mais je pense avoir un pb de conf.
    la variable passe correctement et je la reçois sous forme numérique.

    merci de ta patience.

  12. #12
    Invité
    Invité(e)
    Par défaut
    il manque bien quelque chose ligne 12 :
    ??

    Et enlève le <br> après </option> !

  13. #13
    Invité
    Invité(e)
    Par défaut
    Ce n'est pas plus lisible comme ça ?
    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
    <?php
    // [...]
    ?>
    	<td>Commerciaux s&eacute;dentaires :
    		<select name="comm">
    			<option value="">Selectionner un commercial</option>
    <?php
    	$sql3 = 'SELECT * FROM vendeurs WHERE commercial LIKE 0'; // dans ma db 0 = sedentaire, 1 = itinérant, 2 = externe
    	$req3 = mysql_query($sql3) or die('Erreur SQL !<br />'.$sql3.'<br />'.mysql_error()); 
    	while($data3 = mysql_fetch_assoc($req3))
    	{
    			$selected_option = ($data3['id'] == $data3['commercial']) ? ' selected="selected"' : '';
    ?>
    			<option value="<?php echo $data3['id']; ?>"<?php echo $selected_option; ?>><?php echo $data3['commercial']; ?></option>
    <?php	} ?>
    		</select>

  14. #14
    Invité
    Invité(e)
    Par défaut
    je voudrai que dans le champs s'affiche la valeur stockée dans le champ commercial pour ce client
    $data3['commercial'] = 0 puisque c'est dans la requête !

    A mon avis, tu aurais TOUT INTERET à donner DES NOMS PLUS EXPLICITES à tes données !!
    $data1, $data2... c'est plutôt nul... et source d'un tas d'erreurs et de confusion (comme c'est le cas ici !)

    C'était DEJA la source des erreurs de ton 1er message !

  15. #15
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut
    En effet séparer php/html rends le code plus clair. J'ai modifié mon code comme ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	echo "<td>Commerciaux s&eacute;dentaires  :
    			<select name='comm'>
    			<option value=''>Selectionner un commercial</option>";
    			$sql3 = 'SELECT * FROM vendeurs WHERE commercial LIKE 0';
    			$req3 = mysql_query($sql3) or die('Erreur SQL !<br>'.$sql3.'<br>'.mysql_error()); 
    			while($data3 = mysql_fetch_assoc($req3))
    			{
    			$selected_option = ($data3['id'] == $data3['commercial']) ? ' selected="selected"' : '';
    			echo '<option value="'.$data3['id'].'"'.$selected_option.'>'.$data3['commercial'].'</option>';
    			}";
    			</select><td>";
    Mais le pb du "selected" est toujours présent. Ce que je ne comprends pas c'est comment remonter la valeur du champ commercial" en fonction du client étant donné que ce paramètre n'est pas envoyé dans la reqête...

  16. #16
    Invité
    Invité(e)
    Par défaut
    Lis mon précédent message.
    ($data3['id'] == $data3['commercial'])
    Tu est bien sûr de savoir à quoi ça fait référence ?
    Tu as 2 requêtes/result/données qui portent ce même nom $data3 !

    Comment veux-tu qu'on comprenne à ta place ?

    Si au moins tu postais le code complet...

  17. #17
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut
    J'ai du mal formuler...
    $data3['commercial'] = 0 puisque c'est dans la requête !
    ma colonne commercial contient 3 types de valeur:
    0 --> commercial sédentaire
    1 --> commercial itinérant
    2 --> commercial externe

    Donc ce morceau "WHERE commercial LIKE 0" me permet d'afficher uniquement les commerciaux sédentaire dans ma liste déroulante, et c'est ceux dont j'ai besoin.
    Ensuite je cherche à faire afficher la valeur contenue dans la colonne sachant quelle n'est pas toujours la même.

    Tu as 2 requêtes/result/données qui portent ce même nom $data3 !
    Dans ce "<select>" ?

    Si au moins tu postais le code complet...
    Vraiment désolé et avec les efforts que tu fais ça m'embète vraiment.

  18. #18
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut
    Cette ligne en particulier:
    $selected_option = ($data3['id'] == $data3['commercial']) ? ' selected="selected"' : '';
    $selected_option -> variable que je vais récupéré dans le fichier suivant ?
    $data3['id']--> correspond bien à l'id d'un commercial (vérifié.)
    $data3['commercial'] --> correspond bien au nom du commercial lié à l'id ci-dessus (vérifié)

    j'ai juste besoin de faire affiché la variable "$data3['commercial']" à chaque interrogation de client.

  19. #19
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    			$selected_option = ($data3['id'] == $data3['commercial']) ? ' selected="selected"' : ''; 
    			echo '<option value="'.$data3['id'].'"'.$selected_option.'>'.$data3['commercial'].'</option>';
    Ca affiche pour la "bonne" option : selected="selected"
    Sinon rien.

    Explication de la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $la_variable = (condition est vrai) ? 'valeur_si_oui' : 'valeur_si_non';
    ?>
    Ca revient à écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    if(condition est vrai){
    	$la_variable = 'valeur_si_oui';
    } else {
    	$la_variable = 'valeur_si_non';
    }
    ?>

  20. #20
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut
    Bonjour,
    j'utilise cette liste déroulante qui me retourne les données stockées dans ma db sous la forme 0,1 ou 2
    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
     
    <?php
    			$choix8 = $data2['mandat'];  // echo $choix8;
    			$sql8 = 'SELECT id, mandat FROM clients';
    			$req8 = mysql_query($sql8) or die('Erreur SQL !<br>'.$sql8.'<br>'.mysql_error());
    			//echo $Fmyavar;
    			echo '<select name="typemand">
    			<option></option>';
    			while($data8 = mysql_fetch_assoc($req8)) 
    			{
    			$myavar = $data2['mandat'];
    			echo '<option value="'.$data8['mandat'].'"';
    				if($choix8 == $data8['mandat'])
    					{
    						echo 'selected="selected"';
    					}
    			echo '>'.$Fmyavar.'</option>';
    			}
    			echo '</select>';
    ?>
    Je souhaiterai afficher les données sous forme HG, ASS, DIS (0 étant la valeur pour HG etc...)
    j'utlise le code modifier de cette maniére sans succès.
    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
     
    <?php
    			$choix8 = $data2['mandat'];  // echo $choix8;
    			$sql8 = 'SELECT id, mandat FROM clients';
    			$req8 = mysql_query($sql8) or die('Erreur SQL !<br>'.$sql8.'<br>'.mysql_error());
    			//echo $Fmyavar;
    			echo '<select name="typemand">
    			<option></option>';
    			while($data8 = mysql_fetch_assoc($req8)) 
    			{
    			$myavar = $data2['mandat'];
    			if ($myavar == '0') {$Fmyavar = 'HG';}
    			elseif ($myavar == '1') {$Fmyavar = 'ASS';}
    			elseif ($myavar == '2') {$Fmyavar = 'DIS';}
    			echo '<option value="'.$data8['mandat'].'"';
    				if($choix8 == $data8['mandat'])
    					{
    						echo 'selected="selected"';
    					}
    			echo '>'.$Fmyavar.'</option>';
    			}
    			echo '</select>';
    ?>
    merci pour tes infos.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/05/2013, 10h35
  2. [AJAX] renseigner des input selon choix dans une liste deroulante
    Par abconcept dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/02/2009, 15h06
  3. [AJAX] Liste deroulante à partir d'un input type = 'text'
    Par Equinoxe5 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/02/2009, 09h58
  4. Liste deroulante et 3 champs input=text ?
    Par isa150183 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/07/2006, 00h08
  5. recuperer valeur liste deroulante + mise a jour champs input
    Par dj_kyl dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/03/2006, 18h42

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