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

Langage PHP Discussion :

liste déroulante et SQL


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 487
    Par défaut liste déroulante et SQL
    Bonjour,

    lors d'un remplissage d'un formulaire, l'utilisateur doit sélectionner depuis une liste déroulante son poste. Mon code est le suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <label>Poste:</label>
    <select name="poste" size="1">
    <option value ="1" > Première ligne </option>
    <option value ="2" > Talonneur </option>
    <option value ="3" > Deuxième ligne <option>
    <option value ="4" > Troisième ligne Aile <option>
    <option value ="5" > Troisième ligne Centre <option>
    <option value ="6" > Demi de mêlée <option>
    <option value ="7" > Demi d’ouverture <option>
    <option value ="8" > Trois-quarts centre <option>
    <option value ="9" > Trois-quarts aile <option>
    <option value ="10" > Arrière <option>
    </select>
    une simple liste déroulante, n'est-ce pas ^^

    Mais mon problème, est de savoir comment je peux intégrer l'un des choix dans la base donnée. Et surtout comment se présente la requête ...

    Merci d'avance
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  2. #2
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Par défaut
    Tu veux intégrer les informations venant de ta dB dans la liste de choix, c'est ça ?

    Si oui, un truc du genre devrait fonctionner, en l'adaptant à ta dB (bon, c'est un peu.. beurk, pas PDO... mais tu peux voir ici pour 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
    <label>Poste:</label>
    <select id="id_mieux_si_choix_unique" name="poste" size="1">
    	<option value="none">Selection</option>
     
    <?php
     
    	$my_connexion = connect_db(false); /* ta fonction mysql_connect */
    	$query = mysql_query("SELECT id, poste FROM table_rugby ORDER BY id");
    	while ($back = mysql_fetch_assoc($query)) {
    		echo '<option value="' . $back['id'] . '">' . $back['poste'] . '</option>';
    	}
    	mysql_close($my_connexion);
    	?>
    </select>
    à noter que les "id" sont uniques, donc peut-être plus appropriés à ta problématique.


    A moins que tu ne veuilles faire le contraire: sauver le choix utilisateur dans ta dB ? Alors c'est plutot ce principe :

    "ce_fichier.php"
    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
     
    <?php
    //session_start();
     
    // Si le formulaire a été "posté"
    if (isset(($_POST['formulaire'])) && trim(strtoupper($_POST['formulaire'])) === "OK" ) {
    	// Tu nettoies un minimum
    	foreach ($_POST as $k=>$v) {
    		$value = htmlspecialchars(stripslashes($v));
    		$_POST[$k] = trim($value);
    	}
    	// Tu sauves dans ta db, admettant que le premier champ de "ta_table" soit un id auto incrémenté
    	$connection = mysql_connect("ta_base");
    	if ($connection) {
    		$table = "ma_table";
    		$sql = "INSERT INTO %s VALUES('', '%d')";
    		$query = mysql_query(sprintf($sql, mysql_escape_string($table), mysql_escape_string($_POST['poste'])));
    		 /* mysql_escape_string: dépréciée en PHP5.3..*/
    		$result = mysql_affected_rows(); 
    	}
    }
     
    ?>
     
    	<form method="post" action="ce_fichier.php">
    		<label>Poste:</label>
    		<select name="poste" size="1">
    		<option value ="1" > Première ligne </option>
    		<option value ="2" > Talonneur </option>
    		<option value ="3" > Deuxième ligne <option>
    		<option value ="4" > Troisième ligne Aile <option>
    		<option value ="5" > Troisième ligne Centre <option>
    		<option value ="6" > Demi de mêlée <option>
    		<option value ="7" > Demi d’ouverture <option>
    		<option value ="8" > Trois-quarts centre <option>
    		<option value ="9" > Trois-quarts aile <option>
    		<option value ="10" > Arrière <option>
    		</select>
     
    		<input type="hidden" name="source" value="ce_fichier.php" />
    		<input type="submit" name="formulaire" value="   OK   "  />
    	</form>
    C'est juste une piste. Il y a de nombreuses autres possibilités. Entre autres, Ajax.

  3. #3
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    le scanf %d me chagrine un peut dans le sens ou mysql_real_...string() retoune une chaine.

    ça aussi, mais pour des raisons irrationnelles, j'ai toujours l'impression qu'on devrait laisser POST,GET et REQUEST en lecture seule et donc éviter ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST[$k] = trim($value);
    c'est irrationnel, me me demandez pas d'explication.

    Le stripslashes() n'est utile que si les magic quote sont activées, d'autant plus que tu utilises correctement mysql...string().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" name="formulaire" value="   OK   "  />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( isset($_POST['formulaire']) && ... )
    Il ne faut pas se baser là dessus, j'ai appris à mes dépends que IE n'envoie pas toujours la variable du formulaire contenue dans le bouton de type submit. Personnellement j'aurrai plutot utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( isset($_POST['poste'] ) )
    comme ça tu vérifies si la variable existe avant de l'utiliser.

    sinon ça devrait marcher correctement.

  4. #4
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Par défaut
    Oui bon, les gouts et les couleurs, j'avais pas dit que c'est le code de l'année

    Je ne pouvais pas le laisser partir sans un minimum indications de contrôle des données $_POST, et pas non plus l'orienter sur un code PDO d'emblée. Juste lui montrer le principe avec un code fonctionnel.

    Ok pour le scanf, avec un %s éventuellement, mais vu le typage des variables php, ça le fait. Et ça dépend aussi de sa dB. Il aura certainement un champ de type tinyint pour son numéro de poste.

    Il ne faut pas se baser là dessus, j'ai appris à mes dépends que IE n'envoie pas toujours la variable du formulaire contenue dans le bouton de type submit.
    ah bon ?? ça serait un scoop ? ça m'intéresse si tu en as plus sur le sujet.

  5. #5
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    ouaip, j'ai.

    http://style-vs-substance.com/develo...rnet-explorer/

    EDIT: pour être précis, avec des vieilles version de IE, lorsque je valide mon formulaire au clavier ou que je le fait à la clicouille, il ne se passait pas la même chose.
    http://stackoverflow.com/questions/2...e-only-asp-net
    http://www.placona.co.uk/183/technol...rnet-explorer/

  6. #6
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Par défaut

Discussions similaires

  1. Liste déroulante Requête SQL Valeur par défaut
    Par nanou42 dans le forum Langage
    Réponses: 6
    Dernier message: 25/10/2012, 11h37
  2. [MySQL] liste déroulante / requete SQL / client-serveur
    Par olivier1209 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/09/2011, 11h12
  3. [MySQL] Liste déroulante php/sql n'affichant pas toutes les données.
    Par Nicolas_k dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/02/2010, 13h01
  4. liste déroulante, requête SQL et valeur par défaut
    Par flukie dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/06/2006, 11h59
  5. SQL + liste déroulante
    Par lious dans le forum Langage SQL
    Réponses: 2
    Dernier message: 24/08/2004, 09h16

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