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 21/05/2007, 08h59   #1
Invité régulier
 
Inscription : avril 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 31
Points : 5
Points : 5
Par défaut Problème de formulaire

Bonjour,

J'ai un petit soucis avec un formulaire et une base de données...

J'ai une BDD qui contient des utilisateurs (nom, prénom, login, mdp), j'ai également créé une liste déroulante qui, a l'aide d'une boucle, m'affiche le nom de tous mes utilisateurs....

Et je souhaiterais que lorsqu'un utilisateur sélectionne son nom dans la liste déroulante, toutes les informations le concernant s'insérent dans des zones de textes...

Quelle méthode utiliser pour insérer un champ d'une BDD dans une zone de texte ???

Merci d'avance...
djey08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 09h48   #2
Membre expérimenté
 
Étudiant
Inscription : juillet 2004
Messages : 777
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2004
Messages : 777
Points : 527
Points : 527
Pour mettre les valeurs dans les champs il te suffit d'utiliser l'attribut value="ta valeur" et dans le champs il y aura la valeur...
cerede2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 10h07   #3
Invité régulier
 
Inscription : avril 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 31
Points : 5
Points : 5
J'ai déja essayer mais cela ne m'affiche rien....

voivi mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
Nom : <center>
<select name="nom">
    <option value="choix1"></option>
<?php
	mysql_connect("localhost","root","");
	mysql_select_db("base");
	$id = 1 ;
	do 
	{
		$membre = mysql_fetch_assoc (mysql_query ("SELECT * FROM utilisateurs WHERE id = '$id'") ) ;
?>
		<option value="choix2"><?php echo $membre['nom'] ?></option>
<?php
		$id = $id + 1 ;
	}
	while ($membre['nom'] != "") ;
?>
</select></center><br>
 
<?php
	$nom = $_POST['nom'] ;
	$donnees = mysql_fetch_assoc (mysql_query ("SELECT * FROM utilisateurs WHERE nom = '$nom'") ) ;
	$prenom = $donnees['prénom'] ;
?>
Prénom : <center><input type="text" name="a_prénom"  value = <?php $prenom ?> ></center><br>
de plus, J'ai un message d'erreur comme quoi l'ndex nom est indéfini...
djey08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 10h25   #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
Bonjour

D'abord un conseil pour résoudre les problèmes de requêtes plus facilement : au lieu d'une syntaxe de cette forme :
Code php :
$membre = mysql_fetch_assoc (mysql_query ("SELECT * FROM utilisateurs WHERE id = '$id'") ) ;
utilise de préférence une syntaxe de cette forme :
Code php :
1
2
3
$rq="SELECT * FROM utilisateurs WHERE id = '$id'";
$res=mysql_query ($rq) or die($rq." : ".mysql_error());
$membre = mysql_fetch_assoc ($res) ;
ça ne résoud pas les problèmes mais ça aide à les localiser.

Ensuite, ton problème d'index non défini doit venir du fait que tel que tu l'as écrit, $_POST['nom'] n'existe que si tu as déjà validé le formulaire. Pour résoudre ce problème, il faut ajouter un isset($_POST['nom']) avant d'essayer de récupérer cette variable.
Code php :
1
2
3
4
5
6
7
8
9
10
<?php
if (isset($_POST['nom'])){
	$nom = $_POST['nom'] ;
	$donnees = mysql_fetch_assoc (mysql_query ("SELECT * FROM utilisateurs WHERE nom = '$nom'") ) ;
	$prenom = $donnees['prénom'] ;
?>
Prénom : <center><input type="text" name="a_prénom"  value = <?php $prenom ?> ></center><br>
<?php
}
?>

Mais dans ce cas, il faut cliquer sur un bouton submit pour obtenir la liste des prénoms. je ne suis pas sûre que ce soit ton but...
__________________
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 21/05/2007, 10h32   #5
Invité régulier
 
Inscription : avril 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 31
Points : 5
Points : 5
Ben non, ce n'est pas trop mon but...

J'aimerais que dés que le nom est sélectionné, les autres informations s'affichent directement....


merci pour tes conseils...
djey08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 10h58   #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
Dans ce cas, il faut utiliser du javascript... Ce que tu peux faire, c'est un rechargement automatique via onchange par exemple. (ce n'est pas une solution optimale, mais je ne suis pas experte en JS alors...)
Code html :
1
2
3
4
5
6
7
8
9
10
11
12
13
// on donne un nom au formulaire
<form action="" method="post" name="form">
//...
<select name="nom" onchange="form.submit()"> // lorsque la sélection change, on submit le formulaire
  // on récupère les différentes options...
</select>
// et on réutilise le isset de tout à l'heure
<?php 
if (isset($_POST['nom'])){
//...
}
?>
</form>
__________________
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 21/05/2007, 11h06   #7
Invité régulier
 
Inscription : avril 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 31
Points : 5
Points : 5
Je viens de rajouter la fonction onchange="form.submit()" mais le problème est que la page se recharge mais sans prendre en compte les modifications...

Elle se recharge en "effaçant" même le nom sélectionné dans la liste...
djey08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 11h21   #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
Citation:
Envoyé par djey08
Elle se recharge en "effaçant" même le nom sélectionné dans la liste...
ah oui, c'était le risque, vu que ça reconstruit la liste pour que ça rete sélectionner il faudrait rajouter un selected dans la balise option, mais là je crains qu'on ne se prenne quelque peu la tête...

Bon, en résumant le but de tout ça (histoire de ne pas partir dans la mauvaise direction) :
Tu as une base de donnée avec une table utilisateur(id, nom, prenom...)
Tu as un formulaire qui t'affiche les noms de tous tes utilisateurs dans une liste déroulante.
Quand on clique sur un nom, ça rajoute une seconde liste avec les prenoms de tous les utilisateurs portant ce nom.
Et ensuite ...
Est-ce que j'ai bien compris ?
__________________
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 21/05/2007, 13h47   #9
Invité régulier
 
Inscription : avril 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 31
Points : 5
Points : 5
En fait, non, sur le principe, tu étais bien partie...lol

J'ai donc une liste déroulante avec tous les noms de mes utilisateurs, et ce que je souhaite, c'est une fois le nom choisi, les autres informations (prénom, login ....) s'insérent d'eux-mêmes dans des zones de textes....

Que mon programme aille interroger ma BDD et récupére les info nécessaires pour remplir les zones de textes....

Ai-je assez bien exposer mon problème???

P.S : merci de l'intérêt que tu porte a mon problème
djey08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 14h17   #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
Bon, alors j'ai un peu bidouillé ton code pour qu'il ait une tête qui me plaise davantage
Et avec un peu de chance, en plus il va fonctionner.
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<form action="" method="post" name="form">
	<select name="nom" onchange="form.submit();">
	<?php
		$rq = "SELECT nom FROM utilisateurs";
		$res = mysql_query($rq) or die(" erreur sur $rq : ".mysql_error());
		while ($membre=mysql_fetch_assoc($res)){
			echo "<option value=$membre['nom'] ";
			if (isset ($_POST['nom']) && $_POST['nom']==$membre['nom']){
				echo " SELECTED ";
			}
			echo "/>";
		}
	?>
	</select>
	<?php
	if (isset ($_POST['nom'])){
		$nom=$_POST['nom'];
		$rq2= "SELECT * FROM utilisateurs where nom='$nom'";
		$res2=mysql_query($rq2) or die(" erreur sur $rq2 : ".mysql_error());
		$donnee=mysql_fetch_assoc($res2);
 
		?>
		<input type="text" name="prenom" value="<?php echo $donnee['prenom'];?>" />
		<?php
	}
	?>
</form>
__________________
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 22/05/2007, 08h21   #11
Invité régulier
 
Inscription : avril 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 31
Points : 5
Points : 5
Malheureusement, le code ne fonctionne pas...

J'ai une erreur sur la ligne

Code :
1
2
 
echo "<option value=$membre['nom'] ";

En plus, toute ma mise en page a disparu... il me reste plus qu'une liste déroulante (vide), toutes mes autres zones de texte ne s'affiche plus....
djey08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 09h01   #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
Salut

Pour la mise en page c'est normal : si tu regardes bien, je n'avaisi pas reporté dans mon bout de code les balises <center> et autres étiquettes.

Et effectivement j'ai peut-être tapé un peu vite : il doit manquer des bouts dans la balise option En fait, ta liste existe, mais elle n'affiche pas les valeurs Donc au final, ça donne une liste vide
Comme ça, ça devrait un peu mieux fonctionner :
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<form action="" method="post" name="form">
	Nom : <center>
	<select name="nom" onchange="form.submit();">
	<?php
		$rq = "SELECT nom FROM utilisateurs";
		$res = mysql_query($rq) or die(" erreur sur $rq : ".mysql_error());
		while ($membre=mysql_fetch_assoc($res)){
			echo '<option value="'.$membre['nom'].'" ';
			if (isset ($_POST['nom']) && $_POST['nom']==$membre['nom']){
				echo " SELECTED ";
			}
			echo '>'.$membre['nom'].' </option>';
		}
	?>
	</select></center><br>
	<?php
	if (isset ($_POST['nom'])){
		$nom=$_POST['nom'];
		$rq2= "SELECT * FROM utilisateurs where nom='$nom'";
		$res2=mysql_query($rq2) or die(" erreur sur $rq2 : ".mysql_error());
		$donnee=mysql_fetch_assoc($res2);
 
		?>
		Prénom : <center>
		<input type="text" name="prenom" value="<?php echo $donnee['prenom'];?>" >
		</center><br>
		<?php
	}
	?>
</form>
__________________
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 22/05/2007, 09h16   #13
Invité régulier
 
Inscription : avril 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 31
Points : 5
Points : 5
Ton code marche déja beaucoup mieux et je ten remercie...

Mais il me reste un petit soucis :

dans ma zone de teste où le prénom doit s'afficher, c'est <br /> qui s'affiche....
djey08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 09h32   #14
Invité régulier
 
Inscription : avril 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 31
Points : 5
Points : 5
C'est bon, j'ai retrouvé l'erreur (c'était sur l'écriture du champ de ma BDD)

Je te remercie beaucoup de t'être intéressée à mon problème..

Merci...
djey08 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 14h02.


 
 
 
 
Partenaires

Hébergement Web