Problème de récupération de formulaire POST

Résolu/Fermé
nouns62 Messages postés 110 Date d'inscription jeudi 3 novembre 2011 Statut Membre Dernière intervention 3 février 2014 - 19 avril 2013 à 11:31
nouns62 Messages postés 110 Date d'inscription jeudi 3 novembre 2011 Statut Membre Dernière intervention 3 février 2014 - 22 avril 2013 à 10:29
Hello, world!
Je développe un site intranet pour mon entreprise, et je bloque sur une fonctionnalité que je dois ajouter. Je vous explique:
Le site est développé en html/php/js et gère une BD mySQL.
Les employés qui utilisent ce site sont des "délégués" et gèrent des dossiers de clients, appelés "majeurs". Lorsqu'ils se connectent, je récupère dans la BD toutes les infos sur les majeurs qu'ils gèrent pour les afficher dans un tableau.
Pour chaque dossier le majeur doit pouvoir stocker dans la BD des "consignes", donc j'ajoute à la fin de chaque ligne du tableau une textarea avec comme id le mot 'consigne' suivi du code du majeur correspondant. Et c'est lors de la récupération de la saisie en POST que cela pose problème : les $_POST ne contiennent rien!
Je vous montre mon code et je vous explique plus en détail :

<?php
	
	include("./module/connexion.inc");
	include("./module/functions_menu.php");
	include("./module/functionsbis.php");// avec criteria Open
	
	session_start();
	
	//affichage des menus (cf functions_menu.php)
	head();
	menu_haut('1');
	menu_rens('1');
		
	$requete="SELECT Code,Nom,Prenom,motiffin FROM majeur where code='".$_SESSION['majeur_select']."'";
	$req1=mysql_query($requete);
	
	
	//<!--*********** Affichage de la liste des majeurs ***********-->
	
	$delegue = mysql_fetch_array(mysql_query("select Code,PGT from delegue where login='".$_SESSION['login']."'"));
				
	$query="select code,nom,prenom,mesure from majeur where Delegue='".$delegue['Code']."' AND motiffin=' ' ORDER BY nom";
	$res=mysql_query($query);
						
	$nb=mysql_num_rows($res);
	if ($nb==0) {
		$query="select code,nom,prenom,mesure from majeur where Delegue='".$delegue['PGT']."' AND motiffin=' ' and delegue <> 0 ORDER BY nom";
		
		$res=mysql_query($query);
	}
	
	echo '<form method="post" action="formuconsignes.php" name="formConsignes"><br /> ';
		
		$arrcodes  = array();
		
		for ($i=0;$rowma=mysql_fetch_array($res);++$i)
		{
			if (!$i){
				echo'<br><u><h2>Ajouter des consignes :</h2></u>
				<blockquote>';
				echo '<table border=0 width="85%">';
		
				echo "<tr><td></td><td></td><td></td><td></td><td><input type=submit value=Enregistrer></td></tr>";
				echo "<tr>
						<td width='13%'><b><u>Code </u></b></td>
						<td width='30%'><b><u>Nom </u></b></td>
						<td width='30%'><b><u>Prenom </u></b></td>
						<td width='13%'><b><u>Mesure </u></b></td>
						<td width='30%'><b><u>Consignes</u></b></td>
						</tr></br>";
				}							
				echo "<tr>
						<td>".$rowma['code']."</td>
						<td>".$rowma['nom']."</td>
						<td>".$rowma['prenom']."</td>
						<td>".$rowma['mesure']."</td>";
						
						
				$c = $rowma['code'];
				$idc = 'consigne'.$c;
				
				echo '<br/>$c=$rowma[code]=>'.$c;
				echo '<br/>$idc=consigne.$c=>'.$idc;
				
				echo '<td><textarea name="'.$idc.'" id="'.$idc.'" rows="3" cols="50">'.$c.'</textarea></td></tr>';
				
				array_push($arrcodes, $c);
				
		}//for
		
		echo "<br/>arrcodes: ";
		print_r($arrcodes);
		
						
		if ($i){
			echo "<tr><td></td><td></td><td></td><td></td><td><input type=submit value=Enregistrer></td></tr>";
		}
		else
			echo "<tr>
					<td valign=top height=40 width=300>
						<div style='color: #CC0000; text-decoration: underline;'>
							Vous n'avez pas de majeur.
						</div>
					</td>
				</tr>";
				
	//odbc_close_all();
	
	
	echo"</form></table></blockquote>";
	
	
?>
Et le formuconsignes.php, qui gère le form:

<?php
	
	
	include("./consignes_test.php");
	
	
	$rqcode = "SELECT code FROM delegue WHERE login='".$_SESSION['login']."'";
	$codedelegue = mysql_fetch_array(mysql_query($rqcode));
	
	
	foreach($arrcodes as $codemaj) {
		echo "<br/>codemaj: ".$codemaj;
		//echo "post: ".$_POST['consigne'.$codemaj];
		echo "<br/>";
		if (isset($_POST[$idc])) echo "post contient: ".$_POST[$idc];
		else echo "rien dans post!";

		/*
		$rq_insert="INSERT INTO intervention(Rapport, CodeMajeur, CodeDelegue, Type, SSType, DateSaisie)
					VALUES (".$_POST['consigne'.$codemaj].",".$codemaj.",".$codedelegue['code'].",39,0,now())";
	
		$res=mysql_query($rq_insert) or die(mysql_error());
		*/
	
	
	}
	
?>

Comme vous pouvez le voir, j'ai testé en affichant les valeurs. Ainsi, $idc affiche bien la valeur que je souhaite, c'est à dire consigneSU 0003 et consigneSU 0004 (SU XXXX correspond au code du majeur).
Mais quand je veux l'utiliser comme attribut pour les textarea, impossible de récupérer les valeurs!
J'avait auparavant testé d'utiliser comme attribut juste la chaîne 'consigne', cela marchait, mais évidemment, toutes les textarea créées par le for avaient le même attribut et on ne récupérait que le post de la dernière zone.

Je vous serait très reconnaissant d'essayer de m'aider à m'en sortir, merci!
A voir également:

9 réponses

nouns62 Messages postés 110 Date d'inscription jeudi 3 novembre 2011 Statut Membre Dernière intervention 3 février 2014 97
Modifié par nouns62 le 19/04/2013 à 12:09
UP! :)

En passant, voilà les affichages du browser:

$c=$rowma[code]=>SU 0003
$idc=consigne.$c=>consigneSU 0003
$c=$rowma[code]=>SU 0004
$idc=consigne.$c=>consigneSU 0004

TABLEAU AVEC ZONES

codemaj: SU 0003
rien dans post!
Notice: Undefined index: consigneSU 0003 in C:\Program Files\EasyPHP-5.3.9\www\suiviDev00\formuconsignes.php on line 25
+++++ post SU 0003 contient:
codemaj: SU 0004
rien dans post!
Notice: Undefined index: consigneSU 0003 in C:\Program Files\EasyPHP-5.3.9\www\suiviDev00\formuconsignes.php on line 25
+++++ post SU 0003 contient:

VOILA, AIDEZ MOI SVP! é_è
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
19 avril 2013 à 15:18
Salut !

Alors truc tout bête, on ne peut pas mettre de <form> dans un <table>, c'est surement pour ca que ca ne marche pas !
Après cela a peut être évolué, donc à vérifier !
0
nouns62 Messages postés 110 Date d'inscription jeudi 3 novembre 2011 Statut Membre Dernière intervention 3 février 2014 97
Modifié par nouns62 le 19/04/2013 à 15:39
Ah bon? Donc comment, faire, si je mets la déclaration du form à l'extérieur de la table, les données des zones saisies pourront quand-même être récupérées?
tu me diras, "y'a qu'une façon de le savoir!"... je teste!
Merci beaucoup de ta réponse!

EDIT: après vérification, la déclaration du formulaire est à l'extérieur de la balise <table>...
En gros, j'ai utilisé la même variable $idc partout pour être certain qu'il n'y ait pas d'erreur, donc l'id et le name, et même le contenu des textarea est identique, et conforme à ce que j'attends. J'utilise cette même variable dans le $_POST. Mais isset($_POST[$idc]) renvoie toujours false!! Je deviens fou!
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
Modifié par jeremy.s le 19/04/2013 à 15:37
Je suis entrain de fouiller sur le net là, ya des bidouillages de possible donc à voir.
Sinon tu peux gardé ta structure mais va falloir utilisé AJAX pour envoyer tes données !

EDIT : Alors à priori tu peux mettre un <form> uniqement dans un <td>, mais il faut que tout le <form> soit dedans !
0

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

Posez votre question
nouns62 Messages postés 110 Date d'inscription jeudi 3 novembre 2011 Statut Membre Dernière intervention 3 février 2014 97
19 avril 2013 à 15:53
Oulà, le AJAX, j'ai juste des notions...
Je vais essayer de tester de changer l'endroit de la déclaration du form, on verra...
Merci beaucoup pour ton aide!
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
19 avril 2013 à 15:58
Bah t'as juste à mettre tout ton <form> dans un <td> à priori. Donc test et tu verras !
Sinon dis moi et on verra comment faire en AJAX ;-)
0
nouns62 Messages postés 110 Date d'inscription jeudi 3 novembre 2011 Statut Membre Dernière intervention 3 février 2014 97
Modifié par nouns62 le 19/04/2013 à 16:23
j'ai essayé, et forcément, les boutons "enregistrer" n'étaient plus dans le form donc aucune réaction... j'en ai donc juste ajouté un dans la balise, ce qui donne... ( attention aux yeux...)

echo '<td><form method="post" action="formuconsignes.php" name="formConsignes"><textarea name="'.$idc.'" id="'.$idc.'" rows="3" cols="50">'.$idc.'</textarea><input type=submit value=Enregistrer></form></td></tr>';

résultat quand on clique sur ce 3ème bouton? idem, ça affiche "rien dans le post!"
(
if (isset($_POST[$idc])) echo "post contient: ".$_POST[$idc];
else echo "rien dans post!";
)

Je crains de devoir me mettre à l'ajax...
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
19 avril 2013 à 16:42
Alors déjà, il manque des " " autour de Enrengsitrer dans ton input submit.

Ensuite, fait un print_r($_POST) et met ce qu'il te donne stp :)
0
nouns62 Messages postés 110 Date d'inscription jeudi 3 novembre 2011 Statut Membre Dernière intervention 3 février 2014 97
22 avril 2013 à 10:29
J'ai pratiquement résolu le problème! En faisant divers tests et affichage je me suis rendu compte que dans l'id du majeur, l'espace était remplacé dans le $_POST par un underscore "_" ! J'ai donc ajouté cette fonction:
$consignes = preg_replace("/ /","_",$idc);
et la magie opère à nouveau!
Merci beaucoup quand même d'avoir essayé de m'aider jeremy!
et... content de ne pas avoir à faire à AJAX! XD
0