Liste déroulante PHP/JS défectueuse
Zimeur
Messages postés
306
Date d'inscription
Statut
Membre
Dernière intervention
-
Zimeur Messages postés 306 Date d'inscription Statut Membre Dernière intervention -
Zimeur Messages postés 306 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai voulu mettre une liste déroulante sur la page ci-jointe: http://sppowa.free.fr/pages/devoir/ajout_devoir.html
mais lorsque qu'on sélectionne une section, la section ne s'affiche pas comme lorsqu'on choisi la matière, car le choix des fonctionne et est bien lié au choix de la section, mais la section s'affiche pas.
De ce fait l'insertion dans la base de données marche pas :-(
quelqu'un pourrait vérifier mon code ou me donner une autre méthode pour le même résultat svp ??? en PHP ou JS uniquement ;D
mon code html:
<!-- Le corps -->
<div id="corps">
<p>Afin d'ajouter un devoir, veuillez remplir le formulaire ci-dessous:</p>
<p>
<form method="POST" action="ajouter_devoir.php">
<script>
function Choix(form) {
i = form.classe.selectedIndex;
if (i == 0) {
return;
}
switch (i) {
case 1 : var txt = new Array ('matiereag1','matiereag2','matiereag3','','','','','','',''); break;
case 2 : var txt = new Array ('matieream1','matieream2','matieream3','','','','','','',''); break;
case 3 : var txt = new Array ('DAIGL','ALSI','AMSI','GEOSI','MATHS','ECO','DROIT','CULTURE GENERALE','ANGLAIS','ESPAGNOL'); break;
case 4 : var txt = new Array ('matieremuc1','matieremuc2','matieremuc3','','','','','','',''); break;
case 5 : var txt = new Array ('matierenrc1','matierenrc2','matierenrc3','','','','','','',''); break;
}
form.classe.selectedIndex = 0;
for (i=0;i<10;i++) {
form.matiere.options[i+1].text=txt[i];
}
}
</script>
<p>Classe:
<select name="classe" onChange='Choix(this.form)'>
<option>--- Classe ---</option>
<option>AG</option>
<option>AM</option>
<option>IG</option>
<option>MUC</option>
<option>NRC</option>
</select></br>
</p>
<p>Matière:
<select name="matiere">
<option>--- Choisissez une page ---</option>
<option></option>
<option></option>
<option></option>
<option></option>
<option></option>
<option></option>
<option></option>
<option></option>
<option></option>
<option></option>
</select>
</p>
<p>Séance: <input type="text" name="seance" size="5" value="" maxlength="5"></p>
<p>Objectifs Pédagogiques: <br><textarea name="objectifs_peda" maxlength="50"></textarea></p>
<p>Contenu Pédagogique: <br><textarea name="contenu_peda" maxlength="250"></textarea></p>
<p>Support(s) Pédagogique(s): <br><input type="text" name="supports_peda" value="" size="25" maxlength="25"></p>
<p>Durée: <input type="text" name="duree" size="25" value="" maxlength="25"></p>
<p>Semaine: <input type="int" name="semaine" size="2" value="" maxlength="2"></p>
<p>A rendre le: <input type="text" name="a_rendre_le" size="50" value="" maxlength="50"></p>
<p><input type="submit" value="Envoyer" name="envoyer">
</form>
</p>
</div>
code php:
<html>
<head>
<title></title>
</head>
<body>
<?php
$classe = $_POST['classe'];
$matiere = $_POST['matiere'];
$seance = $_POST['seance'];
$objectifs_peda = $_POST['objectifs_peda'];
$contenu_peda = $_POST['contenu_peda'];
$supports_peda = $_POST['supports_peda'];
$duree = $_POST['duree'];
$semaine = $_POST['semaine'];
$a_rendre_le = $_POST['a_rendre_le'];
$db = mysql_connect('hote','log','mdp') or die ('Erreur de connexion '.mysql_error());
mysql_select_db('db_a_use',$db) or die ('Erreur de selection '.mysql_error());
$sql = "INSERT INTO donnees (id, classe, matiere, seance, objectifs_peda, contenu_peda, supports_peda, duree, semaine, a_rendre_le)
VALUES ('','$classe','$matiere','$seance','$objectifs_peda','$contenu_peda','$supports_peda','$duree','$semaine','$a_rendre_le')";
mysql_query($sql) or die ('Erreur SQL !' .$sql. '<br>' .mysql_error());
echo 'Nouveau devoir ajouté !<br><a href="../../../pages/matiere/daigl_1.php">Retour</a> ou aller à l'<a href="../../../index.php">Accueil</a>;
mysql_close();
?>
</body>
</html>
j'ai voulu mettre une liste déroulante sur la page ci-jointe: http://sppowa.free.fr/pages/devoir/ajout_devoir.html
mais lorsque qu'on sélectionne une section, la section ne s'affiche pas comme lorsqu'on choisi la matière, car le choix des fonctionne et est bien lié au choix de la section, mais la section s'affiche pas.
De ce fait l'insertion dans la base de données marche pas :-(
quelqu'un pourrait vérifier mon code ou me donner une autre méthode pour le même résultat svp ??? en PHP ou JS uniquement ;D
mon code html:
<!-- Le corps -->
<div id="corps">
<p>Afin d'ajouter un devoir, veuillez remplir le formulaire ci-dessous:</p>
<p>
<form method="POST" action="ajouter_devoir.php">
<script>
function Choix(form) {
i = form.classe.selectedIndex;
if (i == 0) {
return;
}
switch (i) {
case 1 : var txt = new Array ('matiereag1','matiereag2','matiereag3','','','','','','',''); break;
case 2 : var txt = new Array ('matieream1','matieream2','matieream3','','','','','','',''); break;
case 3 : var txt = new Array ('DAIGL','ALSI','AMSI','GEOSI','MATHS','ECO','DROIT','CULTURE GENERALE','ANGLAIS','ESPAGNOL'); break;
case 4 : var txt = new Array ('matieremuc1','matieremuc2','matieremuc3','','','','','','',''); break;
case 5 : var txt = new Array ('matierenrc1','matierenrc2','matierenrc3','','','','','','',''); break;
}
form.classe.selectedIndex = 0;
for (i=0;i<10;i++) {
form.matiere.options[i+1].text=txt[i];
}
}
</script>
<p>Classe:
<select name="classe" onChange='Choix(this.form)'>
<option>--- Classe ---</option>
<option>AG</option>
<option>AM</option>
<option>IG</option>
<option>MUC</option>
<option>NRC</option>
</select></br>
</p>
<p>Matière:
<select name="matiere">
<option>--- Choisissez une page ---</option>
<option></option>
<option></option>
<option></option>
<option></option>
<option></option>
<option></option>
<option></option>
<option></option>
<option></option>
<option></option>
</select>
</p>
<p>Séance: <input type="text" name="seance" size="5" value="" maxlength="5"></p>
<p>Objectifs Pédagogiques: <br><textarea name="objectifs_peda" maxlength="50"></textarea></p>
<p>Contenu Pédagogique: <br><textarea name="contenu_peda" maxlength="250"></textarea></p>
<p>Support(s) Pédagogique(s): <br><input type="text" name="supports_peda" value="" size="25" maxlength="25"></p>
<p>Durée: <input type="text" name="duree" size="25" value="" maxlength="25"></p>
<p>Semaine: <input type="int" name="semaine" size="2" value="" maxlength="2"></p>
<p>A rendre le: <input type="text" name="a_rendre_le" size="50" value="" maxlength="50"></p>
<p><input type="submit" value="Envoyer" name="envoyer">
</form>
</p>
</div>
code php:
<html>
<head>
<title></title>
</head>
<body>
<?php
$classe = $_POST['classe'];
$matiere = $_POST['matiere'];
$seance = $_POST['seance'];
$objectifs_peda = $_POST['objectifs_peda'];
$contenu_peda = $_POST['contenu_peda'];
$supports_peda = $_POST['supports_peda'];
$duree = $_POST['duree'];
$semaine = $_POST['semaine'];
$a_rendre_le = $_POST['a_rendre_le'];
$db = mysql_connect('hote','log','mdp') or die ('Erreur de connexion '.mysql_error());
mysql_select_db('db_a_use',$db) or die ('Erreur de selection '.mysql_error());
$sql = "INSERT INTO donnees (id, classe, matiere, seance, objectifs_peda, contenu_peda, supports_peda, duree, semaine, a_rendre_le)
VALUES ('','$classe','$matiere','$seance','$objectifs_peda','$contenu_peda','$supports_peda','$duree','$semaine','$a_rendre_le')";
mysql_query($sql) or die ('Erreur SQL !' .$sql. '<br>' .mysql_error());
echo 'Nouveau devoir ajouté !<br><a href="../../../pages/matiere/daigl_1.php">Retour</a> ou aller à l'<a href="../../../index.php">Accueil</a>;
mysql_close();
?>
</body>
</html>
A voir également:
- Liste déroulante PHP/JS défectueuse
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
- Liste code ascii - Guide
- Easy php - Télécharger - Divers Web & Internet
6 réponses
Ah ok ben t'en veux deux c ca ???
Bon jte donne ske g déja donné a un pote sur l'forum
Alors la page valideLD1.php :
include ("connexionBDD.php"); //Connexion BDD
$rq="Select ... FROM ..."; //Requete retournant les éléments que tu souhaite afficher dans la premiere ligne
$rq_pos_id=0; //position dans le SQL de la clé de la liste déroulante
$rq_pos_val=1; //position dans le SQL de la valeur de la liste déroulante
$result= mysql_query ($rq) or die ("Select impossible");
$retour = '<select style="width: 320" name="Liste1" id="Liste1" size="1" onchange="remplir_form(this[this.selectedIndex].value);">';
$retour .= '<option selected value="">< Choisissez ></option>';
if (mysql_num_rows($result) != 0)
{
while ($row = mysql_fetch_row($result))
{
$retour .= '<option value="'. $row[$rq_pos_id] .'">'. $row[$rq_pos_val] .'</option>';
}
$retour .= '</select>';
} else {
$retour = '<input id="size" type="text" size="10" value="Aucune valeur" disabled>';
}
mysql_free_result($result);
mysql_close();
echo $retour;
Ensuite la page scriptlistederoulante.js : (completement diférente)
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,pouvez-vous le mettre à jour?...");
xhr = false;
}
return xhr;
}
function remplir_form(idServ)
{
//pour l'exemple on recupere l'id courant à l'intérieur de la fonction
//mais normalement c'est un parametre à passer à la fonction....
var Ld1Id=idServ;
var xhr = getXhr();
// On définit ce qu'on va faire quand on aura la réponse
//pour les methodes de l'objet xhr allez faire un tour le net;)
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)
{
//la reponse est retournée au format texte(pour faire de l'ajaX le format de retour doit etre du Xml....)
lareponse = xhr.responseText;
//allez :il faut traiter la chaine de caractere renvoyee par le script php(action.php)
var w = document.getElementById("Liste2");
var content = w.innerHTML;
content = lareponse;
w.disabled = false;
w.innerHTML = content;
//A voir >>>DOM(pour l'accès et modifications d'une page web en direct
//document.getElementById('Liste2').innerHTML = lareponse;
}
}
// Ici on va voir comment faire du post
//il faut verifier a koi correspond la valeur true.....
xhr.open("POST","valideLD2.php",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
// ne pas oublier de poster les arguments
xhr.send("Ld1="+Ld1Id);
}
Ensuite la page valideLD2.php :
@header('Content-type:text/xml; charset=utf-8');
include ("connexionBDD.php");
$Ld1_retour =''; //id_département clé de la liste déroulante 1
if (isset($_POST['Ld1'])) {$Ld1_retour = $_POST['Ld1'];}
if ($Ld1_retour!='') {
$rq="Select ... FROM ... where ...=".$Ld1_retour.""; //Requete retournant les infos selon le chois de la premiere liste
$rq_pos_id=0;
$rq_pos_val=1;
$result= mysql_query ($rq) or die ("Select impossible");
$retour = '';
$retour .= '<option selected value="">< Choisissez ></option>';
if (mysql_num_rows($result) != 0) {
while ($row = mysql_fetch_row($result)) {
$retour .= '<option value="'. $row[$rq_pos_id] .'">'. htmlentities($row[$rq_pos_val]) .'</option>';
}
$retour .= '';
} else {
$retour = '<select style="width: 320" name="Liste2" id="Liste2" size="1" disabled><option>< Cellule ></option></select>';
}
mysql_free_result($result);
mysql_close();
}else{
$retour = '<select style="width: 320" name="Liste2" id="Liste2" size="1" disabled><option>< Cellule ></option></select>';
}
echo $retour;
et enfin ton formulaire :
<tr>
<td>Liste 1 :</td>
<td>
<?php
include("valideLD1.php"); //Affichage de la liste déroulante 1
?>
</td>
</tr>
<tr>
<td>Liste 2 :</td>
<td>
<span id="niv2">
<select style="width: 320" name="Liste2" id="Liste2");" disabled="disabled"><!-- Liste deroulante, permettant de choisir les cellules selon le service -->
<option>< Choisissez ></option><!-- le premier element afficher dans la liste deroulante -->
</select>
</span> <!--Pour remplir la liste déroulante 2-->
</td>
</tr>
Essaye ca !! Y te faut polusieur page..
Bon jte donne ske g déja donné a un pote sur l'forum
Alors la page valideLD1.php :
include ("connexionBDD.php"); //Connexion BDD
$rq="Select ... FROM ..."; //Requete retournant les éléments que tu souhaite afficher dans la premiere ligne
$rq_pos_id=0; //position dans le SQL de la clé de la liste déroulante
$rq_pos_val=1; //position dans le SQL de la valeur de la liste déroulante
$result= mysql_query ($rq) or die ("Select impossible");
$retour = '<select style="width: 320" name="Liste1" id="Liste1" size="1" onchange="remplir_form(this[this.selectedIndex].value);">';
$retour .= '<option selected value="">< Choisissez ></option>';
if (mysql_num_rows($result) != 0)
{
while ($row = mysql_fetch_row($result))
{
$retour .= '<option value="'. $row[$rq_pos_id] .'">'. $row[$rq_pos_val] .'</option>';
}
$retour .= '</select>';
} else {
$retour = '<input id="size" type="text" size="10" value="Aucune valeur" disabled>';
}
mysql_free_result($result);
mysql_close();
echo $retour;
Ensuite la page scriptlistederoulante.js : (completement diférente)
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,pouvez-vous le mettre à jour?...");
xhr = false;
}
return xhr;
}
function remplir_form(idServ)
{
//pour l'exemple on recupere l'id courant à l'intérieur de la fonction
//mais normalement c'est un parametre à passer à la fonction....
var Ld1Id=idServ;
var xhr = getXhr();
// On définit ce qu'on va faire quand on aura la réponse
//pour les methodes de l'objet xhr allez faire un tour le net;)
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)
{
//la reponse est retournée au format texte(pour faire de l'ajaX le format de retour doit etre du Xml....)
lareponse = xhr.responseText;
//allez :il faut traiter la chaine de caractere renvoyee par le script php(action.php)
var w = document.getElementById("Liste2");
var content = w.innerHTML;
content = lareponse;
w.disabled = false;
w.innerHTML = content;
//A voir >>>DOM(pour l'accès et modifications d'une page web en direct
//document.getElementById('Liste2').innerHTML = lareponse;
}
}
// Ici on va voir comment faire du post
//il faut verifier a koi correspond la valeur true.....
xhr.open("POST","valideLD2.php",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
// ne pas oublier de poster les arguments
xhr.send("Ld1="+Ld1Id);
}
Ensuite la page valideLD2.php :
@header('Content-type:text/xml; charset=utf-8');
include ("connexionBDD.php");
$Ld1_retour =''; //id_département clé de la liste déroulante 1
if (isset($_POST['Ld1'])) {$Ld1_retour = $_POST['Ld1'];}
if ($Ld1_retour!='') {
$rq="Select ... FROM ... where ...=".$Ld1_retour.""; //Requete retournant les infos selon le chois de la premiere liste
$rq_pos_id=0;
$rq_pos_val=1;
$result= mysql_query ($rq) or die ("Select impossible");
$retour = '';
$retour .= '<option selected value="">< Choisissez ></option>';
if (mysql_num_rows($result) != 0) {
while ($row = mysql_fetch_row($result)) {
$retour .= '<option value="'. $row[$rq_pos_id] .'">'. htmlentities($row[$rq_pos_val]) .'</option>';
}
$retour .= '';
} else {
$retour = '<select style="width: 320" name="Liste2" id="Liste2" size="1" disabled><option>< Cellule ></option></select>';
}
mysql_free_result($result);
mysql_close();
}else{
$retour = '<select style="width: 320" name="Liste2" id="Liste2" size="1" disabled><option>< Cellule ></option></select>';
}
echo $retour;
et enfin ton formulaire :
<tr>
<td>Liste 1 :</td>
<td>
<?php
include("valideLD1.php"); //Affichage de la liste déroulante 1
?>
</td>
</tr>
<tr>
<td>Liste 2 :</td>
<td>
<span id="niv2">
<select style="width: 320" name="Liste2" id="Liste2");" disabled="disabled"><!-- Liste deroulante, permettant de choisir les cellules selon le service -->
<option>< Choisissez ></option><!-- le premier element afficher dans la liste deroulante -->
</select>
</span> <!--Pour remplir la liste déroulante 2-->
</td>
</tr>
Essaye ca !! Y te faut polusieur page..
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ben ce que tu veux faire c pas très simple .; Tu veux deux listes déroulantes qui soient lié c ca ???
Il faut utilisé du JAVA de l'AJAX, mais apré ca marche parfaitement ...
Il faut utilisé du JAVA de l'AJAX, mais apré ca marche parfaitement ...
oué c'est ça, c.a.d que quand je choisi une option dans la liste 1, les choix de la liste 2 sont prédéfinis
par exple si je choisi IG dans la liste 1, dans la liste 2 y'aura : DAIGL, ALSI ...
et ça ça me servira à mieux récupérer les infos du formulaire pour ma requête SQL
mon code de liste que j'avais trouvé: http://www.thelin.net/laurent/labo/js/listesderoulantes.html
par exple si je choisi IG dans la liste 1, dans la liste 2 y'aura : DAIGL, ALSI ...
et ça ça me servira à mieux récupérer les infos du formulaire pour ma requête SQL
mon code de liste que j'avais trouvé: http://www.thelin.net/laurent/labo/js/listesderoulantes.html