PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 09-03-2010 14:25:52

ElevedIRIS
Membre
Inscription : 04-02-2010
Messages : 19

Liste déroulante répété X fois qui retire le choix précédent

Voila toujours dans mon Projet BTS, j'ai avancé et j'arrive à un endroit .. je m'explique.

J'ai réalisé un script CGI qui va me lister toute les Adresses Mac du reseaux puis ca me les ajoutes dans la base de donnée directement, apart si celle si y es deja.

Sous cette forme :

Adresse_Mac2 :        Nom_Eleve2:
xx:xx:xx:xx:xx:xx      (Met rien)
xx:xx:xx:xx:xx:xx      (Met rien)
xx:xx:xx:xx:xx:xx      (Met rien)
etc


Ca, ca fonctionne.

Ensuite j'ai un programme en .csv ou le professeur va rentrer les Nom, Prenom etc de chaque éléves et ca les ajoutera dans la base de donnée.

Bref j'en arrive ou je bloque :

Sur mon interface web,je vais avoir un page de ce genre :
____________________________________________________________________________________________________

Identifier les adresses mac du reseaux :

Adresse N°$i :            ( $i incrémenté a chaque fois, ici 1 )
xx:xx:xx:xx:xx:xx       ( Je récupere sous forme de tableau ma table Adresse_Mac2, ici la 1ere Adresse Mac )
[Choisir votre eleve]    ( J'affiche sous la forme d'une liste déroulante, tout les Noms rentré dans la base de donnée )
-----
Adresse N°$i :            ( ici 2 )
xx:xx:xx:xx:xx:xx       (Ici la 2eme Adresse_Mac )
[Choisir votre eleve]    ( Je réaffiche la liste précédente en retirant la posibilité de choisir le Nom précedent )
-----
Cela ce fait jusqu'a ce que Adresse_Mac2 soit vide.
____________________________________________________________________________________________________

Mes soucis :

-L'affichage du tableau est correcte, mais il m'affiche la liste déroulante que pour la 1ere adresse mac, aprés je vois bien le select dans les autre ligne, mais il n'y a rien dans le select.
-Des que l'utilisateur aura rentré un nom en face de l'adresse mac, il faut que je rentre ce Nom dans Nom_Eleve2. J'arrive à le faire si il y à une seul adresse mac, mais si il y à plusieur variable à envoyer .. enfin j'y suis pas encore tongue

J'ai cherché sur Internet, et j'arrive pas a faire :

- Afficher plusieur fois une Liste déroulante issu d'une requete SQL et qui retire la possibilité de choisir le choix précédent.
J'ai juste vu : Me!NomListe.Requery .. je me renseigne sur ca pour le moment =X

J'ai vu qu'utiliser du AJAX ou JAVASCRIPT se ferais forcement, qu'en PHP je pourrais surment pas .. mais je demande comme meme.


<?php
 #########################################################IDENTIFIER ELEVE ADR MAC###########################################################
##########################################################################################################################################

if($EleveIdentifier=="Identifier un Eleve")
{
?>
<center><TABLE border=outset bgcolor="grey">
<td>

<table border=outset>
<td colspan=3 bgcolor="white">
<h2><center>Identifier les adresses mac du reseaux :</center></h2></td>


<tr>
<form method="GET" action="">
<?php
$i=1;     // initialise i

while ( $LectureAffichageAdrM2 = mysql_fetch_array( $LesAdrM2 )) // Debut boucle while affichage tableau adresse mac
       {
echo "<td><i>Adresse Mac N°$i</i> :<td>";
echo "<b><center>".$LectureAffichageAdrM2['Adresse_Mac2'];"</center></b>";
?>
<td>
<select name="mon_champmac" onchange="changemac(this.options[this.selectedIndex].innerHTML)">
<option>
<?php
echo $LectureAffichageAdrM2['Adresse_Mac2']; // affiche adresse mac
?>
</option>
</select>

<!-- Debut while liste déroulante-->
<td>

<select name="mon_champnom" onchange="document.location.reload()">
<?php


while ($LectureAffichageNom = mysql_fetch_array( $ComparaisonNom ))
       {

       ?>
   <OPTION>
       <?php
echo $LectureAffichageNom['Nom']; // affiche liste déroulante

       ?>
   </OPTION>  

<?php
       }
?>

</SELECT>

<!-- Fin while liste déroulante !-->
<?php
echo "<tr>";
$i++; //incremente i

       }
?>

<tr><td  colspan=3><center>

<br><br>


    <input type="hidden" name="ma_valeurnom" id="new_valeurnom" /> <!-- recupere le nom et ladresse mac obtenue!-->
    <input type="hidden" name="ma_valeurmac" id="new_valeurmac" />
    <input type="submit" value="Assigner"/>

<input type="button" onclick="history.go(-1)" value="Retour"></center>

</table>

<?php
}
#########################################################CHOISIR LE NOM DES ELEVE A METTRE ADRESSE MAC ###########################################################
##########################################################################################################################################

$ma_valeurnom = $_GET['mon_champnom'];
$ma_valeurmac = $_GET['mon_champmac'];

if ($ma_valeurnom)
 {
?>

<center><table border=outset bgcolor="grey"><td width = 300><center>Confirmer vos choix :<br><br><center>
<?php

$CompareNomEleve2=mysql_fetch_array($ListerNomEleve2);

if ($ma_valeurnom!=$CompareNomEleve2['Nom_Eleve2'])
{
mysql_query("UPDATE Info_PC_IRIS2 SET Nom_Eleve2='$ma_valeurnom' WHERE Info_PC_IRIS2.Adresse_Mac2='$ma_valeurmac'");
echo "Dedan<br>";
}
else
{
echo " Ce Nom est deja associé à une Adresse Mac<br>";
}

echo "L'eleve <i><b>$ma_valeurnom</b></i> va avoir l'Adresse Mac <i><b>$ma_valeurmac</i></b>";
?>

</form>
<input type="button" onclick="history.go(-1)" value="Retour"></center>
<?php

}
 


Voilaa, merci d'avoir pris la peine de lire ce message big_smile

Coordialement,

ElevedIRIS.

Dernière modification par ElevedIRIS (09-03-2010 14:42:32)

Hors ligne

#2 09-03-2010 19:34:35

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Liste déroulante répété X fois qui retire le choix précédent

Il te faut créer un array à partir des résultats de la requête. Et ensuite utiliser cet array pour créer tes options.
Car mysql_fetch_XXX avance le pointeur à chaque itération, donc quand tu arrives à la fin il ne revient pas au début. De là viennent tes selects vides.

Hors ligne

#3 10-03-2010 12:12:28

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : Liste déroulante répété X fois qui retire le choix précédent

je ne vois aucun mysql_query dans le code (hors mis l'update à la fin).

Tu n'est pas clair dans ce que tu indique.
Sur le principexTG à répondu, tu mets le contenu de ta liste dans un tableau php afin de l'afficher plusieurs fois, tu peut le faire avec ajax pour ajouter dynamiquement des champs select à la volée, il te faudra nommer tes champs de façon dynamique (par exemple eleve[] et adresse[])
tu traite le tout avec un foreach pour obtenir la clef  d'un tableau et avoir les données équivalente des deux.

@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

Pied de page des forums