8797 sujets

Développement web côté serveur, CMS

Bonjour, j'ai crée un script qui me permet d'ajouter des membres en tant que "staff" de mon site, mais j'aurai besoin de transmettre via ce formulaire, non seulement le pseudo mais également son id correspondant dans la table membres.

Voici le code :

<br/>
<div class="bord">
<p><img src="images/fleche.gif" alt="fleche" /> Ajouter un membre au staff : </p><br/>
<form method="post" action="staff_ok.php">

<p> Pseudo : <select name="pseudo">
<?php
while($donnees = mysql_fetch_array($retour) )
{
?>
<option value="<? echo $donnees['pseudo'] ; ?>"><? echo $donnees['pseudo'] ; ?></option>
<?php
}
?>
</select></p><br/>
<label><p>Rang : </td><td><input type="text" name="rang" /> </p></label><br/>
<label><p>Description : </p>
<textarea id="decal" name="description" rows="3" cols="25"></textarea><br/></label>
<input class="b_valider" type="image" src="images/bouton/valider.jpg" name="staff" value="staff" />	
</form>
</div>
<br/>


Il faut donc quand meme temps que

<p> Pseudo : <select name="pseudo">
<?php
while($donnees = mysql_fetch_array($retour) )
{
?>
<option value="<? echo $donnees['pseudo'] ; ?>"><? echo $donnees['pseudo'] ; ?></option>
<?php
}
?>
</select></p>

je puisse transmettre l'id correspondant au pseudo qu'on choisit, mais comment faire?? merci
Modifié par eMeRiKa (15 Jun 2006 - 17:31)
Pourquoi ne pas stocker cet id dans un champ de type caché ?


<input type="hidden" name="id_membre" value="<?php echo $donnees["id_membre"]" />
eMeRiKa a écrit :
j'ai testé, mais il me retourne systématiquement 0 Smiley sweatdrop !!

Pourtant les input de type "hidden" marchent en temps normal. C'est la bonne solution, mais tu dois avoir une erreur de ton côté.
Le problème, c'est qu'il faut que je le mette dans la boucle du while on est daccord ? mais dans ce cas, il est dans ma balise selected, et çà me retourne une erreur :s!! 2 jours que je block dessus Smiley bawling
tu peux également ne transmettre que l'id du membre et retrouver son pseudo par une requete sur ta table membres
1. Comme dit kemar, pourquoi as-tu besoin de transmettre la donnée $donnes['pseudo' ] ? La solution la plus simple serait de créer ta liste comme suit :
<select name="id">
<?php while(blablabla) { ?>
<option value="<?php echo $donnes['id_membre'] ; ?>"><?php echo $donnes['pseudo'] ; ?></option>
<?php } ?>
</select>

2. Si tu as vraiment besoin des deux, utilise une petite astuce pour t'envoyer dans le formulaire la chaîne "id_membre;pseudo" :
<select name="id">
<?php while(blablabla) { ?>
<option value="<?php echo $donnes['id_membre'] ; ?>;<?php echo $donnes['pseudo'] ; ?>">
<?php echo $donnes['pseudo'] ; ?>
</option>
<?php } ?>
</select>

3. Si tu n'aimes pas les astuces, le javascript est ton ami...

<script type="text/javascript">
/*
écrire avec php un tableau javascript qui associe à chaque id le pseudo correspondant
*/
</script>
<select name="id" onchange="(updater en client-side la valeur de l'élément input#pseudo)">
<?php while(blablabla) { ?>
<option value="<?php echo $donnes['id_membre'] ; ?>;<?php echo $donnes['pseudo'] ; ?>"><?php echo $donnes['pseudo'] ; ?></option>
<?php } ?>
<input type="hidden" name="pseudo" id="pseudo" value="" />

4. Si aucune de ces propositions ne résoud ton problème, je t'offre la corde pour te pendre Smiley lol

Cordialement,
elvex
Modifié par elvex (01 Jun 2006 - 01:35)
moi je proposerai une solution en js, mais plus simple que celle du tableau
le but ce serait de mettre un champ cache pseudo, et au moment de lenvoi du formulaire, mettre le libelle du select (le pseudo) dans la valeur du champ cache
ce qui donnerai (en simplifie) :

<form method="post" action="staff_ok.php" onsubmit="document.getElementById('ipseudo).value=document.getElementById('iidmembre')[document.getElementById('iidmembre').selectedIndex].text;">

<p> Pseudo : <select name="idmembre" id='iidmembre'>
<?php
while($donnees = mysql_fetch_array($retour) )
{
?>
<option value="<? echo $donnees['idmembre'] ; ?>"><? echo $donnees['pseudo'] ; ?></option>
<?php
}
?>
</select></p><br/>
<input type='hidden' name='pseudo' id='ipseudo' />
<input class="b_valider" type="image" src="images/bouton/valider.jpg" name="staff" value="staff" />	
</form>
</div>



tu peux aussi mettre le onsubmit dans une fonction js si tu veux faire propre,

bon courage Smiley smile
Modifié par firlou (02 Jun 2006 - 06:12)
merci de vos réponses Smiley cligne je me suis contenté de transmettre l'id et de retrouver les infos du membre à partir de cet id