Récupérer name d'une input qui est à l'interieur d'une boucle

Résolu
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014 - 30 mai 2014 à 01:50
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014 - 3 juin 2014 à 21:31
Bonjour,
j'ai un probleme concernant la récupération du valeur input dans une boucle.
voila mon code:

<?php
mysql_connect("localhost","root","123") or die(mysql_error());
mysql_select_db("basepfe")or die('Pas de Base de donn\351');
$sql=("SELECT t.num, t.nomE, t.prenom
FROM etudiant AS t, filiere AS f
WHERE f.nomF = '$e'
AND f.annee = '$d'");
$t=mysql_query($sql);
while($result=mysql_fetch_array($t))
{
$num = $result['num'];
$nom = $result['nomE'];
$prenom = $result['prenom'];
//echo"<tr><th><input type='text' name='note2' value=''/></th></tr>"
?>
</tr>
<th><?php echo $num; ?></th>
<th><?php echo $nom; ?></th>
<th><?php echo $prenom; ?></th>

<?php
for($i=0;$i<$nbResult;$i++){
echo'<th><input type="text" name='.$i.' value=""/></th>';
}
?>
</tr>
mon prob c'est de récupérer la valeur du name pour l'utiliser dans des req sql.
voila le résultat:

comment différencier les cases qui se résulte d'une meme ligne.
pouvez vous m'aider svp ?merci d'avance.
A voir également:

12 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
30 mai 2014 à 19:42
Bonsoir,

Ce que tu peux faire, c'est mettre un nom et un numéro :
Dans la génération de la ligne :
Name="Nom'.$i'"

Puis pour récupérer les données :
$_GET['Nom'.$i]

Si tu as besoin de faire une liste des valeurs, soit tu boucles avec un test de la fonction "isset", soit tu utilises "foreach".
0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
30 mai 2014 à 20:22
je l'ai ajusté comme ca
<?php 
//echo $nbResult;


for($i=0;$i<$nbResult;$i++){
echo'<th><input type="text" Name="Nom'.$i'" value=""/></th>';//ligne 72
}
?>

mais il m'affiche un erreur:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in C:\AppServ\www\pfe\test1\type.php on line 72
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
30 mai 2014 à 20:32
Tu as oublié le . après le $i.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
31 mai 2014 à 23:47
Bonjour,

j'ai un probleme concernant la récupération du valeur input dans une boucle.

La récupération de la valeur des inputs dans une boucles ?
Dans ton code je ne vois aucun code qui récupère la valeur de tes inputs... ou alors je ne comprend pas ta question....

Peux tu essayer de reformuler en étant le plus précis et clair possible ?

Je te conseille également de ne pas intercaler autant de php au milieu de ton HTML... fais directement tout en PHP..

comme par exemple ( au passage j'y ai mis des commentaires/questions... merci d'y répondre..) :

<?php 
	mysql_connect("localhost","root","123") or die(mysql_error());
	mysql_select_db("basepfe")or die('Pas de Base de donn\351');
	
	// Présentation de la requête avec des retours à la ligne
	// c'est plus lisible...
	 $sql="SELECT t.num
				,t.nomE
				,t.prenom
			FROM etudiant AS t
				,filiere AS f
			WHERE f.nomF = '$e'
			AND f.annee = '$d'";
			
	 $t=mysql_query($sql);
	
	 while($result=mysql_fetch_array($t)){
		$num = $result['num'];
        $nom = $result['nomE'];
        $prenom = $result['prenom'];
		
		echo "<tr>
              </tr>
                <th><".$num."</th>
                <th>".$nom."</th>
                <th>".$prenom."</th>";
						
	    // A quoi correspond ta variable : $nbResult
		// Où l'as tu initialisée dans ton code ?
		
		for($i=0;$i<$nbResult;$i++){
			echo'<th><input type="text"  name="'.$i.'" value=""/></th>';
		}
	
	  echo "</tr>";
	 
	 // ....
	 // Fin du While
	 }
?>

0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
1 juin 2014 à 00:50
oui c'est ca mon probleme j'ai pas arrivé à écrire une req qui fait la récuperation des valeurs entrés dans une boucle qui fait la création auto des input selon le nombre des contoles entrés par le prof.
mysql_connect("localhost","root","123") or die(mysql_error());
	mysql_select_db("basepfe")or die('Pas de Base de donn\351');
	$sql1= ("(SELECT t.TYPE
	FROM TYPE AS t, assocts AS l, smodule AS s, filiere AS f
	WHERE t.idT = l.idT
	AND l.idS = s.idS
	AND nomF = '$e'
	AND annee ='$d'
	AND nomS ='$c')");
	$u=mysql_query($sql1);
	$nbResult = mysql_num_rows($u);
		while($resu=mysql_fetch_array($u))
                                                {
					$type1 = $resu['TYPE'];
					echo "<th>".$type1."</th>"; 
				}
?>
              		
	<?php 
	mysql_connect("localhost","root","123") or die(mysql_error());
	mysql_select_db("basepfe")or die('Pas de Base de donn\351');
	$sql=("SELECT t.num, t.nomE, t.prenom
           FROM etudiant AS t, filiere AS f
           WHERE f.nomF = '$e'
            AND f.annee = '$d'");
	      $t=mysql_query($sql);
		while($result=mysql_fetch_array($t))
                                                {
						  $num = $result['num'];
                                                    $nom = $result['nomE'];
                                                    $prenom = $result['prenom'];
												 //echo"<tr><th><input type='text' name='note2' value=''/></th></tr>"
?>
              </tr>
                    <th><?php echo $num; ?></th>
                    <th><?php echo $nom; ?></th>
                    <th><?php echo $prenom; ?></th>
			
		<?php 
//boucle qui crée les input selon les types d'évaluations créé par le prof 
					for($i=0;$i<$nbResult;$i++){
			echo'<th><input type="text"  name='.$i.' value=""/></th>';
					}
					?>
                </tr>
				<?php 
				}	
				
echo "<script> location.reload(); <script>";?> 


j'éspére que c'est clair,mercii bcp
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
1 juin 2014 à 01:17
j'éspére que c'est clair,
NON...

c'est ca mon probleme j'ai pas arrivé à écrire une req qui fait la récuperation des valeurs entrés dans une boucle
... ce qui signifie ??

=> Tu n'as pas réussi à écrire la requête ? ( problème SQL et non PHP alors)

=> Ou bien .. tu ne parviens pas à générer les Input suite à la requête (aux requêtes devrais-je dire..) que tu as écris ??



J'ai l'impression que ton (tes) soucis viennent plus d'une "logique" de programmation que d'un souci de codage à proprement parlé...


Il semblerait que tu pourrais ne faire qu'une seule requête pour récupérer toutes les informations nécessaires plutôt que d'en faire deux et essayer des les utiliser en parallèle...

Mais pour que l'on puisse comprendre il faut :
1 - Que tu nous fournisses :
A - La structure de tes tables
B - Quelques exemples de données

2 - Que tu formules le plus clairement possible ( dans un Français correcte ) ton besoin en nous donnant le maximum d'information sur ce que tu souhaites faire..



0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
1 juin 2014 à 01:32
Et puis :
Ton code pour te connecter à ta BDD ...
	mysql_connect("localhost","root","123") or die(mysql_error());
	mysql_select_db("basepfe")or die('Pas de Base de donn\351');

tu n'as besoins de ne le mettre qu'une seule fois... pas à chaque fois que tu veux faire une requête//
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
1 juin 2014 à 01:43
Je rajouterai enfin que tes requêtes n'ont aucun sens..
Tu mets des tables dans tes FROM mais tu ne fais aucune liaisons entre elles dans tes WHERE.

ce qui appuie d'autant plus mes remarques précédentes sur le besoin de nous fournir un DUMP de tes tables....

Il devient également impératif (pour toi) que tu commences à tester tes requêtes directement dans ta BDD ( en passant par phpmyadmin ou via un logiciel comme HeidiSQL) pour que tu te rende compte des données retournées...et ainsi voir si cela correspond à tes attentes...et cela avant même d'essayer des les manipuler dans du PHP ... !
0

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

Posez votre question
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
1 juin 2014 à 02:29
1-mld:


2-la requete que je veux exécuté est celui là:
$k="insert into note values ('','$t')";
$t=mysql_query($k);
$k=mysql_insert_id();
$c="insert into associer values('$k','num','idT','idS')";
$h=mysql_query($c);


mon probléme:comment génerer $t=note inséré,num=num de l'étudiant qui a $t(note), idT=type d'évaluations correspondant à $t,des inputs créé par la boucle for.
3-limage:
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
1 juin 2014 à 02:31
1 - Les images ainsi postées sur le site sont trop petites et illisibles.

2 - Tu parles de requêtes d' INSERT ... mais je ne les vois pas dans ton code actuel...
Comment veux tu que l'on puisse t'aider si tu ne donnes pas TOUT le code nécessaire et que tu n'expliques pas clairement ce que tu veux... tu penses que nous allons deviner ???!!!

3 - J'ai l'impression (j'en ai même .. peur..) que tu essayes de Mettre tes INSERT dans ta boucle qui génère l'affichage... j'espère que je me trompre...

4- De plus.. je ne vois à aucun endroit de balises <FORM> ni de bouton submit dans ton code.... choses nécessaires lorsque tu veux envoyer des données (comme tout formulaire..) en PHP.
Ou alors... il te faut t'orienter vers de l' AJAX...


0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
1 juin 2014 à 13:29
<form method="POST">
<table border="2" id="tab">
				<tr><th colspan='7'>Analyse</th></tr>
                <tr class="ligne">
				<th>Num</th>
                <th>Nom</th>
                <th>Prenom</th>
				<?php
mysql_connect("localhost","root","123") or die(mysql_error());
	mysql_select_db("basepfe")or die('Pas de Base de donn\351');
	$sql1= ("(SELECT t.TYPE
	FROM TYPE AS t, assocts AS l, smodule AS s, filiere AS f
	WHERE t.idT = l.idT
	AND l.idS = s.idS
	AND nomF = '$e'
	AND annee ='$d'
	AND nomS ='$c')");
	$u=mysql_query($sql1);
	$nbResult = mysql_num_rows($u);
		while($resu=mysql_fetch_array($u))
                                                {
				$type1 = $resu['TYPE'];
			echo "<th>".$type1."</th>"; 
				}
?>
               
				
	<?php 
	mysql_connect("localhost","root","123") or die(mysql_error());
	mysql_select_db("basepfe")or die('Pas de Base de donn\351');
	$sql=("SELECT t.num, t.nomE, t.prenom
FROM etudiant AS t, filiere AS f
WHERE f.nomF = '$e'
AND f.annee = '$d'");
	$t=mysql_query($sql);
		while($result=mysql_fetch_array($t))
                                                {
						    $num = $result['num'];
                                                    $nom = $result['nomE'];
                                                    $prenom = $result['prenom'];
												 //echo"<tr><th><input type='text' name='note2' value=''/></th></tr>"
?>
              </tr>
                    <th><?php echo $num; ?></th>
                    <th><?php echo $nom; ?></th>
                    <th><?php echo $prenom; ?></th>
			
					<?php 
					//echo $nbResult;
					for($i=0;$i<$nbResult;$i++){
					echo'<th><input type="text"  name='.$i.' value=""/></th>';
					}
					?>
                </tr>
				<?php 
				}	
				
echo "<script> location.reload(); <script>";?> 

            </table>
			<input type="submit" id="Button2" name="enre" value="Enregistrer" >
			</form>




je ss pas meme où faut il inserer le code sql, et comment récuperer "name='.$i.' " des inputs
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
1 juin 2014 à 16:59
Donc là... ce que tu es en train de nous dire... c'est que tu ne sais pas comment utiliser les Formulaires html/Php et la récupération des données via POST ou GET ?

Et bien.... dans ce cas.. une seule solution :
http://www.commentcamarche.net/contents/493-les-formulaires-html


0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
3 juin 2014 à 11:01
bonjour,
j'ai arrrivé à faire un code de récupération mais ca marche pas,voila mon code:
mysql_connect("localhost","root","123") or die(mysql_error());
mysql_select_db("basepfe")or die('Pas de Base de donn\351');
$sql1= ("(SELECT t.TYPE, t.idT,s.idS
	FROM TYPE AS t, assocts AS l, smodule AS s, filiere AS f
	WHERE t.idT = l.idT
	AND l.idS = s.idS
	AND nomF = 'Genie informatique'
	AND annee ='2eme'
	AND nomS ='analyse')");
	$u=mysql_query($sql1);
	$nbResult = mysql_num_rows($u);
while($row = mysql_fetch_array($u)) {
													$type1 = $row['TYPE'];
													$idT = $row['idT'];
													$idS = $row['idS'];
													echo "<th>".$type1."</th></br>"; ;
}
echo'</tr>';
								for($i=0;$i<$nbResult;$i++){
echo "<th><input type='text' name='ligne".$i."' id='ligne".$i."'/></th>";	
					}


code de récupération:
mysql_connect("localhost","root","123") or die(mysql_error());
mysql_select_db("basepfe")or die('Pas de Base de donn\351');
$num=$_SESSION['a'];
$m=$_POST['r'];
$a=$_POST["'$i'ligne"];
					if(isset($m)){
					$sqll="insert into test VALUES('','$idT','$idS','$num','$a')";
		echo $sqll;
                    mysql_query($sqll);	}

lors de l'affichaege: le champs $a reste vide et celui de $num.
merci
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
3 juin 2014 à 11:09
Fais donc des PRINT des variables POST et SESSION pour voir ce qu'elles contiennent...


Echo "<br> Variables  POST : <br>";
print_r($_POST);

Echo "<br> Variables  SESSION: <br>";
print_r($_SESSION);



=> Pour les variables de session... ne pas oublier d'utiliser
 session_start() 
au début de tes pages.
0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
3 juin 2014 à 11:18
voila le résultat:
Variables POST :
Array ( [sais] => Rechercher par num [ligne0] => 12 [ligne1] => 12 [ligne2] => 1 [ligne3] => 1 [r] => Inserer )
Variables SESSION:
Array ( [login] => mounir [a] => )
ce que j'ai remarqué,il récupere les variables post mais au niveau de l'insertion ca marche pas
et pour les variables session il ne récupere rien.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
3 juin 2014 à 11:33
ce que j'ai remarqué,il récupere les variables post mais au niveau de l'insertion ca marche pas

Si tu regardes bien... tes variables POST portent comme noms :
ligne0
ligne1
ligne2
ligne3

Hors... dans ton code pour les récuperer.. toi tu écris :
$a=$_POST["'$i'ligne"];


hors..... $i... dans ton code n'existe pas et ne contient rien... de plus tu as inverser le mot "ligne" et le chiffre....!

et pour les variables session il ne récupere rien.
Ben si...; la variable $_SESSION['login'] contient bien : "mounir"....
Par contre ta variable $_SESSION['a'].. elle... est vide...
C'est donc que tu ne l'as pas renseignée.
0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
3 juin 2014 à 11:41
'hors..... $i... dans ton code n'existe pas et ne contient rien... de plus tu as inverser le mot "ligne" et le chiffre....! '

si il est là:
for($i=0;$i<$nbResult;$i++){
echo "<th><input type='text' name='ligne".$i."' id='ligne".$i."'/></th>";	
					}

$a=$_POST["ligne'$i'"]; c'est comme ca on recupére name?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
3 juin 2014 à 12:02
si il est là:

Le $i ... il est dans la boucle (for) qui te permet de créer tes Inputs...

Lorsque tu submit ton formulaire et que tu récupères le contenu de tes variables POST .. il n'est pas là ..il n'existe pas(plus) ..... il ne vaut rien...!!

$a=$_POST["ligne'$i'"]; c'est comme ca on recupére name?
Oui ce serait déjà mieux
Sauf..; que comme expliqué au dessus...^$i ne vaut rien.

Tu peux faire un test pour te rendre compte que ça fonctionne en faisant :
$a=$_POST['ligne0'];
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
3 juin 2014 à 13:29
Voici un exemple de manipulation de la variable $_POST pour récupérer des Inputs au nombre inconnu à l'avance...

Exemple:
<?php
if(isset($_POST['toto'])){
	// Affichage des variables POST
	echo "<br> Variables POST : ";
	print_r($_POST);
	echo "<br>";

	// Récupération des Inputs :
	foreach($_POST as $name=>$valeur){
		if(substr( $name, 0, 9 )=="monInput_"){
			// On sépare le nom de l'input pour récupérer sa valeur de $i
		  $arrNom = explode("_",$name);
		  $i =$arrNom[1]; 
		 // on affiche la valeur et le numéro :
		  echo "Nom => ".$name."  i =>".$i." Valeur =>".$valeur."<br>";
	 }
  }
}
?>
<html>
<head><title>TEST</title></head>
<body>
 <form name="test" method="post" action="">
	<?php
	for($i=0;$i<10;$i++){
	 echo "<br>
				 Input N° ".$i."     
				 <input type='text' name='monInput_".$i."' id='imp_".$i."' value=''>
				 ";
	}
	?>
 <input type="submit" name="toto" value="valider">
</form>

</body>
</html>




Voila. Tu n'as plus qu'à l'adapter à tes besoins, en renommant si nécessaire les variables.

0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
3 juin 2014 à 15:11
je l'ai ajuster selon un autre code mais il renvoi que la derniere valeur:
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
3 juin 2014 à 15:46
.... sans voir ton code .... on ne peut pas t'aider !
0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
3 juin 2014 à 16:11
viola mon code:
<form method='POST'>
<table border="2" id="tab">
				<tr><th colspan='7'>Analyse</th></tr>
                <tr class="ligne">
				<th>Num</th>
                <th>Nom</th>
                <th>Prenom</th>
				<?php

mysql_connect("localhost","root","123") or die(mysql_error());
	mysql_select_db("basepfe")or die('Pas de Base de donn\351');
	$sql1= ("(SELECT t.TYPE
FROM TYPE AS t, assocts AS l, smodule AS s, filiere AS f
WHERE t.idT = l.idT
AND l.idS = s.idS
AND nomF = '$e'
AND annee ='$d'
AND nomS ='$c')");
 $s=mysql_query($sql1);

	$nbResult = mysql_num_rows($s);
		while($resu=mysql_fetch_array($s))
                                                {
													$type1 = $resu['TYPE'];
													echo "<th>".$type1."</th>"; 
                                        }
										

	       
				?>
               
				
	<?php 
	mysql_connect("localhost","root","123") or die(mysql_error());
	mysql_select_db("basepfe")or die('Pas de Base de donn\351');
	$sql= ("SELECT t.num, t.nomE, t.prenom
FROM etudiant AS t, filiere AS f
WHERE f.nomF = '$e'
AND f.annee = '$d'
LIMIT 5 ");
$m=mysql_query($sql);
		while($result=mysql_fetch_array($m))
                                                {
						   $num = $result['num'];
                                                    $nom = $result['nomE'];
                                                    $prenom = $result['prenom'];
												 //echo"<tr><th><input type='text' name='note2' value=''/></th></tr>"
?>

              </tr>
                    <th><?php echo $num; ?></th>
                    <th><?php echo $nom; ?></th>
                    <th><?php echo $prenom; ?></th>
			<?php
							for($i=0;$i<$nbResult;$i++){
				echo "<th><input type='text' name='monInput_".$i."' id='imp_".$i."'/></th>";
				
					}
	
					?>
                </tr>
				<?php 
				}	

			
//echo "<script> location.reload(); <script>";?> 

            </table>
			<input type="submit" name="r" value="Inserer"/>
			</form>
	</body>
	<?php
	mysql_connect("localhost","root","123") or die(mysql_error());
	mysql_select_db("basepfe")or die('Pas de Base de donn\351');
	$m=$_POST['r'];
	
  $a=$_POST["monInput_'$i'"];
						if(isset($_POST['r'])){
	// Affichage des variables POST
	echo "<br> Variables POST : ";
	print_r($_POST);
	echo "<br>";

	// Récupération des Inputs :
	foreach($_POST as $name=>$valeur){
		if(substr( $name, 0, 9 )=="monInput_"){
			// On sépare le nom de l'input pour récupérer sa valeur de $i
		  $arrNom = explode("_",$name);
		  $i =$arrNom[1]; 
		 // on affiche la valeur et le numéro :
		  echo "Nom => ".$name."  i =>".$i." Valeur =>".$valeur."<br>";
	 }
  }
}
	?>



merci
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
Modifié par jordane45 le 3/06/2014 à 16:40
Avant de regarder plus en détail ton code... j'aimerai que tu le modifie en tenant compte des quelques remarques que je t'avais déjà fait (plus peut être de nouvelles) ... a savoir :

1 - Nul besoin de remettre le code de connexion à ta BDD avant chaque requête...
Tu le marques UNE SEULE fois au début de ton code... ça suffit largement.

2 - Évite de Fermer les balises php pour les réouvrir juste en dessous... ( lignes 30 - 33 par exemple)

3 - La récupération des variables de type POST / SESSION / GET ... doit de préférence se faire de la façon suivante :
// Faire :
$m=isset($_POST['r'])?$_POST['r']:'';
// Au lieu de : $m=$_POST['r'];


4 - Ligne 62 : tu sembles avoir une balises <?php inutile... merci de la supprimer.

5 - Je te conseille vivement de séparer (dans ta page)
- Le code php qui va gérer le submit de ton formulaire ( la récupération des $_POST et tout ce qui s'en suit) d'un côté
- Le code qui génère l'affichage de ta page ( l'html et le php qui affiche ton formulaire)

=> Cela rend le script plus lisible...

Exemple :

<?php
//-------------------------------------------------------------
// Connexion à la BDD (que tu pourrais mettre dans un fichier à part au passage !
//-------------------------------------------------------------
 mysql_connect("localhost","root","123") or die(mysql_error());
 mysql_select_db("basepfe")or die('Pas de Base de donn\351');


//-------------------------------------------------------------
// Traitement du submit :
//-------------------------------------------------------------
  if(isset($_POST['r'])){
 // Affichage des variables POST
 echo "<br> Variables POST : ";
 print_r($_POST);
 echo "<br>";

 // Récupération des Inputs :
 foreach($_POST as $name=>$valeur){
  if(substr( $name, 0, 9 )=="monInput_"){
     // On sépare le nom de l'input pour récupérer sa valeur de $i
     $arrNom = explode("_",$name);
     $i =$arrNom[1]; 
    // on affiche la valeur et le numéro :
    echo "Nom => ".$name."  i =>".$i." Valeur =>".$valeur."<br>";
  }
 }
 }


//-------------------------------------------------------------
// Création du formulaire sur la page
//-------------------------------------------------------------
?>
<form method='POST'>
   <table border="2" id="tab">
     <tr>
      <th colspan='7'>Analyse</th>
     </tr>
     <tr class="ligne">
       <th>Num</th>
       <th>Nom</th>
       <th>Prenom</th>
   <?php
 $sql1="SELECT t.TYPE
         FROM TYPE AS t
            , assocts AS l
            , smodule AS s
            , filiere AS f
         WHERE t.idT = l.idT
         AND l.idS = s.idS
        AND nomF = '$e'
        AND annee ='$d'
        AND nomS ='$c'";

    $s=mysql_query($sql1);

   // etc... le reste de ton code ...
   //....

   ?>


Merci également de faire un peu de mise en page lorsque tu colles ton code sur le forum...
On se retrouve dans ton code avec des espaces à foison sur certaines lignes...
Comme tu peux le constater.. le code que je te mets est plutot bien indenté... propre ... facile à lire...
Merci d'en faire autant.
0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
Modifié par mounana199 le 3/06/2014 à 17:38
je suis vraiment désolé.j'éspére que ce nouveau sera mieu.
<?php

 mysql_connect("localhost","root","123") or die(mysql_error());
 mysql_select_db("basepfe")or die('Pas de Base de donn\351');

// Traitement du submit :
//-------------------------------------------------------------
$m=isset($_POST['r'])?$_POST['r']:'';
$a=isset($_POST["monInput_'$i'"])?$_POST["monInput_'$i'"]:'';
  if(isset($_POST['r'])){
 // Affichage des variables POST
 echo "<br> Variables POST : ";
 print_r($_POST);
 echo "<br>";

 // Récupération des Inputs :
 foreach($_POST as $name=>$valeur){
  if(substr( $name, 0, 9 )=="monInput_"){
     // On sépare le nom de l'input pour récupérer sa valeur de $i
     $arrNom = explode("_",$name);
     $i =$arrNom[1]; 
    // on affiche la valeur et le numéro :
    echo "Nom => ".$name."  i =>".$i." Valeur =>".$valeur."<br>";
  }
       }
 }

//-------------------------------------------------------------
// Création du formulaire sur la page
//-------------------------------------------------------------
?>
<form method='POST'>
   <table border="2" id="tab">
 <tr><th colspan='7'>Analyse</th></tr>
         <tr class="ligne">
   <th>Num</th>
           <th>Nom</th>
           <th>Prenom</th>
   <?php

//------------------------------------------------------------
//affichage des types d'évaluations crée par un prof
 $sql1="SELECT t.TYPE
         FROM TYPE AS t
                  , assocts AS l
                  , smodule AS s
                 , filiere AS f
         WHERE t.idT = l.idT
         AND l.idS = s.idS
        AND nomF = '$e'
        AND annee ='$d'
        AND nomS ='$c'";

    $u=mysql_query($sql1);
    $nbResult = mysql_num_rows($u);
          while($resu=mysql_fetch_array($u))
                                                {
     $type1 = $resu['TYPE'];
            echo "<th>".$type1."</th>"; 
      }
//------------------------------------------------------------
//affichage des étudiants 
 
  $sql=("SELECT t.num, t.nomE, t.prenom
  FROM etudiant AS t
  ,filiere AS f
  WHERE f.nomF = '$e'
  AND f.annee = '$d'
  LIMIT 5");

  $t=mysql_query($sql);
          while($result=mysql_fetch_array($t))
                                                {
         $num = $result['num'];
         $nom = $result['nomE'];
         $prenom = $result['prenom'];
?>      
              </tr>
            <tr>
                    <th><?php echo $num; ?></th>
                    <th><?php echo $nom; ?></th>
                    <th><?php echo $prenom; ?></th>
   
<?php  
   for($i=0;$i<$nbResult;$i++){

echo "<th><input type='text' name='monInput_".$i."' id='imp_".$i."'/></th>";
      }
?>
</tr>
 <?php 
  }
  ?>
  </table>
<input type="submit"  name="re" value="Enregistrer" >
</form>


Merci
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
3 juin 2014 à 17:54
C'est mieux mais il reste encore quelques petites choses à corriger :

Ligne 9 :
$a=isset($_POST["monInput_'$i'"])?$_POST["monInput_'$i'"]:'';

Vu que maintenant tu travailles avec une boucle sur tous les éléments POST .. cette ligne ne sert plus à rien. .. Surtout que là... $i ne vaut rien à cet endroit du code

lignes 77 à 84 :
?>      
              </tr>
            <tr>
                    <th><?php echo $num; ?></th>
                    <th><?php echo $nom; ?></th>
                    <th><?php echo $prenom; ?></th>
   
<?php  

Tu fermes ta balise php... pour écrire 5 ligne de HTML qui contiennent elles même du php....
Autant tout faire en PHP directement...
      echo "</tr>
               <tr>
                <th>".$num."</th>
                <th>".$nom."</th>
                    <th>".$prenom."</th>";


Idem lignes 89 - 94 ... juste pour un tr...
?>
</tr>
 <?php 
  }
  ?>

Devient :
echo "</tr>";
 }
 ?>




Une fois que tu auras effectué ces dernières petites modifications...
republie le code puis relance ta page et dis moi si tu n'as toujours qu'un seul Input qui remonte dans ta variable $_POST
0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
3 juin 2014 à 18:24
voila mon code:
<?php

 mysql_connect("localhost","root","123") or die(mysql_error());
 mysql_select_db("basepfe")or die('Pas de Base de donn\351');

// Traitement du submit :
//-------------------------------------------------------------
$m=isset($_POST['r'])?$_POST['r']:'';
  if(isset($_POST['r'])){
 // Affichage des variables POST
 echo "<br> Variables POST : ";
 print_r($_POST);
 echo "<br>";

 // Récupération des Inputs :
 foreach($_POST as $name=>$valeur){
  if(substr( $name, 0, 9 )=="monInput_"){
     // On sépare le nom de l'input pour récupérer sa valeur de $i
     $arrNom = explode("_",$name);
     $i =$arrNom[1]; 
    // on affiche la valeur et le numéro :
    echo "Nom => ".$name."  i =>".$i." Valeur =>".$valeur."<br>";
  }
       }
 }

//-------------------------------------------------------------
// Création du formulaire sur la page
//-------------------------------------------------------------
?>
<form method='POST'>
   <table border="2" id="tab">
 <tr><th colspan='7'>Analyse</th></tr>
         <tr class="ligne">
   <th>Num</th>
           <th>Nom</th>
           <th>Prenom</th>
   <?php

//------------------------------------------------------------
//affichage des types d'évaluations crée par un prof
 $sql1="SELECT t.TYPE
         FROM TYPE AS t
                  , assocts AS l
                  , smodule AS s
                 , filiere AS f
         WHERE t.idT = l.idT
         AND l.idS = s.idS
        AND nomF = '$e'
        AND annee ='$d'
        AND nomS ='$c'";

    $u=mysql_query($sql1);
    $nbResult = mysql_num_rows($u);
          while($resu=mysql_fetch_array($u))
                                                {
     $type1 = $resu['TYPE'];
            echo "<th>".$type1."</th>"; 
      }
//------------------------------------------------------------
//affichage des étudiants 
 
  $sql=("SELECT t.num, t.nomE, t.prenom
  FROM etudiant AS t
  ,filiere AS f
  WHERE f.nomF = '$e'
  AND f.annee = '$d'
  LIMIT 5");

  $t=mysql_query($sql);
          while($result=mysql_fetch_array($t))
                                                {
         $num = $result['num'];
         $nom = $result['nomE'];
         $prenom = $result['prenom'];

    echo "</tr>
               <tr>
                <th>".$num."</th>
                <th>".$nom."</th>
                <th>".$prenom."</th>";
			
	
	for($i=0;$i<$nbResult;$i++){
echo "<th><input type='text' name='monInput_".$i."' id='imp_".$i."'/></th>";
						}
					
    echo'</tr>';
	}
?>
  </table>
<input type="submit"  name="r" value="Enregistrer" >
</form>


j'ai relancé la page est meme résultats:
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
3 juin 2014 à 18:35
Tu peux regarder le code source de ta page générée
et le coller ici.

-> Regarde au passage si tes Inputs ont bien tous un nom différent...
<input type='text' name='monInput_0'
<input type='text' name='monInput_1'
<input type='text' name='monInput_2'
etc...
A mon avis...ils ont tous le même !



=>> Testes ce code là pour voir :

<?php

 mysql_connect("localhost","root","123") or die(mysql_error());
 mysql_select_db("basepfe")or die('Pas de Base de donn\351');

// Traitement du submit :
//-------------------------------------------------------------
$m=isset($_POST['r'])?$_POST['r']:'';
  if(isset($_POST['r'])){
 // Affichage des variables POST
 echo "<br> Variables POST : ";
 print_r($_POST);
 echo "<br>";

 // Récupération des Inputs :
 foreach($_POST as $name=>$valeur){
  if(substr( $name, 0, 9 )=="monInput_"){
     // On sépare le nom de l'input pour récupérer sa valeur de $i
     $arrNom = explode("_",$name);
     $N =$arrNom[1]; 
     $i =$arrNom[2]; 
    // on affiche la valeur et le numéro :
    echo "Nom => ".$name."  Num =>".$N."  i =>".$i." Valeur =>".$valeur."<br>";
   }
  }
 }

//-------------------------------------------------------------
// Création du formulaire sur la page
//-------------------------------------------------------------
?>
<form method='POST'>
   <table border="2" id="tab">
 <tr><th colspan='7'>Analyse</th></tr>
         <tr class="ligne">
   <th>Num</th>
           <th>Nom</th>
           <th>Prenom</th>
   <?php

//------------------------------------------------------------
//affichage des types d'évaluations crée par un prof
 $sql1="SELECT t.TYPE
         FROM TYPE AS t
                  , assocts AS l
                  , smodule AS s
                 , filiere AS f
         WHERE t.idT = l.idT
         AND l.idS = s.idS
        AND nomF = '$e'
        AND annee ='$d'
        AND nomS ='$c'";

    $u=mysql_query($sql1);
    $nbResult = mysql_num_rows($u);
          while($resu=mysql_fetch_array($u))
                                                {
     $type1 = $resu['TYPE'];
            echo "<th>".$type1."</th>"; 
      }
//------------------------------------------------------------
//affichage des étudiants 
 
  $sql=("SELECT t.num, t.nomE, t.prenom
  FROM etudiant AS t
  ,filiere AS f
  WHERE f.nomF = '$e'
  AND f.annee = '$d'
  LIMIT 5");

  $t=mysql_query($sql);
          while($result=mysql_fetch_array($t))
                                                {
         $num = $result['num'];
         $nom = $result['nomE'];
         $prenom = $result['prenom'];

    echo "</tr>
               <tr>
                <th>".$num."</th>
                <th>".$nom."</th>
                <th>".$prenom."</th>";
			
	
	for($i=0;$i<$nbResult;$i++){
// Chaque input appartient à UNE personne.. et à UN type.
//  num étant égale au Numéro de la personne
//  i égale au numéro du TYPE
echo "<th><input type='text' name='monInput_".$num."_".$i."' id='imp_".$i."'/></th>";
						}
					
    echo'</tr>';
	}
?>
  </table>
<input type="submit"  name="r" value="Enregistrer" >
</form>

0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
3 juin 2014 à 19:17
j'ai testé ce code,voila ce qui donne:
<br> Variables POST : Array
(
    [monInput_1_0] => 1
    [monInput_2_0] => 2
    [monInput_3_0] => 3
    [monInput_4_0] => 4
    [monInput_5_0] => 5
    [r] => Enregistrer
)
<br>Nom => monInput_1_0  Num =>1  i =>0 Valeur =>1<br>Nom => monInput_2_0  Num =>2  i =>0 Valeur =>2<br>Nom => monInput_3_0  Num =>3  i =>0 Valeur =>3<br>Nom => monInput_4_0  Num =>4  i =>0 Valeur =>4<br>Nom => monInput_5_0  Num =>5  i =>0 Valeur =>5<br><form method='POST'>
   <table border="2" id="tab">
	<tr><th colspan='7'>Analyse</th></tr>
         <tr class="ligne">
				<th>Num</th>
                <th>Nom</th>
                <th>Prenom</th>
   <th>Projet</th></tr>
               <tr>
                <th>1</th>
                <th>AABID</th>
                <th>MOHAMED AMINE</th><th><input type='text' name='monInput_1_0' id='imp_0'/></th></tr></tr>
               <tr>
                <th>2</th>
                <th>ABI </th>
                <th>ISMA3IL </th><th><input type='text' name='monInput_2_0' id='imp_0'/></th></tr></tr>
               <tr>
                <th>3</th>
                <th>ABOUHAFS</th>
                <th>ZINEB</th><th><input type='text' name='monInput_3_0' id='imp_0'/></th></tr></tr>
               <tr>
                <th>4</th>
                <th>AZAM</th>
                <th>OMAR ESSAID</th><th><input type='text' name='monInput_4_0' id='imp_0'/></th></tr></tr>
               <tr>
                <th>5</th>
                <th>BELASSAL</th>
                <th>SALMA</th><th><input type='text' name='monInput_5_0' id='imp_0'/></th></tr>				      </table>
<input type="submit"  name="r" value="Enregistrer" >
</form>

je pense que ca marche.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
3 juin 2014 à 19:38
Je le pense aussi.
N'oublie pas de clore le sujet.
0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
3 juin 2014 à 19:59
pardon j'ai un autre question concernant les requetes sql de ces champs.
$m=isset($_POST['r'])?$_POST['r']:'';
$a=isset($_POST["monInput_'$i'"])?$_POST["monInput_'$i'"]:'';
$idT=$_SESSION['k'];
$num=$_SESSION['h'];
  if(isset($_POST['r'])){
	// Affichage des variables POST
	echo "<br> Variables POST : ";
	print_r($_POST);
	echo "<br>";

	// Récupération des Inputs :
	foreach($_POST as $name=>$valeur){
	 if(substr( $name, 0, 9 )=="monInput_"){
	    // On sépare le nom de l'input pour récupérer sa valeur de $i
	    $arrNom = explode("_",$name);
     $N =$arrNom[1]; 
     $i =$arrNom[2]; 
    // on affiche la valeur et le numéro :
    echo "Nom => ".$name."  Num =>".$N."  i =>".$i." Valeur =>".$valeur."<br>";
	$sql="insert into test values('','$idT','15','$num','$valeur')";
	mysql_query($sql);
	echo $sql;

lors de l'affichage la variable $num recupérer est juste celui du derniere étudiant,est ce que je dois refaire la boucle du while sur les étudiants à l'interieure du boucle foreach?
merci
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
3 juin 2014 à 20:08
Regarde les variables i et N dans la boucle....
0
Rejoignez-nous