Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/06/2007, 11h16   #1
Membre du Club
 
Inscription : décembre 2005
Messages : 228
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : décembre 2005
Messages : 228
Points : 60
Points : 60
Par défaut Page dynamique et formulaire

bonjour,
je dois faire un formulaire composé de plusieurs champs dont certains sont des combobox. Je voudrais pouvoir afficher ss ls combobox ce qui a été selectionné dans celles-ci. Je m'explique : si la combobox # 1 est composée de (az,er,ty,ui) et que l'on selectionne er, je veux que "er" s'affiche en-dessous de la combo 1 puis de mm pour ui, etc...

merci
crischprolch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 11h21   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Bonjour

Tu veux que lorsqu'on clique dans une liste, ça écrive la valeur choisie en dessous, c'est bien ça ? ET évidemment, tu as plusieurs listes et il faut que ça reste affiché au fur et à mesure de l'avancement.
j'ai bien résumé le problème ?

Si c'est ça, tu vas sans doute devoir utiliser du javascript, avec des onselect ou onchange dans tes listes, et des isset un peu partout
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 11h25   #3
Membre du Club
 
Inscription : décembre 2005
Messages : 228
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : décembre 2005
Messages : 228
Points : 60
Points : 60
oui c'est bien ça
crischprolch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 11h34   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Ta réponse a le mérite d'être claire

Qu'est-ce que tu as déjà codé ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 11h43   #5
Membre du Club
 
Inscription : décembre 2005
Messages : 228
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : décembre 2005
Messages : 228
Points : 60
Points : 60
mon formulaire est assez long et donc j'ai déjà une partie où il n'y a pas de combobox. Je viens juste de réussir à récupérer les valeurs à insérer ds la combobox. j'ai ça :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<table cellspacing="1" width="100%">
	<!-- evolution -->
	<tr <?php echo helper_alternate_class(1) ?>><td width="65%">
		<?php
			$t_result = proposal_evolution();
			$count = db_num_rows( $t_result );
			for ( $i=0; $i < $count; $i++ ) {
				$row = db_fetch_array($t_result);
				$t_id = $row[0];
				$t_text = $row[1];
			}
		?>
	</td><td width="35%">
		autre
	</td>
</tr>
</table>
dc là g recupéré les valeurs ds ma base.
Que faire maintenant ?
crischprolch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 13h32   #6
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Ce qu'il faut faire, c'est d'abord remplir ta liste avec les valeurs que tu as récupéré. Je suppose que t_id est la valeur à poster et t_text celle que tu affiches.
Code php :
1
2
3
4
5
6
7
8
echo '<select name="liste">'; // on ouvre la liste
for ( $i=0; $i < $count; $i++ ) {
	$row = db_fetch_array($t_result);
	$t_id = $row[0];
	$t_text = $row[1];
	echo '<option value="'.$t_id.'">'.$t_text.'</option>'; //on remplit la liste
}
echo '</select>'; //on ferme la liste
Là où ça se complique c'est pour afficher quelque chose lorsqu'on clique sur la liste. La technique que j'emploie consiste à soumettre le formulaire. Le double inconvénient c'est que si tu as déjà un formulaire rempli, il faut rajouter de quoi le re-remplir, et il faut que le traitement se fasse sur la même page (ou que la soumission finale se fasse avec une re-direction)
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 13h52   #7
Membre du Club
 
Inscription : décembre 2005
Messages : 228
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : décembre 2005
Messages : 228
Points : 60
Points : 60
pour résumer, c compliqué ?
parce que si c'est le cas, j'abandonne cette idée et j'essaie autre chose (reste plus qu'à trouver la parade ...).
crischprolch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 14h11   #8
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
En fait, c'est relatif. Il suffit "juste" de rajouter des issets un peu partout. Genre si tu as un champ texte :
Code :
<input type='text' name='champ1' value='<?php echo isset($_POST['champ1'])?"$_POST['champ1']":"" ?>' >
Et pour ta liste :

Code php :
1
2
3
4
5
6
7
8
9
10
echo '<select name="liste" onchange="form.submit()">'; // on ouvre la liste
for ( $i=0; $i < $count; $i++ ) {
	$row = db_fetch_array($t_result);
	$t_id = $row[0];
	$t_text = $row[1];
	echo '<option value="'.$t_id.'" ';
echo (isset($_POST['liste']) && $_POST['liste']==$t_id)?'selected ':'';
echo '>'.$t_text.'</option>'; //on remplit la liste
}
echo '</select>'; //on ferme la liste
Mais bon, ça peut être légèrement casse-pied.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 14h37   #9
Membre du Club
 
Inscription : décembre 2005
Messages : 228
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : décembre 2005
Messages : 228
Points : 60
Points : 60
merci.
Petites précisions : tt ce que tu me dit là sert à rafraichir une petite partie de ma page en quelque sorte. A quoi servent les isset et onchange ?
crischprolch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 15h08   #10
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Le onchange fait que lorsque tu sélectionne une nouvelle valeur dans la liste, ça recharge la page (enfin normalement ) Et le isset() sert à vérifier si la variable existe. En gros, si tu ajoutes en dessous de ta liste un truc du genre :
Code :
if (isset($_POST['liste'])) echo "liste = $_POST['liste']";
ça devrait t'afficher la valeur que tu viens de sélectionner dans la liste. (si tout va bien)

Dans ce que je t'ai mis avant, je me suis peut-être un peu emballée
Pour le champ texte, c'est censé re-remplir le formulaire avec la valeur que tu avais tapé avant...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 15h15   #11
Membre du Club
 
Inscription : décembre 2005
Messages : 228
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : décembre 2005
Messages : 228
Points : 60
Points : 60
quand je clique sur une ligne de ma combo, il me recharge tte la page mais en allant sur le lien action de form et non pas sur la mm page. Pourquoi ?
crischprolch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 15h21   #12
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Parce que c'est ce qu'on lui a dit de faire

Le onchange c'est l'événement et là je l'ai associé à un form.submit(). En bref : onchange=form.submit(), ça fait la même chose que si tu avais transformé ta liste en bouton submit.
Ce que tu peux faire pour éviter ça, c'est changer l'action du formulaire de façon à ce qu'il reste sur la même page lors de la soumission. Le problème, c'est qu'il va aussi rester sur la même page, lorsque tu cliqueras sur valider...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 15h23   #13
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
C'est logique, puisque dans le onchange tu fais un form.submit(), ca revient a faire comme si l'utilisateur avait validé ton formulaire. Donc forcément, si le script de validation du formulaire n'est pas le meme que celui qui affiche le formulaire ca ne marchera pas.

EDIT: grillé

sinon en javascript tu peux peut etre changer l'action du formulaire en fonction du onchange ? Celira, t'en penses quoi?
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 15h27   #14
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
ben ya un truc, mais là ça va devenir un chouïa compliqué. On peut mettre une fonction JS dans le onchange, et mettre dans la fonction un changement d'action...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 15h32   #15
Membre du Club
 
Inscription : décembre 2005
Messages : 228
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : décembre 2005
Messages : 228
Points : 60
Points : 60
je crois que je v faire plus simple : je veux afficher ce que je selectionne mais je crois qu'il existe une liste déroulante multichoix. Avec ça, je respecte mon cahier des charges et je n'y passe pas 3 jours ..

Bonne idée ?
crischprolch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 15h39   #16
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
En fait, tout dépend de ce que tu veux faire. *celira qui réalise qu'elle n'a pas demandé à quoi doit servir tout ça *

Pour une liste multichoix, il te faut un multiple dans la balise select et un tableau pour récupérer les valeurs.
Code html :
<select name="liste[]" multiple >
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 16h25   #17
Membre du Club
 
Inscription : décembre 2005
Messages : 228
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : décembre 2005
Messages : 228
Points : 60
Points : 60
Finalement, g opté pour la solution list multiple. Maintenant, g un autre probleme : g deux listes de selection et on veut avoir un petit champ, a coté de chacune d'elle, "autre" pour ajouter des valeurs dans la selection (permet de peupler la base au fur et à mesure). Peut-on "paramétrer" le submit du formulaire pour que quand on clique sur le submit général, on traite le formulaire normalement et quand on clique sur un bouton add a coté d'un champ autre, on ajoute la valeur dans la base et on recharge le formulaire avec les données déjà remplies ?
crischprolch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 16h28   #18
Membre du Club
 
Inscription : décembre 2005
Messages : 228
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : décembre 2005
Messages : 228
Points : 60
Points : 60
c pour faire de la rédaction automatique de documents doc. Par exemple, je traite le cas où on fait des devis qui sont tous formatés pareils et le but est de remplir ces devis avec un formulaire tout simple.
crischprolch est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h35.


 
 
 
 
Partenaires

Hébergement Web