Formulaire

Signaler
Messages postés
3
Date d'inscription
dimanche 9 novembre 2008
Statut
Membre
Dernière intervention
10 novembre 2008
-
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
-
Bonjour,

Je fais un site un peu complexe pour gérer des livraisons. Pour cela, j'ai un formulaire ou je choisi le département de livraison. Par Javascript, j'ai une liste déroulante qui s'implemente des communes du département. Cela marche bien. Le problème est qu'il existe des zones.

Voici les codes :

fichier ges_livraison.php
<quote><label for="departement"> Département de l'intervention : </label><select size="1" name="departement" id="departement" onchange="go()"><option value="-1">Choisissez le département</option><?php
$res = mysql_query("SELECT * FROM departement ORDER BY numero");
while($row = mysql_fetch_assoc($res))
{
echo "<option value="'".$row["numero"]."'"?>".$row["numero"].' - '.$row["nom"]."";
}
?>
</select>
<label>commune</label>
<select name="communes"><option value="-1">Choisir une commune</option></select>
</quote>

fichier menu.php

<quote><!-- DEBUT SCRIPT LISTE DEROULANTE -->
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
}

/**
* Méthode qui sera appelée sur le click du bouton
*/
function go(){
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState 4 && xhr.status 200){
leselect = xhr.responseText;
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('communes').innerHTML = leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","livraison/ajaxLivre.php",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// ne pas oublier de poster les arguments
// ici, l'id du departement
sel = document.getElementById('departement');
iddepartement = sel.options[sel.selectedIndex].value;
xhr.send("idDepartement="+iddepartement);
}

<!-- FIN SCRIPT LISTE DEROULANTE --></quote>

fichier ajaxLivre.php

<quote><?php
$lieu = $_SESSION['lieu'];
$zone = $_SESSION['zone'];
echo "<select name="'communes'"?>";
if(isset($_POST["idDepartement"]))
{
//if ($zone '0' OR $zone'1')
//{
include ("../administration/connect_sql.php");
$res = mysql_query("SELECT * FROM zonemagasin WHERE departement='".$_POST["idDepartement"]."' ORDER BY commune");
while($row = mysql_fetch_assoc($res))
{
echo "<option value="".utf8_encode($row["commune"])."">".utf8_encode($row["commune"])."</option>";
echo "<option>".$zone."</option>";
}
//}
//else
//{
// $res = mysql_query("SELECT * FROM zonemagasin WHERE (departement=".$_POST["idDepartement"].") ORDER BY commune");
// while($row = mysql_fetch_assoc($res))
// {
// echo "<option value="".utf8_encode($row["commune"])."">".utf8_encode($row["commune"])."</option>";
// }
//}
}
echo "";
?>

</quote>

Je pensais passer la variable par le value du formulaire, mais je sais pas comment traiter deux variables.

7 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
bonjour,
tenet une meilleur mise en forme, là c'est illisible
si tu n'y parviens pas ( mais il n'y a pas de riaosns )
    clique sur :
[../infomsg.aspx?ajout=&ID=1226583&txtmode=0 Si vous n'arrivez pas à saisir votre message, CLIQUEZ ICI pour revenir à une "TextBox classique"]

en dessous du bouton ajouter

ne met pas de php !
comment on devine le contenu de ta base de données ? celui des $variables !

dernière recommandations : un extrait ! le nécessaire et pas plus
                                       explicite un peu ton souci... j'ai rien compris
Cordialement          Bul [mon Site] [M'écrire]         

membre du CCC#0
Messages postés
3
Date d'inscription
dimanche 9 novembre 2008
Statut
Membre
Dernière intervention
10 novembre 2008

Bonjour, Je fais un site un peu complexe pour gérer des livraisons. En fait, je gère des livraisons à partir de plusieurs lieux de départ. Dans un rayon de 50 km, il y a des zones. Nous ne pouvons mettre qu'une seule zone par demi-journée en sachant que c'est la première livraison qui détermine la zone.

J'ai deux listes déroulantes. La première pour choisir le département, et la deuxième qui affiche les communes du département. Pour cela, j'utilise le javascript. Le problème est que je souhaite afficher que les communes étant dans la bonne zone.

ges_livraison.php :

<label for="departement"> Département de l'intervention : </label>
<select size='1' name='departement' id='departement' onchange='go()'' >
<option value="-1">Choisissez le département</option>
<?php
$res = mysql_query("SELECT * FROM departement ORDER BY numero");
while($row = mysql_fetch_assoc($res))
{
echo "<option value='".$row["numero"]."'>".$row["numero"].' - '.$row["nom"]."</option>";
}
?>
</select>

<label>commune</label>


<select name='communes'>
<option value='-1'>Choisir une commune</option>
</select>



fichier menu.php

function getXhr()
{
var xhr null; if(window.XMLHttpRequest) // Firefox et autres xhr new XMLHttpRequest(); else if(window.ActiveXObject)
{
// Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{ // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
} /** * Méthode qui sera appelée sur le click du bouton */
function go()
{
var xhr getXhr(); // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange function()
{
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState 4 && xhr.status 200)
{
leselect = xhr.responseText;
// On se sert de innerHTML pour rajouter les options a la liste document.getElementById('communes').innerHTML = leselect;
}
} // Ici on va voir comment faire du post
xhr.open("POST","livraison/ajaxLivre.php",true); // ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier de poster les arguments // ici, l'id du departement
sel = document.getElementById('departement');
iddepartement = sel.options[sel.selectedIndex].value;
xhr.send("idDepartement="+iddepartement);
}
fichier ajaxLivre.php ";

echo "<select name='communes'>";
if(isset($_GET["iddepartement"]))
{
//if ($zone '0' OR $zone'1')
//{
include ("../administration/connect_sql.php");
$res = mysql_query("SELECT * FROM zonemagasin WHERE departement='".$_GET["iddepartement"]."' ORDER BY commune");
while($row = mysql_fetch_assoc($res))
{
echo "<option value='".utf8_encode($row["commune"])."'>".utf8_encode($row["commune"])."</option>";
echo "<option>".$zone."</option>";
}


Je pensais passer la variable par le value du formulaire, mais je sais pas comment traiter deux variables. La deuxième soulution est l'utilisation des sessions mais inconnu avec javascript.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
>>J'ai deux listes déroulantes. La première pour choisir le département,
et la deuxième qui affiche
>> les communes du département. Pour cela,
j'utilise le javascript. Le problème est que je souhaite
>>afficher que
les communes étant dans la bonne zone.


t'as pas du cherche bien longtemps... si ?
c'est l'histoire des select liés, probablement
sujet récurent
exemple ici ( javascript pur, php pur, ajax )

et bien que j'ai demandé de ne pas mettre de php, tu en laisses ?
tu le fais exprès, tu ne lis pas ?  tu n'as pas compris ?

          Bul [mon Site] [M'écrire]         
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
Salut,

Bultez++

Bon, ton problème c'est pas du javascript, normalement on devrai pas te répondre mais bon...

La prochaine fois, cible mieux ton problème (débogue, firebug, DOMinspector) !

Il s'agit d'une requête un peut spéciale, il faut utiliser la clause where comme cela :
$sql "SELECT id, commune FROM table_commune WHERE id '".$id_departement."'"; // Dans cette requête, toutes les communes d'un département doivent obligatoirement avoir le même id que lui et la variable $id doit être issu d'une requête qui cherche a quelle id correspond un département.

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
3
Date d'inscription
dimanche 9 novembre 2008
Statut
Membre
Dernière intervention
10 novembre 2008

Excuse moi, mais je connais les select liés. Si tu avais lu mon message, tu aurai vu que j'ai un problème avec la deuxième variable. Avant d'e^tre aggressif dans tes messages, lis bien et donne les bonnes réponses...
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
Re,

Excuse moi mais ce n'est pas Bul qui est en difficulé donc si j'étais toi je ne lui lancerai pas de pic comme ça, sinon aucune chance de réponse de sa part et de la part de ses copains.

Bul n'a jamais été agressif ou impolie.

Il t'a fait remarqué que tu avais du php et qu'il voulait que tu le retire et toi tu insiste en continuant a nous mettre du php, ici on est sur javascriptfr donc on répond a des problème de javascript exclusivement.

"lit bien et donne les bonnes réponses"
      Pitoyable, je me demande comment on a fait pour te répondre sans s'énerver.
      Petite explication :
            - Bul a très bien lu ta question et il a même lu le code vu qu'il t'a demander de retirer le php, ce que tu n'a pas fait (a la place tu lui banlance des pics)
            - Bul a toujours très bien répondu aux question et des milliers de membres pouront te le certifier donc je serai toi je baisserai le ton, pour moi il a bien répondu, c'est effectivement un problème de select liés, pour moi Bul est un mec très cool et sympas, je le considère comme un ami(je ne sais pas si c'est réciproque) et ça me met hors de moi des réponses comme celle ci donc je pense que ton commentaire va se retourner contre toi :

- lis bien les réponses et ne fais pas de commentaires de ce genre aux risque de froisser des membres.

Après ce n'est qu'un conseil, si tu ne le suis pas et que tu a des ennuis, je m'en fiche royalement.

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
apprend à regarder les exemples.
         généralement ils fonctionnent.
apprend à écrire correctement,
         tu auras plus de chances d'être compris.
apprend à lire, à comprendre ce qui est écrit,
         rien d'agressif dans mes propos
apprend à apprendre,
         ce n'est pas parce que tu ne connais pas que ça n'existe pas
apprend un minimum de respect,

         ça te servira lorsque tu auras besoin d'aide.

          Bul [mon Site] [M'écrire]