Pb éxécution script

cs_bricelo Messages postés 5 Date d'inscription lundi 28 juin 2004 Statut Membre Dernière intervention 25 janvier 2008 - 21 janv. 2008 à 11:07
cs_bricelo Messages postés 5 Date d'inscription lundi 28 juin 2004 Statut Membre Dernière intervention 25 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.

8 réponses

nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 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
0
cs_bricelo Messages postés 5 Date d'inscription lundi 28 juin 2004 Statut Membre Dernière intervention 25 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.

Merci de m'éclairer.

Cordialement.
0
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
23 janv. 2008 à 08:56
Et en html ça donne quoi ?

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
0
cs_bricelo Messages postés 5 Date d'inscription lundi 28 juin 2004 Statut Membre Dernière intervention 25 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



($resultat14)){
    $tableau[$i][
0
] = $data[
'numeros_cp'



];
    $tableau[$i][
1
] = $data[
'nom_commune'



];
   
echo
"new Array('"
.$data
["numeros_cp"
]."','".$data[
"nom_commune
"]."'),"



;
    $i
++



;
}

?>

</script>


sur la page devis, j'ai un champ code postal dans lequel on entre le cp ex:28130

<input name="cp" type="text" class="Texte_normal2" id="cp" onBlur="recherche_ville()" size="10" maxlength="5"    />

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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
23 janv. 2008 à 18:04
Re,
j'ai été voir le code html de ta page, à quoi correspont tableauXX (XX étant un numéro) ?

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
0
cs_bricelo Messages postés 5 Date d'inscription lundi 28 juin 2004 Statut Membre Dernière intervention 25 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é.

CDT

Bricelo
0
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 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
0
cs_bricelo Messages postés 5 Date d'inscription lundi 28 juin 2004 Statut Membre Dernière intervention 25 janvier 2008
25 janv. 2008 à 08:49
Bonjour,

j'ai corrigé le ==.

En ce qui concerne ajax, je ne connais pas mais je vais me pencher dessus.
Je te remerci pour tes conseils.

CDT

Bricelo
0
Rejoignez-nous