Je voudrais adapter un programme qui donne le nom d'une commune en fonction du code postal et vice versa pour un association de revendeurs.
La principale différence est q'un code postal ne correspond pas forcément a un revendeur (il peut y avoir 0 réponses)
Je voudrais donc, au cas ou il y a 0 réponse, faire une recherche dans tout le département. Par exemple si la personne entre 85540, je prend les 2 premiers chiffres (85) par une inscruction : substr($codepostal,0,2) et je relance une requette.
Le premier problême que je rencontre c'est que ma variable ne retourne rien : echo substr($codepostal,0,2); alors qu'a un autre endroit du programme la variable $codepostal renvoit bien quelque chose : echo "Code postal: $codepostal , nom de ville contenant: $ville<BR>";
(je suis débutant en php)
Si déja quelqun peut me dire pourquoi ma variable est vide.
Voici le programme :
------------------------
function lance_requete($db, $sql) {
if (! $res=mysql_db_query($db, $sql)) {
echo mysql_error();
exit;
}
return $res;
}
function affichage_resultat($result) {
$nombre=mysql_num_fields($result);
$nbenr = mysql_num_rows($result);
if ($nbenr == 0) {
echo "Il n'y a pas de réponse correpondant à votre code postal.";
echo "<br>Recherche sur l'ensemble du département :";
echo substr($codepostal,0,2); // <= ERREUR ICI
} else {
echo "Il y a $nbenr réponse(s) correpondant à votre demande.";
echo "<table width=90% border=0 cellpadding='2' cellspacing='2'>";
echo "<tr bgcolor=#3e4c55>";
for ($i=0;$i<$nombre;$i++){
echo "<th><font color='#FFFFFF'>";
$nom_zone[$i]=mysql_field_name($result,$i);
echo $nom_zone[$i];
echo "</th></font>";
}
echo "</tr>";
echo "<tr>";
$compteur=0;
while ($compteur<$nbenr)
{
for ($recup=0;$recup<$nombre;$recup++)
{
$val_zone[$recup]=mysql_result($result,$compteur,$nom_zone[$recup]);
if (intval($compteur/2)==$compteur/2)
{
echo "<td bgcolor='#bee0fa'><font color='#000000' size='-1'>$val_zone[$recup]</font></td>";
}
else
{
echo "<td bgcolor='#afdddb'><font color='#000000' size='-1'>$val_zone[$recup]</font></td>";
}
}
echo "</tr>";
$compteur++;
}
echo "</table>";
}
}
$codepostal=trim($codepostal);
// Requete contenant codepostal et ville provenant du formulaire.
$sql="SELECT cp_codpos as code_postal,cp_ville as ville,";
$sql.="cp_adresse as adresse ";
$sql.="FROM codpostal WHERE cp_codpos like '$codepostal%' ";
$sql.="AND cp_ville like '%$ville%' ORDER BY cp_codpos,cp_ville";
If ($res=lance_requete($db,$sql)) {
echo "Revendeurs les plus proches du lieu avec les critères suivants :<br>";
echo "Code postal: $codepostal , nom de ville contenant: $ville<BR>"; // <= ERREUR ICI
affichage_resultat($res);
}
----------------------------Merci
Krysteo
Modération (Zeus) : merci d'utiliser les balises
et [CODE] pour poster du code. Pour cette fois, je l'ai fait pour toi
De plus, j'ai remplacé le surlignage rouge par un commentaire[/color]