Pb récupération de données

Eléphant du PHP | 91 Messages

20 août 2007, 15:05

Bonjour,

Je souhaite afficher dans un formulaire le récapitulatif de la saisie d'autres formulaires. Pour ce faire, j'ai plusieurs formulaires de saisie dans une base de données Postgres. Le formulaire récapitulatif étant le dernier, bien sûr.
Pour l'instant, j'arrive à récupérer ce que j'ai saisi dans mes champs texte mais j'ai un problème pour récupérer les données sélectionnées avec les boutons radio et les listes déroulantes.
Pour les boutons radio, je ne sais pas comment faire.
Et pour les listes déroulantes, j'ai fait quelquechose qui marche lorsque je ne traite qu'un seul formulaire et que le récapitulatif arrive à la suite de celui-ci. Mais le but est de faire la saisie de tous les formulaires puis d'afficher seulement à la fin le récapitulatif de la saisie.

Je suis désolée ce n'est pas très clair alors posez moi des questions complémentaires.

Formulaire de saisie:
<FORM action="traitement_saisie1.php" method="POST" name="envoi" onSubmit="return check_field();">
		
		<div id="p1"> La structure</div>
		
		<div id="p1_bis">Nom :<BR>
		<input id="Nom_structure" name="Nom_structure" type="text" size="45"><BR>
		Sigle :<BR>
		<input name="Sigle" type="text" size="10"><BR>
		Adresse :<BR>
		<input id="Adresse" name="Adresse" type="text" size="45" value="dede"><BR>
		Commune :<BR>
		<select id="Commune" size="1" name="Commune"><option value="">-- Choisissez une commune --</option>
				<!--Intégration des communes de la base de données dans la combobox--->
				<?php
						// requête sql
						$sql = "SELECT DISTINCT com_nom, com_insee FROM commune ORDER BY com_nom asc";
	
						// on sélectionne toutes les entrées nom de commune de la table commune
						$req=pg_query($sql) or die('Erreur SQL !'.$sql.'<br>'.pg_resul_error());
						
						//On affiche ces entrées
						while ($line=pg_fetch_array($req))
						{
							echo "<option name='Commune' value=\"".$line['com_insee']."\">".$line['com_nom']."</option>";
						}
				?></select><BR></div>
</FORM>
Formulaire récap
<div id="P2">La structure</div>
	
	<div id="P3">Nom:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	<?php
		$sql = "SELECT str_nom FROM structure WHERE str_id=".$str_id."";
		$req = pg_query($sql) or die('Erreur SQL !'.$sql.'<br>'.pg_resul_error());
		$resul_nom_structure = pg_fetch_assoc($req);
	?>
	<input id="Nom_structure" name="Nom_structure" type="text" size="45" value="<?php echo $resul_nom_structure['str_nom']?>"><BR>
	Adresse:&nbsp;&nbsp;&nbsp;
	<?php
		$sql = "SELECT str_adresse FROM structure WHERE str_id=".$str_id."";
		$req = pg_query($sql) or die('Erreur SQL !'.$sql.'<br>'.pg_resul_error());
		$resul_adresse_structure = pg_fetch_assoc($req);
	?>
	<input id="Adresse" name="Adresse" type="text" size="45" value="<?php echo $resul_adresse_structure['str_adresse']?>"><BR>
	Commune:
	<?php
		$sql = "SELECT com_nom FROM commune WHERE com_insee=".$Commune."";
		$req = pg_query($sql) or die('Erreur SQL !'.$sql.'<br>'.pg_resul_error());
		$resul_com_nom = pg_fetch_assoc($req);
	?>
	<input id="Commune" name="Commune" type="text" size="35" value="<?php echo $resul_com_nom['com_nom']?>"><BR>

ViPHP
ViPHP | 5924 Messages

21 août 2007, 03:24

Pour les boutons radio, si tu as plusieurs radios avec le même nom :
<input type="radio" name="machin" value="truc1" />
<input type="radio" name="machin" value="truc2" />
<input type="radio" name="machin" value="truc3" />
Tu récupères la valeur cochée par $_GET['machin'] ou $_POST['machin'].

Eléphant du PHP | 91 Messages

21 août 2007, 09:18

Merci mais comment fait-on pour réafficher ce qui a été saisi dans une nouvelle collection de boutons radio.
Ce que tu me donnes, je l'ai utilisé pour la saisie initiale, puis le $_POST['machin'] dans le traitement pour l'enregistrer dans ma BD mais maintenant je souhaite afficher à l'aide de bouton radio dans un nouveau formulaire récapitulatif.

En ce qui concerne la sélection dans une liste déroulante que je souhaite afficher dans un champs texte, j'ai fait cela:
Commune:
	<?php
		$sql = "SELECT com_nom FROM commune WHERE com_insee=".$Commune."";
		$req = pg_query($sql) or die('Erreur SQL !'.$sql.'<br>'.pg_resul_error());
		$resul_com_nom = pg_fetch_assoc($req);
	?>
	<input id="Commune" name="Commune" type="text" size="35" value="<?php echo $resul_com_nom['com_nom']?>"><BR>
Mais j'obtiens ceci comme message d'erreur:
Query failed: ERROR: syntax error at end of input LINE 1: SELECT com_nom FROM commune WHERE com_insee= ^

Donc j'ai pensé mettre '".$Commune."'
Mais j'obtiens l'erreur suivante:
Query failed: ERROR: invalid input syntax for integer: ""

Est ce que quelqu'un a une petite idée?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 août 2007, 11:12

Pour restituer une valeur dans un groupe de boutons radios, il suffit de cocher par défaut le bouton souhaité en ajoutant l'attribut "checked" dans celui-ci

Quant à ton erreur, le champ "com_insee" semble être un nombre, et le caractère ^ n'en est définitivement pas un. Le fait d'ajouter des apostrophes autour va transformer ta variable en chaine et dans la mesure ou ton champ doit être un nombre, ta base te retourne une erreur.

La solution est simple, si le champ com_insee est numérique, ta variable $Commune doit être un nombre.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

d0m
Mammouth du PHP | 1141 Messages

21 août 2007, 11:17

le champ com_insee est un entier dans ta base,
et $commune vaut quoi?

Eléphant du PHP | 91 Messages

21 août 2007, 14:19

En fait, il semblerait que $Commune ne renvoit rien. Quand j'affiche ma page juste après ma page de saisie, tout marche mais quand je l'affiche après plusieurs pages de saisie, ça ne marche plus et c'est là que j'ai un message d'erreur.
Pour être plus claire, j'ai 6 pages de saisie d'un questionnaire d'enquête et à la fin de la saisie, je souhaite faire afficher tous les éléments saisis. Quand je fais la saisie de la page 1 puis le récapitulatif de ma saisie, ça marche mais à partir du moment où je saisie plus de 2 pages, ça ne marche plus.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

21 août 2007, 14:34

Bonjour,

Pour passer les données de la page1 à la page6, comment procèdes tu ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 91 Messages

21 août 2007, 14:39

Pour la saisie 1, j'ai un formulaire qui renvoie une action "traitement_saisie1.php". Dans ce fichier, je fais toutes mes requêtes d'enregistrement dans ma base de données et à la fin j'ai un "Include" vers ma page de saisie 2. Et ainsi de suite pour mes 6 pages de saisies. Dans le fichier "traitement_saisie6.php", je pensais renvoyer ma page récapitulatif avec toujours un "Include".