Liste déroulante PHP/JS défectueuse

Fermé
Zimeur Messages postés 305 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 7 mai 2011 - 14 févr. 2009 à 17:07
Zimeur Messages postés 305 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 7 mai 2011 - 19 févr. 2009 à 12:50
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>


A voir également:

6 réponses

974_Vin's_974 Messages postés 547 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 19 février 2009 102
16 févr. 2009 à 07:45
J'ai rien compris à ton probleme ....

Mais tu veux quoi ???

Des listes déroulantes liées ???

0
Zimeur Messages postés 305 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 7 mai 2011 45
16 févr. 2009 à 20:41
oui tout à fait !
j'aurais dû dire ça dès le début XD
0
974_Vin's_974 Messages postés 547 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 19 février 2009 102
17 févr. 2009 à 05:21
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..
0
Zimeur Messages postés 305 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 7 mai 2011 45
18 févr. 2009 à 16:11
merci mais y'aurais pas plus simple ??? :s
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
974_Vin's_974 Messages postés 547 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 19 février 2009 102
19 févr. 2009 à 05:43
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 ...

0
Zimeur Messages postés 305 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 7 mai 2011 45
19 févr. 2009 à 12:50
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
0