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 sql et php


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Par défaut Liste déroulante sql et php
    Bonjour,
    J'ai crée une liste déroulant qui va me chercher un code postal . exemple:47630
    Je voudrais simplement afficher( dans ma liste déroulante) les 2 premiers nombres: donc dans mon exemple 47
    Comment faire svp ?

    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
    	// Liste déroulante pour trier en fonction des départements :
    	$reponse = mysql_query("SELECT DISTINCT cp FROM matable order by cp");
     
    	?>
     
     
    	<font color="#0a14eb"><b>Choix du département:</b></font>
     
    	<select name="path">
     
    		<?php
     
    		while ($donnees = mysql_fetch_array($reponse))
    		{
    			?>
    			<option value="<?php echo $donnees['cp'];?>">
     
    			<?php echo $donnees['cp'];?>
    			</option>
    			<?php
    		}
    		?>
    	</select>
     
    <input type="submit" value="Trier" />
    </form>


    Merci

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si ton code postal est une chaine de caractères, tu as la fonction [ulr=http://fr.php.net/manual/fr/function.substr.php]substr[/url]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo substr($donnees['cp'], 0, 2);
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Par défaut
    Ok merci.
    Ta solution marche mais j'ai un petit souci.
    Ma liste déroulante m'affiche bien les 2 premiers chiffres. Par contre si j'avais ces codes postaux: 10100, 10200, 10300 alors j'ai dans ma liste déroulante: 10,10,10

    Je ne voudrais avoir qu'une seule fois 10.
    Comment faire ? Dans la requête sql plutôt non ?
    J'ai essayé un truc dans ce style : $reponse = mysql_query("SELECT DISTINCT SUBSTRING(cp,0,2) FROM matable order by cp");

    Mais cela ne m'affiche rien
    PS: cp est de type char sa va ? sinon il faut que je mette quoi dans ma bdd ?

    Merci

  4. #4
    Membre émérite Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Par défaut
    J'aurais dis INT car c'est un nombre

  5. #5
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Par défaut
    Et plus simple direct dans le 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
     
    while ($donnees = mysql_fetch_array($reponse))
    {
    	$cp = substr($donnees['cp'], 0, 2);
    	if(!in_array($cp,$tab_codes) {
    		$tab_codes[] = $cp;
    ?>
     
    		<option value="<?php echo $cp;?>">
     
    		<?php echo $cp;?>
    		</option>
    <?php
    	}
    }
    => on stocke les 2 premiers chiffres du cp dans un tableau, s'il y est déjà, bah on fait rien, on ne traite que les nouvelles entrées...

    ?

  6. #6
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Bonjour,

    Pourquoi faire simple quand on peut faire compliqué ^^

    Tente avec cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT LEFT(cp, 2) AS CPDepartement FROM matable order by cp
    puis tu y accede avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $donnees['CPDepartement'];?>

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Citation Envoyé par Elwyn Voir le message
    J'aurais dis INT car c'est un nombre
    Pour un code postal, une chaîne de caractères, c'est mieux. Sinon, "02100" serait affiché "2100", ce qui n'est plus un code postal "valide" (par exemple).
    En plus, que faire des CP des départements non-métropolitains qui utilisent des lettres ?

Discussions similaires

  1. [MySQL] extraire le choix dans un variable d'une liste déroulante mysql en php
    Par guytibo dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 13/12/2010, 19h17
  2. [MySQL] Liste déroulante et formulaires PHP
    Par Spanish_ dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 22/08/2008, 19h34
  3. Listes déroulantes dépendantes en PHP
    Par neoboy dans le forum Langage
    Réponses: 6
    Dernier message: 29/08/2007, 10h56
  4. [Tableaux] Listes déroulantes dépendantes en php
    Par rach20032 dans le forum Langage
    Réponses: 3
    Dernier message: 25/08/2007, 23h39
  5. Liste déroulante & SQL
    Par Beavis Man dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 16/12/2006, 17h01

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