Recherche de codes postaux français.
    Question

    La recherche ne tient pas compte des majuscules/minuscules, ni des caractères accentués.
    Vous pouvez ne taper qu'une partie du mot recherché (ex : si vous cherchez "ch", vous obtiendrez aussi bien "Cholet" que "La Rochelle" ou "Chambery" etc.)
      


    Ci-dessous vous trouverez le source du fichier cpfr.html, mais d'abord quelques précisions... La recherche utilise une table nommée codpos qui contient quatre champs : "id" (identifiant unique, n° de ligne), "ville", "ville2" (le même champ que "ville" mais sans les accents) et "cp". 39070 codes postaux français y sont répertoriés.


    <?
    /* Recherche de codes postaux français. Script PHP/FI 2.0 (1998-bea@altern.org) */
    
    /* Tant que le formulaire de recherche n'a pas été envoyé, on l'affiche */
    
    if ($valeur == ""); 
    
    echo "<CENTER><FONT SIZE=5 COLOR=\"#004080\"><B>Recherche de codes postaux français.</B></FONT>";
    echo "<HR NOSHADE>";
    
    echo "<form method=\"post\" action=\"cpfr.html\">";
    echo " <table width=40% border=5 cellpadding=2 cellspacing=0  BGCOLOR=\"#38B1C7\">";
    echo " <tr><td align=center>";
    echo "<font size=+2>Question</font><br><HR NOSHADE>";
    
    /* Juste quelques petits commentaires pour aider l'utilisateur dans sa recherche */
    
    echo "<FONT SIZE=2>La recherche ne tient pas compte des majuscules/minuscules, ";
    echo "ni des caractères accentués.";
    echo " <BR>Vous pouvez ne taper qu'une partie du mot ";
    echo "recherché (ex : si vous cherchez \"ch\", vous obtiendrez aussi ";
    echo "bien \"Cholet\" que \"La Rochelle\" ou \"Chambery\" etc.)</FONT></td></tr>";
    echo "<TR>";
    echo "<TD align=center>";
    
    /* Récupération de l'info à rechercher */
    
    echo "  <input name=valeur type=text size=25 value=\"\">";
    echo "</td></tr>";
    echo "</table>";
    echo "<p>";
    echo "<input TYPE=submit NAME=\"envoi\" VALUE=\"Rechercher\">";
    echo "<p>";
    echo "</form>";
    
    else;    /* Si la variable $valeur n'est pas vide, on procède à la recherche */
    
    /* Définition de la requête, soit la ville contient la chaîne recherchée, soit le code postal commence par la chaîne recherchée. */
    /* Les signes "%" servent à remplacer n'importe quel morceau de chaîne de caractères. Si la valeur recherchée est 49, */
    /* la requête deviendra */ 
    /* $requete = ville like '%49%' or cp like '49%' */
    /* Il n'y a aucun nom de ville qui contienne '49', donc tous les codes postaux commençant par 49 seront affichés */
    
    /* On commence par supprimer tous les caractères accentués */
    /* qui seraient présents dans le critère de recherche */
    
    $valeur = ereg_replace("[ÀÁÂÃÄÅàáâãäå]","a",$valeur); 
    $valeur = ereg_replace("[Çç]","c",$valeur); 
    $valeur = ereg_replace("[Ññ]","n",$valeur); 
    $valeur = ereg_replace("[ÈÉÊËèéêë]","e",$valeur); 
    $valeur = ereg_replace("[ÒÓÔÕÖØòóôõöø]","o",$valeur); 
    $valeur = ereg_replace("[ÌÍÎÏìíîï]","i",$valeur); 
    $valeur = ereg_replace("[ÙÚÛÜùúûü]","u",$valeur); 
    
    /* La requête est faite sur le champ "ville2" qui est une copie */
    /* de "ville" mais sans les accents */
    
    $requete = "ville2 like '%$valeur%' || cp like '$valeur%'";
    $table = "codpos";
    
    $result = mysql("any","select * from $table where $requete order by ville");
    >
    
    <!-- Affichage des résultats -->
    <FONT SIZE=5 COLOR="#004080"><B>Résultat de la recherche</B></FONT>
    <HR NOSHADE>
    <?
    
    /* nombre d'enregistrements trouvés */
    
    $num = mysql_numrows($result);
    if ($num == 0);
      echo "Aucun enregistrement ne correspond à la requête";
    
    else;  /* Si le nbre d'enregistrements trouvés est supérieur à 0 */
    
    /* Affichage des enregistrements trouvés */;
    
      $fields = mysql_numfields($result);
    
      echo "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=1 ALIGN=CENTER>";
      echo "<TR><TD BGCOLOR=\"#38B1C7\"><B> Ville</TD>";
      echo "<TD BGCOLOR=\"#38B1C7\"><B> Code postal </TD></TR>";
    
      $i=0;
      while ($i < $num);
        $ville      = mysql_result($result,$i,"ville");
        $cp         = mysql_result($result,$i,"cp");
        
        echo "<TR><TD> $ville </TD><TD ALIGN=CENTER>$cp</TD></TR>";
    
        $i = $i + 1;
      endwhile;
    
      echo "</TABLE>";
    
    endif;           /* fin de boucle "if enregistrements trouvés" */;
    endif;           /* fin de boucle "if (!$envoi) */;
    >
    

    Page consultée fois.