Problème de récupération de formulaire POST
Résolu
nouns62
Messages postés
110
Date d'inscription
Statut
Membre
Dernière intervention
-
nouns62 Messages postés 110 Date d'inscription Statut Membre Dernière intervention -
nouns62 Messages postés 110 Date d'inscription Statut Membre Dernière intervention -
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 :
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!
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:
- Problème de récupération de formulaire POST
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Convertisseur récupération de texte - Guide
- Récupérer compte outlook sans formulaire - Forum Hotmail / Outlook.com
9 réponses
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! é_è
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! é_è
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 !
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 !
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!
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!
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 !
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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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!
Je vais essayer de tester de changer l'endroit de la déclaration du form, on verra...
Merci beaucoup pour ton aide!
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 ;-)
Sinon dis moi et on verra comment faire en AJAX ;-)
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...
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...
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 :)
Ensuite, fait un print_r($_POST) et met ce qu'il te donne stp :)
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
$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