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