IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

utilisation de script js plusieurs fois dans une même page


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Par défaut utilisation de script js plusieurs fois dans une même page
    Bonjour tout le monde,

    j'ai un soucis avec javascript;
    j'aimerai afficher autant de fois que l'utilisateur le veut certains champs. J'ai donc creer des objet avec des onchange pour les faire apparaître.
    Seulement, quand j'arrive au dernier onchange et qu'il renvoie au 1er, toutes les autres listes s'effacent pour revenir au même point qu'au depart.
    Je me suis dis que c'etait peu être un problème de nom de champs que j'ai voulu corriger en concatenant un chiffre à la fin du nom du champs. Mais la variable revient également à 0...
    Je vous mets le code pour plus de compréhension.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    <?php
    echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
    ?>
    <html  xml:lang="fr" >
    <head>
    <script type="text/javascript" src="./arrayPHP2JS.js" charset="iso_8859-1"></script>
    <script type="text/javascript" src="./changeValeur.js" charset="iso_8859-1"></script>
    <script type="text/javascript" src="./operateur.js" charset="iso_8859-1"></script>
    <script type="text/javascript" src="./appChamps.js" charset="iso_8859-1"></script>
     
    	<title> Base de données ARECOFA </title>
    	</title>
    	<br/><br/><u><font size=+50 color=seagreen> <center> Test : </center></font></u>
    	<br/><br/><br/><br/>
    	<?php
    	$link=mysql_connect("localhost", "root", "") OR die('Erreur de connexion');
    	mysql_select_db("arecofa");
    	$req=mysql_query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='produit' or TABLE_NAME='fabricant'") or die ("requete impossible");
    	$champs=array();
    	while ($row = mysql_fetch_array($req))
    		{//echo "colonne : $row[0] <br/>";
    		if ($row[0] != "num_fabricant" and $row[0] != "num_de_produit" and $row[0] != "photo" and $row[0] != "adresse" and $row[0] != "description")
    			{$recherche=mysql_query("select distinct $row[0] from produit, fabricant ");
    			$id = 0;
    			$temoin_t=0;
    			//echo "champs : <br/>";
    			while($ligne = mysql_fetch_assoc($recherche))
    				{$p = $row[0];
    				$v = $ligne[$row[0]];
    				if ($temoin_t==0)
    					{$champs[$p]=array();
    					$champs[$p][1] = array();
    					$champs[$p][2] = array();
    					$temoin_t=1;
    					}
    				$champs[$p][1][$id] = $v;
    				$champs[$p][2][$id] = $ligne[$row[0]];
    				$id++;
    				}
    			}
    		else
    			{if($row[0] == "adresse" or $row[0] == "description")
    				{$p = $row[0];
    				$champs[$p] = array();
    				$champs[$p][1] = array();
    				$champs[$p][2] = array();
    				$champs[$p][1][0] = "";
    				$champs[$p][2][0] = "";
    				}
    			}
    		}
    		$chaine = htmlspecialchars(serialize($champs), ENT_QUOTES);
    		?>
    		<script type="text/javascript">
    		/* <![CDATA[ */
    		<!--
    		/*
    		* Ici, on transmets la chaîne sérialisée à JavaScript 
    		* pour la transformer en tableau indexé JavaScript 
    		*/
    		var tableau = new PhpArray2Js('<?php echo $chaine; ?>');
    		var tab = tableau.retour();
    		var k =0;
    		// -->
    		/* ]]> */
    		</script>
    	</head>
    	<body style="background:lightgreen" link=darkgreen vlink=green>
    		<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgprod">
    		<legend>Sélectionnez un champs puis une condition et une valeur </legend>
    		<select name="champs0" id="champs0" onchange="changeValeur(tab,this.value,k);">
    		  <option value="vide">- - - Choisissez un champs - - -</option>
    			<?php
                            /* Construction de la première liste : on se sert du tableau PHP */
                            $nbr = count($champs);
                            foreach($champs as $nr => $nom)
                                    {$ch = "$nr"."0";
                                    ?>
    				<option value="<?php echo($ch); ?>"><?php echo($nr); ?></option>
    				<?php
                                    }
                            ?>
    		</select>
     
    	  <span id="blocValeur"></span>
     
     
    	  <br/><br/>
    	  <input type="submit" name="ok" id="ok" value="Envoyer" />
    		</form>
    	</body>
    </html>
    fichiers javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    /* On crée la fonction qui va construire la seconde liste déroulante */
    function changeValeur(tab, champs_reg, k)
    	{var reg = /^[a-zA-Z]+/;
    	var champs = reg.exec(champs_reg);
    	if(champs != "vide" && champs != "description" && champs != "adresse")
    		{var nbd = tab[champs][1].length;
    		form_d += '<select name="condition" id="condition" > <option value="vide">- - - Choisissez une condition - - -</option> <option value="egal">égal</option> <option value="sup">supérieur à </option> <option value="inf">inférieur à</option> <option value="sup_eg">supérieur ou égal à</option> <option value="inf_eg">inférieur ou égal à</option> <option value="plus_gd"> le plus grand </option> <option value="plus_petit">le plus petit</option> </select> ';
    		form_d  += '<select name="valeur" id="nom_valeur" onchange="operateur(tab, this.value,k);">';
    		form_d  += '<option value="vide">- - - Choisissez une valeur - - -</option>';
    		for(var j = 0;  j < nbd; j++)
    			{if (tab[champs][1][j] != undefined)
    				{form_d += '  <option value="'+ tab[champs][1][j] +k+'">'+ tab[champs][2][j] +'<\/option>';
    				}
    			}
    		form_d += '<\/select>';
    		}
        else
        {if(champs == "adresse" || champs == "description")
    		{var form_d = '<select name="condition" id="condition" > <option value="vide">- - - Choisissez une condition - - -</option> <option value="contient">contient</option> <option value="contient_pas"> ne contient pas </option> </select> ';
    		form_d  += '<input type="text" name = "'+ champs +k+'" value = "Tapez votre recherche ici" size = "50" onchange="operateur(tab, this.value,k);" />';
    		}
    	else
    		{form_d = "";
    		}
        }
    	form_d += 'k : '+k+' <br/><br/><span id="blocOperateur"></span>';
        document.getElementById("blocValeur").innerHTML = form_d;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function operateur(tab, champs,k)
    	{k++;
    	if(champs != "vide")
    		{var form_d = 'k : '+k+' Choisissez une condition si vous voulez rajouter un élément de recherche <br/>';
    		form_d += '<select name="operateur" id="operateur" onchange="appChamps(tab,this.value,k);"> <option value="vide"></option> <option value="et">ET</option> <option value="ou">OU</option> </select> ';
    		}
     
        else
    		{var form_d = "";
    		}
    	form_d += '<br/><br/><span id="blocChamps"></span>';
        document.getElementById("blocOperateur").innerHTML = form_d;
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    function appChamps(tab, champs,k)
    	{if(champs != "vide")
    		{var form_d = '<select name="champs" id="nom_champs" onchange="changeValeur(tab, this.value,k);">';
    		form_d  += '<option value="vide">- - - Choisissez un champs - - -</option>';
    		for (i in tab)
    			{form_d += '<option value="'+i+k+'">'+i+'</option>';
    			}
    		form_d += '</select> ';
    		}
        else
    		{var form_d = "";
    		}
    	form_d += '<br/><br/><span id="blocValeur"></span>';
        document.getElementById("blocChamps").innerHTML = form_d;
    }
    Merci à tous ceux qui ont pris la peine de me lire !

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Bonjour,

    Je n'ai pas lu plus loin que le code PHP car dans ta génération du HTML il manque la fermeture de la balise HEAD...

    devyan

  3. #3
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Par défaut
    Merci de l'attention que tu as porté a mon code.
    Cependant, je viens de le relire et ma fermeture de balise ne manque pas...

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    J'ai vu ceci dans HEAD et ai pensé qu'il était terminé ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<title> Base de données ARECOFA </title>
    	</title>
    	<br/><br/><u><font size=+50 color=seagreen> <center> Test : </center></font></u>
    	<br/><br/><br/><br/>

Discussions similaires

  1. [Python 2.X] Ecrire plusieur fois dans une même cellule excel
    Par stagière38 dans le forum Général Python
    Réponses: 7
    Dernier message: 01/07/2014, 13h53
  2. [2.x] Utiliser le même formulaire plusieurs fois dans la même page
    Par Daecarios dans le forum Symfony
    Réponses: 3
    Dernier message: 06/07/2012, 14h53
  3. Réponses: 4
    Dernier message: 21/11/2007, 12h19
  4. Réponses: 11
    Dernier message: 07/08/2007, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo