Liste déroulante

Résolu
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention   -  
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai une liste déroulante dans mon formulaire, provenant de ma BDD.
Lorsque je sélectionne un choix, je souhaite qu'il reste par défaut, jusqu'à ce que j'en choisisse un autre.
Merci beaucoup de votre aide.

<p>
<label for="add-bureau">Bureau :</label>

<?php
$sql="show columns from users like 'user_bureau'";
$result = DbConnection::select( $sql );
if( DbConnection::hasError() )
{
$error = DbConnection::getError();
}
if( $result )
{
$type=mysql_result($result,0,'Type');
$type=substr($type,5,strlen($type)-5-2);
$resp=split("','",$type);
echo "<select name='bureau' id='add-bureau'>";
echo "<option value='-1'>--liste du bureau--</option>";

foreach( $resp as $row )
{
echo "<option value=$row>$row</option>";
}
echo "</select>";
}
?>
</p>
A voir également:

21 réponses

Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
Salut marygil,

Vers quoi ton formulaire envoie t'il ses données ? Une nouvelle page ? La même ? ... ?
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour et merci pour ta réponse,

Vers une nouvelle page...
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
Plusieures options s'offrent à toi, mais elles convergent toutes vers le même point : il faut enregistrer quelque part la valeur de ton select pour la recuperer plus tard... Pour cela :

- Si tu veux que la valeur du select ne soit affectées qu'en fonction de l'utilisateur : utilise un cookie ou une variable de session
- Sinon tu peux l'enregistrer dans la base de données ou dans un fichier externe
- Et enfin tu peux la passer en paramètres avec ton formulaire...

Ces solutions sont classées par ordre de simplicité, je trouve la technique de la variable de session la plus simple à mettre en place
0
[o.o]REplay Messages postés 357 Date d'inscription   Statut Membre Dernière intervention   28
 
Bonjour,

Tu peux aussi mettre un champ hidden dans ton form,
et avant d'afficher a nouveau ton formulaire tu fais:

$default = "--liste du bureau--";

if(isset($_POST['le nom de ton champ hidden']))
$default = $_POST['le nom de ton champ hidden'];

echo "<option value='-1'>".$default."</option>";

:)

++
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour

Un grand merci à toi [o.o]REplay pour ta réponse très concluante, c'est super ça marche nickel, mille merci. Et merci aussi à Alkaaran.
Je peux me permettre STP de te demander encore une petite chose ?
J'ai donc fini mon site pour mon association et il me reste le formulaire de contact à intégrer au site, avant de pouvoir le mettre en ligne.
J'en ai fait un avec un logiciel "créaform"que j'ai arrangé suivant mes besoins mais je sais pas comment l'intégrer à mon site, si toute fois tu peux encore m'aider?
Ca m'a créé 3 fichiers "envoi.php5" "mimemail.php5" "formulaire.js" je sais pas quoi en faire je voudrais mettre ce formulaire dans ma page contacts.
Merci pour ta disponibilité.
0
[o.o]REplay Messages postés 357 Date d'inscription   Statut Membre Dernière intervention   28 > marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
Aucune idée, jamais touché

Daprés moi envoie.php5 utilise les autres pages.
Essai de n'afficher que ce fichier pour voir ce que ca fait.
un include ou require d'une de ces pages devrai suffire, sinon lis l'aide de creaform, ca te sera surement plus util que moi :)

Bonne soirée.
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention   > [o.o]REplay Messages postés 357 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour et merci,

Juste un petit blème concernant mon formulaire.
En fait j'avais fait un test avec les données de ton message mais sur le coup j'ai pas fait attention.
A savoir: comme m'a liste déroulante commence par "président" en faisant le test j'ai dit c'est bon ça marche mais en fait ça n'affiche que le premier mot de la liste et non celui que j'ai sélectionné. (c'est déjà un grand pas)
C'est "ballot" autant pour moi, si toute fois tu peux m'aider pour finir ce bazard ?
Merci beaucoup
0
[o.o]REplay Messages postés 357 Date d'inscription   Statut Membre Dernière intervention   28 > marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
Je n'ai pas compris.

En fait il ne faut rien changer à ton code précédent, juste les trois lignes que je t'ai donné, tu les rajoutes juste avant ton formulaire: Pr le premier choix du formulaire, si il ya une variable post, tu la met en choix séléctionné, sinon tu met la valeur par défaut, le rèste du formulaire est identique.
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention   > [o.o]REplay Messages postés 357 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Je te remercie de ta réponse, mais malheureusement je n'arrive pas à y faire fonctionner comme il le faudrait.

Ma liste déroulante ça donne ça:
--liste du bureau--
Président
vice-président
secrétaire
secrétaire-adjoint
trésorier
trésorier-adjoint

mon formulaire ça donne ça:

<label for="add-bureau">Bureau :</label>

<?php
$sql="show columns from users like 'user_bureau'";
$result = DbConnection::select( $sql );
if( DbConnection::hasError() )
{
$error = DbConnection::getError();
}
if( $result )
{
$type=mysql_result($result,0,'Type');
$type=substr($type,5,strlen($type)-5-2);
$resp=split("','",$type);
echo "<select name='bureau' id='add-bureau'>";
echo "<option value='-1'>--liste du bureau--</option>";
foreach( $resp as $row )
{
echo "<option value=$row>$row</option>";
}
echo "</select>";
}
?>

Et quand je sélectionne par exemple "secrétaire" il faut que ça reste par défaut tant que je lui est pas donné une autre valeur.
Merci très sincéremnts si tu peux encore jeter un oeil...
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Je vous envoi ma page si vous pouvez essayer de me résoudre mon problème.
Moi j'ai vraiment tou essayer je baisse les bras.
Merci très sincérements



<?php
function dateFRA( $time )
{
setlocale( LC_TIME, "fr" );
return strftime( "%d/%m/%Y" , strtotime( $time ) );
}
session_start();
header('Content-Type: text/html; charset=ISO-8859-1');
if( isset( $_SESSION['user_id'] ) && isset( $_SESSION['user_name'] ) )
{
require_once('../conf/config.php5');
require_once('../lib/dbConnection.php5');
require_once('../lib/membres.class.php5');
if( isset( $_GET['do'] ) )
{
$do = $_GET['do'];
switch( true )
{
case( $do === 'delete' ):
if( isset( $_GET['user_id'] ) && isset( $_GET['user_name'] ) )
{
$id = (int) $_GET['user_id'];
$name = urldecode( $_GET['user_name'] );
?>
<form method="post" action="index.php5?cat=sorties&page=membres">
<fieldset>
<legend>Supprimer un membre</legend>
<p>
<input type="hidden" name="do" value="delete" />
<input type="hidden" name="id" value="<?php echo( $id ); ?>" />
</p>
<p>Le membre suivant va être supprimé définitivement :</p>
<p><?php echo( $name ); ?></p>
<p>Souhaitez-vous continuer ?</p>
<p>
<input type="submit" value="Oui" />
<input type="button" onclick="displayBox('requests/membres.php5?do=add', 'box'); return false" value="Non" />
</p>
</fieldset>
</form>
<?php
}
else
{
echo( '<p class="error">L\'identifiant n\'est pas déterminée.</p>' );
}
break;

case( $do === 'edit' ):
if( isset( $_GET['user_id'] ) )
{
$id = (int) $_GET['user_id'];
$user = Membres::getOne( $id , true );
?>
<form action="index.php5?cat=sorties&page=membres" method="post" >
<fieldset>
<legend>Modifier un membre</legend>
<p>
<input type="hidden" name="do" value="update" />
<input type="hidden" name="id" value="<?php echo( $id ); ?>" />
</p>
<p>
<label for="add-nom">Nom :</label>
<input type="text" name="nom" id="add-nom" value="<?php echo( $user->user_name ); ?>" />
</p>
<p>
<label for="add-adress">Adresse :</label>
<textarea id="add-adress" name="adress"><?php echo( stripslashes( $user->user_adress ) ); ?></textarea>
</p>
<p>
<label for="add-tel1">Téléphone 1 :</label>
<input type="text" name="tel1" id="add-tel1" value="<?php echo( $user->user_tel1 ); ?>" />
</p>
<p>
<label for="add-tel2">Téléphone 2 :</label>
<input type="text" name="tel2" id="add-tel2" value="<?php echo( $user->user_tel2 ); ?>" />
</p>
<p>
<label for="add-mail">Courriel :</label>
<input type="text" name="mail" id="add-mail" value="<?php echo( $user->user_mail ); ?>" />
</p>
<p>
<label for="add-pupitres">Pupitre :</label>

<?php
//menu déroulant pour le type de pupitres
$sql="show columns from users like 'user_pupitres'";
$result = DbConnection::select( $sql );
if( DbConnection::hasError() )
{
$error = DbConnection::getError();
}
if( $result )
{
$type=mysql_result($result,0,'Type');
$type=substr($type,5,strlen($type)-5-2);
$resp=split("','",$type);
echo "<select name='pupitres' id='add-pupitres'>";
echo "<option value='-1'>--liste pupitres--</option>";
foreach( $resp as $row )
{
echo "<option value=$row>$row</option>";
}
echo "</select>";
}
?>
</p>
<p>
<label for="add-membres">Membre :</label>

<?php
//menu déroulant pour le type de membres
$sql="show columns from users like 'user_membres'";
$result = DbConnection::select( $sql );
if( DbConnection::hasError() )
{
$error = DbConnection::getError();
}
if( $result )
{
$type=mysql_result($result,0,'Type');
$type=substr($type,5,strlen($type)-5-2);
$resp=split("','",$type);
echo "<select name='membres' id='add-membres'>";
echo "<option value='-1'>--liste membres--</option>";
foreach( $resp as $row )
{
echo "<option value=$row>$row</option>";
}
echo "</select>";
}
?>
</p>
<p>
<label for="add-admission">Admission :</label>
<input onclick="ds_sh(this);" type="text" name="admission" id="add-admission" value="<?php echo( dateFRA( $user->user_admission ) ); ?>" />
</p>
<p>
<label for="add-demission">Démission :</label>
<input onclick="ds_sh(this);" type="text" name="demission" id="add-demission" value="<?php echo( dateFRA( $user->user_demission ) ); ?>" />
</p>
<p>
<label for="add-naissance">Né(e) le :</label>
<input onclick="ds_sh(this);" type="text" name="naissance" id="add-naissance" value="<?php echo( dateFRA( $user->user_naissance ) ); ?>" />
</p>
<p>
<label for="add-bureau">Bureau :</label>

<?php
$sql="show columns from users like 'user_bureau'";
$result = DbConnection::select( $sql );
if( DbConnection::hasError() )
{
$error = DbConnection::getError();
}
if( $result )
{
$type=mysql_result($result,0,'Type');
$type=substr($type,5,strlen($type)-5-2);
$resp=split("','",$type);
echo "<select name='bureau' id='add-bureau'>";
echo "<option value='-1'>--liste du bureau--</option>";
foreach( $resp as $row )
{
echo "<option value=$row>$row</option>";
}
echo "</select>";
}
?>
</p>
<p>
<label for="add-responsable">Responsable :</label>

<?php
//Menu déroulant pour la liste des responsabilités
$sql="show columns from users like 'user_responsable'";
$result = DbConnection::select( $sql );

if( DbConnection::hasError() )
{
$error = DbConnection::getError();
}
if( $result )
{
$type=mysql_result($result,0,'Type');
$type=substr($type,5,strlen($type)-5-2);
$resp=split("','",$type);

echo "<select multiple name='responsable' id='add-responsable'>";
echo "<option value='-1'>--liste des responsabilites--</option>";
foreach( $resp as $row )
{
echo "<option value=$row>$row</option>";
}
echo "</select>";
}
?>
</p>
<p>
<input type="button" onclick="displayBox('requests/membres.php5?do=add', 'box'); return false" value="Annuler" />
<input type="reset" value="Effacer" />
<input type="submit" value="Modifier" />
</p>
</fieldset>
</form>
<?php
}
else
{
echo( '<p class="error">L\'identifiant n\'est pas déterminée.</p>' );
}
break;

/*case( $do==='populate'):
echo "\t\t\t".'<label for="add-user">Membre</label>'."\n";
echo "\t\t\t".'<select id="add-user" name="add-user">'."\n";
if( isset( $_GET['id'] ) )
{
$users = DbConnection::select( "SELECT `users`.`user_id`, `users`.`user_name` FROM `users` WHERE `users`.`user_id` NOT IN ( SELECT `reply`.`user_id` FROM `reply` WHERE `reply`.`question_id` = '".$_GET['id']."' ) AND `users`.`user_id` <> 0 ORDER BY `users`.`user_name` ASC" );
if( mysql_num_rows( $users ) > 0 )
{
while( $row = mysql_fetch_object( $users ) )
{
echo "\t\t\t\t".'<option value="'.$row->user_id.'">'.$row->user_name.'</option>'."\n";
}
}
else
{
echo "\t\t\t\t".'<option><aucune valeur à afficher></option>'."\n";
}
}
else
{
echo "\t\t\t\t".'<option><aucune valeur à afficher></option>'."\n";
}

echo "\t\t\t".'</select>'."\n";
break;*/

default:
echo Membres::displayAddingBox();
}
}
else
{
echo( '<p class="error">L\'action n\'est pas déterminée.</p>' );
}
}
else
{
echo( '<p class="error">Opération interdite.</p>' );
}
?>
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
Je vois pas très bien ce qui ne va pas dans ton code, tu as des erreurs à l'exécution ? Et/Ou tout simplement le formulaire ne retient pas la selection de la liste deroulante ?
0

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

Posez votre question
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ta réponse,
Mais y at-il une solution à mon problème ?
Parce que c'est ennuyeux que ça ne me garde pas mes paramètres, lorsque je fait modifier le membres.
A+
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
Ok, alors dans ta page de validation de formulaire (index.php5?cat=sorties&page=membres) tu ajoute ceci :

$_SESSION['temp_selection'] = $_POST['add-bureau'] ;

Cela va insérer la valeur de ta liste déroulante dans un variable de session...

Et en suite dans ta page de formulaire, tu modifie dans ton code :

echo "<select name='bureau' id='add-bureau'>";
echo "<option value='-1'>--liste du bureau--</option>";
foreach( $resp as $row )
{
	if( $_SESSION['temp_selection'] == $row )
		echo "<option value=$row selected>$row</option>";
	else
		echo "<option value=$row>$row</option>";
}
echo "</select>";


Comme ça à l'affichage de ton formulaire, si la $row est la même que celle intégrée précédemment dans la variable de session, ça la prendra par défaut...


Maintenant, comme je ne suis pas à ta place, ca va peut etre retourner une erreur ;p, reporte la moi au cas ou :)
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
je suis toujours dans le kaka, si tu peux jeter un oeil sur mon code?
J'ai essayé de changer "choix_par_defaut" mais rien de rien...
Je te remercie beaucoup

<label for="add-bureau">Bureau :</label>

<?php
$sql="show columns from users like 'user_bureau'";
$result = DbConnection::select( $sql );
if( DbConnection::hasError() )
{
$error = DbConnection::getError();
}
if( $result )
{
$type=mysql_result($result,0,'Type');
$type=substr($type,5,strlen($type)-5-2);
$resp=split("','",$type);
echo "<select multiple name='bureau' id='add-bureau'>";
echo "<option selected value='-1'>--liste du bureau--</option>";
foreach( $resp as $row )
{
if (choix_par_defaut)
echo "<option value=$row selected=\"selected\">$row</option>";
else
echo "<option value=$row>$row</option>";
}
echo "</select>";
}
?>
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37 > marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
Tu met quoi dans choix_par_défaut ?
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention   > Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention  
 
je pensais mettre une valeur de la liste ?
Mais ça sélectionne entièrement la liste ?
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
Ben en fait j'ai essayé beaucoup de choix mais rien n'y fait.....
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
Fais comme je t'ai dit, modifie tes pages comme ceci : :p

- Dans ta page de validation de formulaire (index.php5?cat=sorties&page=membres) tu ajoute ceci, au début :
$_SESSION['temp_selection'] = $_POST['add-bureau'] ;

Cela va insérer la valeur de ta liste déroulante dans un variable de session...
Et en suite dans ta page de formulaire, tu modifie dans ton code comme ceci :
echo "<select name='bureau' id='add-bureau'>";
echo "<option value='-1'>--liste du bureau--</option>";
foreach( $resp as $row )
{
	if( $_SESSION['temp_selection'] == $row )
		echo "<option value=$row selected>$row</option>";
	else
		echo "<option value=$row>$row</option>";
}
echo "</select>";


Dis moi s'il y a quelquechose qui te dérange ou que tu ne comprends pas :)
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
Ben en fait c'est ça je sais pas trop ou l'insérer?

$_SESSION['temp_selection'] = $_POST['add-bureau'] ;
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
$_SESSION['temp_selection'] = $_POST['add-bureau'] ;

Tu dois l'indérer dans la page qui récupère les données de ton formulaire, celle qui est définie ici :
<form action="index.php5?cat=sorties&page=membres" method="post" > 


insère le juste après ton session_start()
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai mis comme ceci au sommet de la page ??


<?php
$_SESSION['temp_selection'] = $_POST['add-bureau'] ;
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
Heu non ^^, juste après la fonction session_start() qui est dans index.php5

Donc plutot comme ceci :

<?php

//Du code...

session_start() ;

$_SESSION['temp_selection'] = $_POST['add-bureau'] ;

//Le reste de ton code ...
?>
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
Je ne sais pas ça marche pas ?

<?php
session_start();
$_SESSION['temp_selection'] = $_POST['add-bureau'] ;
//print_r( $_SESSION['user_id'] );
//print_r( $_SESSION['user_name'] );
require_once('conf/config.php5');

etc........
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
"Ca marche pas" erreur php ou" ca marche pas" ton formulaire ne retient pas la precedente selection ?
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
par défaut c'est "liste du bureau" et ça reste la-dessus..............
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
aucune erreur ça retiens pas la sélection précédente.........
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
Tu enregistre bien au moins une fois une autre valeur que "liste du bureau" ?
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
oui oui j'ai mis à chaque fois "Secrétaire" et ça reviens "liste du bureau"
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
Oh le con ! Fouette moi ! j'ai confondu id et name :(

Pour etre clair : modifie $_POST['add-bureau'] par $_POST['bureau']

:)
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
Par contre maintenant ça me met cette ligne d'erreur ??


Parse error: syntax error, unexpected T_REQUIRE_ONCE in E:\wamp\www\test5\index.php5 on line 6
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
N'aurais-tu pas oublié un point virgule après $_SESSION['temp_selection'] = $_POST['add-bureau'] ?

:)
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai fait un copier/coller
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
quel con j'ai oublié le ; autant pour moi
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
C'est vraiment le grand bazard ça reste toujours sur "liste du bureau"
c'est le kaka..................
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
Et si tu veux je peux te donner mes ID pour essayer en direct sur le site ?

Bien sur si tu as un peu de temps.
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
Alors c'est pas normal... Refais un essai en changeant la selection dans ton formulaire, et si ca marche pas, on va passer par un déboguage plus sérieux
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
Volontiers ! Envoie les par mp
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai jamais envoyé de MP alors je suis en train de chercher comment on fait.........
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
Dis moi juste si tu as tout reçu ??
0
marygil Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
je te donne déjà l'URL

http://www.cliquedecruet.org/test5/index.php5
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
Problème résolu par mail...
0