Formulaire php

Fermé
DAG - 18 sept. 2008 à 15:43
 DAG - 23 sept. 2008 à 17:28
Bonjour,
Je suis en train de développer une application en PHP dans laquelle j'affiche un tableau. Dans ce tableau je dresse une liste des utilisateurs selon un certain critère.
Je souhaite que celui qui manipulera le site web puisse appliquer ou pas une modification pour chacun des utilisateurs listés dans le tableau.

Je créé donc ma requête qui va sélectionner les utilisateurs que je veux.
Je la parcourt dans un "while" en créant pour chaque entrée une ligne de tableau et un formulaire dans lequel je garde en mémoire l'ID de l'utilisateur concerné ainsi que le choix fait par l'utilisateur.

J'affiche donc dans chaque ligne du tableau : un nom, un prénom, un radio bouton (oui) un radio bouton (non) et un bouton ok.

Actuellement il faut donc modifier les lignes une par une pour appliquer les modifs aux utilisateurs listés...
Le truc, c'est qu'il y a plus de 5000 utilisateurs !! Alors bien que j'impose plusieurs condition lorsque je liste les utilisateur dans mon tableau, j'arrive souvent à plus de 100 utilisateur listés...

Je souhaiterais que celui qui utilise le site puisse cocher les radio boutons (oui) ou (non) pour chaque utilisateurs puis valider le tout en cliquant sur un bouton Ok en bas du tableau.
Ainsi toutes les lignes serons traités en même temps.

Je ne vois pas comment traiter toutes les requêtes de modif d'un seul coup ? Comment garder en mémoires toutes les valeurs des champs du tableau ?

Est-ce que quelqu'un pourrais m'aider en me donnant la marche à suivre ?

4 réponses

Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
18 sept. 2008 à 16:03
Bonjour

Il faudrai n'utiliser qu'un seul formulaire

Chaques groupe de bouton radio porterai comme name l'ID de l'utilisateur

en validant on envoi le formulaire (donc les 100 boutons radio) à la page PHP qui va effectuer le traitement

Sur cette page PHP tu est capable de boucler sur les valeurs grace à un :

foreach($_POST as $nom=>$valeur) {

echo $nom //affiche l'id de l'utilisateur (qui etait le nom du groupe de bouton radio)
echo $valeur //qui est la valeur du groupe de bouton radio

}

voila donc dans cette boucle tu peux faire ta requete d'Update
1
Ok, merci je vais essayer ce que tu me dis, je pense que ça devrais marcher !

Merci encore !
0
ça marche comme tu m'a dis de faire, mais j'ai encore un peu de mal...

Voici le code qui affiche le tableau :
<table width="400" border="1" cellpadding="1" cellspacing="0">
    <caption><strong>Emails personnels</strong></caption>
    <tr align="center" bgcolor="#328dc9">
    <th>Nom</th>
    <th>Prenom</th>
    <th>Ancien</th>
    <th>Nouveau</th>
    <th>Accepter</th>
    <th>Refuser</th>
    </tr>
<?php
    echo "<form action=\"warning_OD.php\" method=\"post\" enctype=\"multipart/form-data\" name=\"form8\">";
    while($dataEight = mysql_fetch_array($reqEight))
    {
        echo "<tr>";
        echo "<td style=\"font-size: 10px;\">$dataEight[nom_OD]</td>";
        echo "<td style=\"font-size: 10px;\">$dataEight[prenom_OD]</td>";
        echo "<td style=\"font-size: 10px;\">$dataEight[mail_perso_curr_OD]</td>";
        echo "<td style=\"font-size: 10px;\">$dataEight[mail_perso_next_OD]</td>";
        echo "<td><center><input type=\"radio\" name=\"$dataEight[ID]\" value=accept></center></td>";
        echo "<td><center><input type=\"radio\" name=\"$dataEight[ID]\" value=refuse></center></td>";
        echo "<input type=\"hidden\" value=\"$dataEight[mail_perso_curr_OD]\" name=\"hiddenMailPersoThree\">";
        echo "<input type=\"hidden\" value=\"$dataEight[mail_perso_next_OD]\" name=\"hiddenMailPersoFour\">";
        echo "</tr>";
    }
echo "</table>";
echo "<td><center><input type=\"submit\" name=\"Submit\" value=\"Ok\"></center></td>";
echo "</form>";
?>

Et voici le code qui traite le résultat :
foreach($_POST AS $key=>$value) 
{ 
	echo "\$key = " . $key . "<br>";
	echo "\$value = " . $value . "<br>";
}


Et ça m'affiche (si je ne valide qu'une seule personne par exemple) :
$key = 202
$value = accept
$key = hiddenMailPersoThree
$value = toto.titi@truc.fr
$key = hiddenMailPersoFour
$value = toto.tata@truc.com
$key = Submit
$value = Ok


En fait tableau affiche le nom de la personne, le prenom, son adresse email, et son adresse email modifiée. Et enfin les deux radio boutons.
On voit bien que ça transmet par POST :
- l'ID -> ok
- la valeur du radio bouton -> ok
Je peux donc faire mes test du genre :
- si le radio bouton vaut "accept" alors...
- si le radio bouton vaut "refuse' alors....
Mais j'aimerais récupérer aussi la valeur de l'email et la valeur de l'email modifié...
C'est ce que j'ai essayé de faire avec : $dataEight[mail_perso_curr_OD] name="hiddenMailPersoThree
Mais les email récupérés ne correspondent pas... Et en plus il me renvois le bouton valider aussi (bon ça je peux le traiter par la suite).

Si quelqu'un a une idée ?
0
Je me répond, c'était simple en fait... Comme je récupère l'ID, je peux tout faire !

Voici le code pour ceux que ça intéresse :
Le tableau :
<?php
$statementEight = "
				SELECT 
					date_modif_od.ID_OD,
					date_modif_od.mail_perso_curr_OD,
					date_modif_od.mail_perso_next_OD,
					ouvrant_droit.ID,
					ouvrant_droit.nom_OD,
					ouvrant_droit.prenom_OD
				FROM
					ouvrant_droit
					INNER JOIN
					date_modif_od
				ON
				(
					date_modif_od.ID_OD=ouvrant_droit.ID
				);
				";
$reqEight = mysql_query($statementEight) or die('<br>Erreur base de donnée !<br>' . $statementEight . '<br>'.mysql_error());
?>
<h3>Voici les différences relvées entre le/les fichiers rentrés et les données déjà présentes dans la base de référence :</h3>
<br>
<h4></h4>
			<table width="400" border="1" cellpadding="1" cellspacing="0">
			<caption><strong>Emails personnels</strong></caption>
			<tr align="center" bgcolor="#328dc9">
				<th>Nom</th>
				<th>Prenom</th>
				<th>Ancien</th>
				<th>Nouveau</th>
				<th>Accepter</th>
				<th>Refuser</th>
				<!--<th>Valider</th>-->
			</tr>
			<?php
			echo "<form action=\"warning_OD.php\" method=\"post\" enctype=\"multipart/form-data\" name=\"form8\">";
			while($dataEight = mysql_fetch_array($reqEight))
			{
				if(empty($dataEight[mail_perso_curr_OD]) && empty($dataEight[mail_perso_next_OD]))
				{
					continue;
				}
				else
				{
					echo "<tr>";
						echo "<td style=\"font-size: 10px;\">$dataEight[nom_OD]</td>";
						echo "<td style=\"font-size: 10px;\">$dataEight[prenom_OD]</td>";
						echo "<td style=\"font-size: 10px;\">$dataEight[mail_perso_curr_OD]</td>";
						echo "<td style=\"font-size: 10px;\">$dataEight[mail_perso_next_OD]</td>";
						echo "<td><center><input type=\"radio\" name=\"$dataEight[ID]\" value=accept></center></td>";
						echo "<td><center><input type=\"radio\" name=\"$dataEight[ID]\" value=refuse></center></td>";
					echo "</tr>";
				}
			}
			echo "</table>";
			echo "<td><center><input type=\"submit\" name=\"Submit\" value=\"Ok\"></center></td>";
			echo "</form>";

Et le traitement :
foreach($_POST AS $key=>$value) 
{ 
	//echo "\$key = " . $key . "<br>";
	//echo "\$value = " . $value . "<br>";
	if($value == 'accepte')
	{
		echo "accepte<br>";
		$statementOne = 	"SELECT t1.mail_perso_curr_OD, t1.mail_perso_next_OD, t2.nom_OD, t2.prenom_OD
									FROM date_modif_od AS t1 INNER JOIN ouvrant_droit AS t2
									WHERE (t1.ID_OD = '" . $key . "' AND t2.ID = '" . $key . "');";
		$reqOne = mysql_query($statementOne) or die('<br>Erreur base de donnée !<br>' . $statementOne . '<br>'.mysql_error());
		while($data = mysql_fetch_array($reqOne))
		{
			echo $data[mail_perso_curr_OD] . " - " . $data[mail_perso_next_OD] . " - " . $data[nom_OD] . " - " . $data[prenom_OD] . "<br><br>";
		}
	}
	
	elseif($value == 'refuse')
	{
		echo "refuse<br>";
		$statementOne = 	"SELECT t1.mail_perso_curr_OD, t1.mail_perso_next_OD, t2.nom_OD, t2.prenom_OD
									FROM date_modif_od AS t1 INNER JOIN ouvrant_droit AS t2
									WHERE (t1.ID_OD = '" . $key . "' AND t2.ID = '" . $key . "');";
		$reqOne = mysql_query($statementOne) or die('<br>Erreur base de donnée !<br>' . $statementOne . '<br>'.mysql_error());
		while($data = mysql_fetch_array($reqOne))
		{
			echo $data[mail_perso_curr_OD] . " - " . $data[mail_perso_next_OD] . " - " . $data[nom_OD] . " - " . $data[prenom_OD] . "<br>";
		}
	}
}
0