> Tous les forums > Forum Forum des Webmasters
 Passage de variable sans rechargement de page
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
enibib
  Posté le 04/05/2009 @ 11:43 
Aller en bas de la page 
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
Publicité
enibib
 Posté le 05/05/2009 à 13:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

personne ?

enibib
 Posté le 06/05/2009 à 17:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

ogd
 Posté le 06/05/2009 à 17:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

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

enibib
 Posté le 11/05/2009 à 08:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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

...

Malcolm
 Posté le 12/05/2009 à 19:31 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  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.

enibib
 Posté le 13/05/2009 à 09:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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
Malcolm
 Posté le 13/05/2009 à 22:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

t'as pas un exemple en ligne ?

enibib
 Posté le 14/05/2009 à 08:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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 ??

Publicité
loool
 Posté le 14/05/2009 à 11:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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 !)

enibib
 Posté le 14/05/2009 à 15:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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 ..

enibib
 Posté le 15/05/2009 à 16:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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
Malcolm
 Posté le 15/05/2009 à 19:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  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.

enibib
 Posté le 18/05/2009 à 09:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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 ...

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Sujets relatifs
Passer à la page sans cadre
Insertion image dans page Web directement sans URL ?
créer une page web sans codage avec photoshop
Rechargement de page HTML
Passage de variable et affichage
Passage de tableau lors d'un changement de page.
page PHP sans saut de ligne
Rechargement de page et ancre. Pb IE et FF
passage variable avec header
besoin d'aide. passage de variable
Plus de sujets relatifs à Passage de variable sans rechargement de page
 > Tous les forums > Forum Forum des Webmasters