cs_bricelo
Messages postés5Date d'inscriptionlundi 28 juin 2004StatutMembreDernière intervention25 janvier 2008
-
21 janv. 2008 à 11:07
cs_bricelo
Messages postés5Date d'inscriptionlundi 28 juin 2004StatutMembreDernière intervention25 janvier 2008
-
25 janv. 2008 à 08:49
Bonjour, j'ai un script js de reconnaissance de code postal qui fonctionne de façon bancal.
En effet l'appel de la fonction fonctionne bien et la première occurence est bien traitée.
function recherche_cp(tableau)
{
var longeur_table= tableau.length;
i=0;
while ((document.getElementById('cp').value!=tableau[i][0]) && (i < longeur_table))
{
/* ici je parcours le tableau pour pouvoir trouver mon code postal */
i++;
}
if (document.getElementById('cp').value==tableau[i][0])
{
/* quand le cp est trouvé j'affiche la ville dans le champ texte de ma feuille */
document.getElementById('ville').value =tableau[i][1];
}
/* à partir de ce point le code n'est plus éxécuté */
else
{
document.getElementById('ville').value= ="le code postal ne correspond a aucune ville";
}
v =0;
/* il arrive qu'un code postal corresponde a plusieurs ville, ici je mais a jour une liste box pour permetre
à l'utilisateur de choisir la ville désirée. */
while (document.getElementById('cp').value= =tableau[i][0])
{
v++;
var newOption = document.createElement("option");
newOption.setAttribute("onclick=","selection_ville(this.value)");
newOption.setAttribute("value",tableau[ i ][1]);
newOption.innerHTML =tableau[i][1];
document.getElementById('ville_multiple').appendChild(newOption);
document.getElementById('ville_multiple').value= tableau[ i ][1];
i++;
}
/* j'affiche m'a liste box si plus d'un code postal est trouve */
if (v>1)
{
document.getElementById('ville_choisie').style.visibility ='visible';
}
else
{
document.getElementById('ville_choisie').style.visibility='hidden';
}
}J'ai du passé à coté de quelque chose.
Merci par avance pour votre aide.
nickadele
Messages postés1251Date d'inscriptionmercredi 7 août 2002StatutModérateurDernière intervention10 avril 2013 22 janv. 2008 à 12:13
Bonjour,
en fait ton problème vient d'ici :
while ((document.getElementById('cp').value!= tableau[i][0]) && (i < longeur_table))
{
/* ici je parcours le tableau pour pouvoir trouver mon code postal */
i++;
}
Il s'agit d'une boucle et à part incrémenter i (i++), il n'y a rien.
Sans avoir testé tu devrait avoir ceci :
while ((document.getElementById('cp').value!=tableau[i][0]) && (i < longeur_table ))
{
/* ici je parcours le tableau pour pouvoir trouver mon code postal */
if (document.getElementById('cp').value == tableau[i][0]) {
/* quand le cp est trouvé j'affiche la ville dans le champ texte de ma feuille */
document.getElementById('ville').value=tableau[ i ][1];
}
/* à partir de ce point le code n'est plus éxécuté */
else
{
document.getElementById('ville').value =="le code postal ne correspond a aucune ville";
}
i++;
}
Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
cs_bricelo
Messages postés5Date d'inscriptionlundi 28 juin 2004StatutMembreDernière intervention25 janvier 2008 22 janv. 2008 à 17:09
Merci Nickadele
en fait j'ai vue d'ou venait une partie de l'erreur
document.getElementById('ville').value=="le code postal ne "
j'assigne une valeur a mon élément avec == alors que un seul suffit (j'ai honte de moi).
Histoire de continuer à m'afficher, je souhaiterais vous soumettre une nouvelle énigme.
J'utilise des tableaux dont les données sont récupérées depuis une bdd MySQL.
Je fais un mix de code PHP et Javascript de manière a ce qu'il soit chargé une seule fois.
Au départ ce code avait été fait pour un site fonctionnant exclusivement sous IE et fonctionnait parafaitement.
Depuis je suis passé sous drupal et la c'est la cata. Sous Firefox mes tableaux sont parfaitement renseignés et je peus récupérér mes valeurs (cf code du premier post) mais sous IE j'ai une erreur de tableau indéfini. J'ai le mauvais préssentiment que le problème vient de Drupal.
Voici le code:
<?php $i=0; ?>
var tableau14 =new Array (<?php while ($data = mysql_fetch_array($resultat14)){
$tableau[$i][0] = $data['numeros_cp'];
$tableau[$i][1] = $data['nom_commune'];
echo"new Array('".$data["numeros_cp"]."','".$data["nom_commune"]."'),";
$i++;
}
?>
Je me rends compte que pour mon premier poste j'abuse.
cs_bricelo
Messages postés5Date d'inscriptionlundi 28 juin 2004StatutMembreDernière intervention25 janvier 2008 23 janv. 2008 à 09:25
Bonjour Nickadele,
Tout d'abord je tiens à te remercie de te pencher sur mon petit problème.
Je ne sais pas si je réponds a ta question mais je vais te décrire le déroulement du chargement de ma page et je te mets les codes qui vont bien.
Je fais appel a une page "devis.php" qui charge mon interface graphique. A la fin du chargement de la page et afin de permettre a l'utilisateur de commencer à travailler je fais éxécuter mes requetes SQL à la fin <?phpinclude req/cp_reg.php ?>
dans cette page j'éxécute mes requêtes.
$query14
="SELECT * FROM cp14"
;
$resultat14=mysql_query
($query14,$base_id);
<script type="
text/javascript
">
<?php
$i=
0
;
?>
var
tableau14 =
new
Array (
<?
php
while ($data =
mysql_fetch_array
après la saisie du cp et en sortant du champ, je vais éxécuter la fonction "recherche_ville()"
function recherche_ville()
{
var i=0;
<!-- récupere la valeur cp dans un tableau pour la décomposer !-->
code_postal=new Array();
code_postal[0]=document.getElementById('cp').value;
valeur_test=
code_postal[0].substring(0,2);
switch (valeur_test)
{
case "47":
recherche_cp(tableau14); C'est ici que ce produit l'erreur IE avec Drupal.
break;
default:
document.getElementById('cp').value=valeur_test;
break;
}
Tu peux te faire une idée du fonctionnement de cette page en allant surwww.blm-it.fr
dans la section devis.
Une nouvelle fois merci pour ton implication.
CDT
Bricelo
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_bricelo
Messages postés5Date d'inscriptionlundi 28 juin 2004StatutMembreDernière intervention25 janvier 2008 23 janv. 2008 à 20:11
re aussi,
j'ai créé 27 table sous mysql dans lesquelles j'y ai mis les CP.
lorsque je fais mes requetes chaque table est mise dans un tableau qui prend au quel j'ai assigné un numeros en fonction de la table interrogé.
donc le table CP1 donne tableau1 etc ...
dans ma première fonction javascript, je prends le cp entré dans ma zone de saisie et j'en extrais les deux premiers chiffres.
ce qui me permet d'appeler la fonction suivante avec le tableau correspondant.
nom_fonction_appelé(tableauXX).
suis-je clair ou ei je répondu a coté ?
c'est peut etre pas tres propre comme façon de coder mais j'étais un peu pressé.
nickadele
Messages postés1251Date d'inscriptionmercredi 7 août 2002StatutModérateurDernière intervention10 avril 2013 23 janv. 2008 à 20:51
Ok,
il existe toujours le problème suivant sur ta page en ligne :
document.getElementById('ville').value=="le code postal ne correspond a aucune ville";
De plus j'ai remarqué que ta page html contenait elle même une autre page html contenant elle même des appel de balises de type header dans le body.
Tout ça ne me semble pas très claire.
Je pense que tu devrais mettre un peu d'ordre au niveau html.
Pour le reste j'ai une seule erreur sous mozilla ligne 567, bonjour les recherches lol.
Proposition : pourquoi ne pas travailler avec ajax pour obtenir le nom de la ville ?
Principe : un utilisateur encode son cp, sur base du résultat une fonction se charge de faire une requète à une page spécifique de ton site. Cette requète du type http://monsite.com/mapagecp.php?code=10254 ne rechargera pas la page de l'utilisateur (c'est le principe d'ajax). La page (mapagecp.php) interroge la DB, si elle trouve un résultat elle le renvoie sinon elle renvoie un message d'erreur.
La fonction réceptionne le résultat et l'affiche dans la zone comme actuellement.
Avantage : Page principale plus légère, plus vite générer (plus besoin des X tableaux) pas besoin de charger toutes les données de la DB, gain de performance coté serveur et client.
Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle