Liste déroulante 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 ?

	// 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

8 réponses

  1. Contributeur
    salut,

    et en le faisant faire au serveur de données ?
    $reponse = mysql_query("SELECT DISTINCT SUBSTRING(cp,0,2) FROM matable order by cp");

    ensuite tu peux remplir ton <select> directement, enfin si la requête fonctionne !
    -:oD
    0
    1. Bon j'ai testé mais malheureusement ma liste devient vide ...
      Merci quand même
      0
  2. es tu sur que tes requetes fonctionnent ? testes les directement sur ta base.
    Ensuite j'utiliserais une petite variable intermédiaire qui récupère que les 2 premièrs chiffres. ainsi tu affiches que le contenu de cette variable.

    Personnellement, j'aurai entrer dans une colonne de la base le numéro du département, et l'aurais récupérer dans ma requête.
    0
    1. Tu est certain de SUBSTRING ??
      0
      1. Contributeur
        moi oui puisque je suis allé la chercher.

        quand tu as des doutes regarde dans le manuel, y a pas plus sûr !
        0
    2. Ok merci c'est bon ... j'ai juste du faire une petite modif:
      $reponse = mysql_query("SELECT DISTINCT SUBSTRING(cp,1,2) as cp FROM matable order by cp");

      Juste une dernière question:

      Quand je clique sur mon bouton, j'affiche des renseignements en fonction du département.
      Avant comme je faisais un recherche par rapport a un département entier, c'étais ok.
      Maintenant il faut que je cherche tous les département qui commence par les 2 premiers nombres.
      
       // On récupére le numéro de département:
      $dpt=$_POST['path']; 
      
      $res = mysql_query("SELECT * FROM jos_cmVScp where cp='$dpt'");
      while ($row = mysql_fetch_array($res))
      {
         <td><? echo $row['cp']; ?></td>
      }
      

      Que faut-il changer dans cette requête : $res = mysql_query("SELECT * FROM jos_cmVScp where cp='$dpt'");

      Il faut placer un like% ou quelque chose dans ce genre?
      Merci pour ton aide
      0
      1. Contributeur
        oui ça doit faire quelque chose comme :
        SELECT * FROM jos_cmVScp where cp LIKE %$dpt

        le plus simple est de tester en direct sur ta BDD, tu auras les messages d'erreur.
        0
        1. Bon j'ai trouvé. Je met la réponse au cas où sa peux servir a quelqu'un:
          $res = mysql_query("SELECT * FROM jos_cmVScp where  cp LIKE '$dpt%'");
          


          Merci "Dalida"
          0
          1. Contributeur
            lol on s'est croisé.

            heureusement pour toi tu te débrouilles tout seul en SQL, parce que j'étais encore aux choux !
            -:oD
            0
        2. Salut,

          si $_POST['path'] est ce que tu récupères de l'autre script, c'est que tu n'as que le début, dans ce cas tu peux mettre : SELECT * FROM jos_cmVScp WHERE cp LIKE('$dpt%')

          EDIT : ^^
          0
          1. Merci pour le temps que vous m'avez consacrés
            0
            1. Contributeur
              pense à cocher "résolu" si c'est le cas et bonne route à toi !
              -;o)
              0