|
Posté le 04/05/2009 @ 11:43 |
Petit astucien
| Bonjour voici deux listes qui se remplissent avec une base de données mysql j'arrive à remplir ma 2eme liste en rechargeant ma page et passant une variable dans l'url mais comment faire sans rechagarger la page ?? etant débutant en javascript ...
[code] <html> <head> <meta http-equiv="Content-Language" content="en" /> <meta name="GENERATOR" content="PHPEclipse 1.0" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>title</title> </head>
<body> <select id="SelectDepNais" name="F_CT_DNAIS" onChange="window.location='mapage.php?ValueSelect='+this.value"> <?php require_once('../cfg/setup.inc.php'); $Dblocal = $Db->M_clone(); $sql = "SELECT * FROM t_departements"; $Dblocal->M_ExecSql($sql) ; while($rows = $Dblocal->M_MoveNext()) { @$departement = $Dblocal->current['departement'] ; @$Numero = $Dblocal->current['Numero'] ; echo("<option value='$Numero'>$Numero - $departement</option>"); } ?> </select> <p>Ville de naissance : <select name='F_CT_VNAIS'> <?php @$ValueSelect = $_GET["ValueSelect"]; $sql = "SELECT communes FROM t_communes WHERE NumDepartement = '$ValueSelect' "; $Dblocal->M_ExecSql($sql) ; while($rows = $Dblocal->M_MoveNext()) { @$communes = $Dblocal->current['communes'] ; echo("<option value='$communes'>$ValueSelect - $communes</option>"); } ?> </select>
</body> </html>
[/code]
PS : pardon pour les balise code une petite aide pour cela aussi serai la bienvenue Modifié par enibib le 04/05/2009 11:44
|
|
|
|
|
|
Posté le 05/05/2009 à 13:55 |
Petit astucien
| personne ? |
|
Posté le 06/05/2009 à 17:00 |
Petit astucien
| |
|
Posté le 06/05/2009 à 17:40 |
| hello!
Patiente un peu, il y a quelques codeurs très doués sur le forum, mais bon, ils ont leur vie et leur taf aussi donc ils viennent mais parfois, il faut patienter un peu |
|
Posté le 11/05/2009 à 08:43 |
Petit astucien
| ogd a écrit :
hello!
Patiente un peu, il y a quelques codeurs très doués sur le forum, mais bon, ils ont leur vie et leur taf aussi donc ils viennent mais parfois, il faut patienter un peu
... |
|
Posté le 12/05/2009 à 19:31 |
Astucien | Hello,
Javascript est côté client. MySQL est côté serveur. Tu ne peux donc pas, avec javascript seul, remplir ton second champ.
pour cela, il existe une solution : l'AJAX (javascript couplé à l'XML) qui te demande une petite page PHP pour faire tes requêtes.
Les tutos foisonnent sur les moteurs de recherche :)
Attention cependant, si javasript est désactivé, ou pour le référencement, ça ne marchera pas. |
|
Posté le 13/05/2009 à 09:17 |
Petit astucien
| Oui je me suis lancer dans une solution AJAX pas trop le choix je crois .
Mais j'ai quelque petit soucis (j'ai voulu adapter un exemple trouver sur la toile).
Voici mon code :
<html> <head> </head> <body> <?php require_once('...); $Dblocal = $Db->M_clone(); $Dblocal2 = $Db->M_clone(); $DepPHP = array(); $VillePHP = array(); $sql = "SELECT * FROM t_departements"; //execution de ma requete $Dblocal->M_ExecSql($sql) ; $j = 0; //on recupere dans les tableaux les dep et les villes while($rows = $Dblocal->M_MoveNext()) { @$departement = $Dblocal->current['departement'] ; @$Numero = $Dblocal->current['Numero'] ; $DepPHP[$j] = array($Numero,$departement) ; //Nouvelles villes $sql2 = "SELECT communes FROM t_communes WHERE Numero = '$Numero' "; //execution de ma requete $Dblocal2->M_ExecSql($sql2) ; $i = 0; while($rows2 = $Dblocal2->M_MoveNext()) { @$communes = $Dblocal2->current['communes'] ; $VillePHP[$j][$i] = array($Numero,$communes) ; $i++; } $j ++; } ?> <script type="text/javascript" language="javascript"> function filltheselect(liste, choix) {
switch (liste) { case "listedep": raz("listeville"); alert ("sa marche"); var b ; var a ; <?php for($i=0; $i< count($VillePHP[23]); $i++) { ?> a = "<? echo $VillePHP[23][$i][1]?>"; b = "<? echo $VillePHP[23][$i][0]?>"; new_option = new Option(a ,b); document.formu.elements["listeville"].options[document.formu.elements["listeville"].length]=new_option; <?php } ?> break; } } function raz(liste) {
l=document.formu.elements[liste].length; for (i=l; i>=0; i--) document.formu.elements[liste].options[i]=null; }
</script>
<form name="formu"> Choisir un departement <select name="listedep" onChange='filltheselect(this.name, this.value)'> <?php for ($i=0; $i < count($DepPHP); $i++) { echo("<option value=" .$DepPHP[$i][0].">" .$DepPHP[$i][1]); } ?> </select> Choisir une ville <select name="listeville"> <?php for ($i=0; $i < count($VillePHP[0]); $i++) { echo("<option value=" .$VillePHP[0][$i][0].">" .$VillePHP[0][$i][1]); } ?> </select> </form> </body> </html>
Mon code marche bien mais le problème est que lorsque je change de valeur ma première liste ( departement ) je rempli la deuxième qu'avec les ville du departement 23 ,mais normal .Pour remedier à celà il faudrais que j'utilise la variable "choix" que je passe en paramètre de ma fonction "filltheselect" mais je n'y arrive pas .Comment passer une variable javascript dans mon php ??
j'aimerai avoir une solution qui ressemble a ca :
$Nb = choix;
for($i=0; $i< count($VillePHP[$Nb]); $i++) { ?> a = "<? echo $VillePHP[$Nb][$i][1]?>"; b = "<? echo $VillePHP[$Nb][$i][0]?>"; new_option = new Option(a ,b); document.formu.elements["listeville"].options[document.formu.elements["listeville"].length]=new_option; }
PS:j'ai déjà essayer avec un :
$nb = ?>document.write(choix)
Modifié par enibib le 14/05/2009 11:58 |
|
Posté le 13/05/2009 à 22:47 |
Astucien | t'as pas un exemple en ligne ? |
|
Posté le 14/05/2009 à 08:49 |
Petit astucien
| Malcolm a écrit :
t'as pas un exemple en ligne ?
Ah non désolé je n'est pas d'exemple en ligne (je travail en local pour le moment )
Sa aurai était plus simple je sais...
PS : Quelqu'un peut me dire à quoi ressemble les balise [code] sur ce forum svp ?? |
|
Posté le 14/05/2009 à 11:26 |
Petite astucienne
| enibib a écrit :
PS : Quelqu'un peut me dire à quoi ressemble les balise [code] sur ce forum svp ??
Ce forum informatique est un peu comme une voiture de base sans les options...autrement dit l'allume-cigare s'appelle "citation" ici (la crise mon ami, elle touche tout le monde !) |
|
Posté le 14/05/2009 à 15:51 |
Petit astucien
| Changement radical de methode car il me semble impossible de traiter mes tableaux PHP avec du java (JS coté client , PHP coté serveur => , étant débutant j'apprend )
J'ai donc décidé de remplir des tableaux javascript ;plus facile a traiter par la suite .
<html> <head> </head> <body> <?php require_once('..'); $Dblocal = $Db->M_clone(); $Dblocal2 = $Db->M_clone(); ?> <script type="text/javascript" language="javascript"> var Dep = new Array; var ville=new Array; <? $sql = "SELECT * FROM t_departements"; //execution de ma requete $Dblocal->M_ExecSql($sql) ; $j = 0; //on recupere dans les tableaux les dep et les villes while($rows = $Dblocal->M_MoveNext()) { @$departement = $Dblocal->current['departement'] ; @$Numero = $Dblocal->current['Numero'] ; ?> Dep["<?echo $j ;?>"] = new Array("<?echo $Numero ;?>", "<?echo $departement ;?>"); <? //Nouvelles villes $sql2 = "SELECT communes FROM t_communes WHERE Numero = '$Numero' "; //execution de ma requete $Dblocal2->M_ExecSql($sql2) ; $i = 0; while($rows2 = $Dblocal2->M_MoveNext()) { @$communes = $Dblocal2->current['communes'] ; ?> ville[<?echo $j ;?>] = new Array; ville[<?echo $j ;?>][<?echo $i ;?>]=new Array("<?echo $Numero ;?>", "<?echo $communes ;?>"); <? $i++; } $j ++; } ?> function filltheselect(liste, choix) { switch (liste) { case "listedep": raz("listeville"); for (i=0; i<ville[choix].length; i++) { new_option = new Option(ville[choix][i][1],ville[choix][i][0]); document.formu.elements["listeville"].options[document.formu.elements["listeville"].length]=new_option; } break; } } function raz(liste) { l=document.formu.elements[liste].length; for (i=l; i>=0; i--) document.formu.elements[liste].options[i]=null; } </script> <form name="formu"> Choisir un departement <select name="listedep" onChange='filltheselect(this.name, this.value)'> <script language="javascript"> for (i=0; i<Dep.length; i++) { document.write("<option value=\"" +Dep[i][0]+ "\">" +Dep[i][1]); } </script> </select> Choisir une ville <select name="listeville"> <script language="javascript"> for (i=0; i<ville[0].length; i++) { document.write("<option value=\"" +ville[0][i][0]+ "\">" +ville[0][i][1]); } </script> </select> </form> </body> </html>
Mais malheureusement le deuxième tableau ("ville") se remplit mal me semble t-il ... car la deuxième liste naffiche rien dès le début et même lors du choix dans la première liste ...
Mais quel boulet .. |
|
Posté le 15/05/2009 à 16:49 |
Petit astucien
| Un exemple disponnible a cette adresse :
http://lebret.damien.free.fr/Ex/" href="http://lebret.damien.free.fr/Ex/">http://lebret.damien.free.fr/Ex/
Le fichier .php et un .txt sont dispo pour voir le code.
******
Structure de la BDD :
table Dep :
-id
-Numero
-departement
*****
*****
table Com:
-id
-Numero
-ville
***** Modifié par enibib le 15/05/2009 16:49 |
|
Posté le 15/05/2009 à 19:53 |
Astucien | bon, là il manque le principal ...
déjà il y a des balises <script> qui ne sont pas fermées (2) et ensuite, le body n'a pas de contenu ... T'as oublié le formulaire. |
|
Posté le 18/05/2009 à 09:30 |
Petit astucien
| Pour les balise script il me semble qu'elle sont bien fermées
et le formulaire il y est avec deux select alors je comprend pas ... |
|