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

EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 30 mai 2014 à 01:50 - Dernière réponse : EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

35 réponses

NHenry 14263 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 7 octobre 2018 Dernière intervention - 30 mai 2014 à 19:42
0
Merci
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".
EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 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
NHenry 14263 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 7 octobre 2018 Dernière intervention - 30 mai 2014 à 20:32
Tu as oublié le . après le $i.
Commenter la réponse de NHenry
jordane45 22720 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 9 octobre 2018 Dernière intervention - 31 mai 2014 à 23:47
0
Merci
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
	 }
?>

Commenter la réponse de jordane45
EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 1 juin 2014 à 00:50
0
Merci
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
Commenter la réponse de EL.marwaa123
jordane45 22720 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 9 octobre 2018 Dernière intervention - 1 juin 2014 à 01:17
0
Merci
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..



jordane45 22720 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 9 octobre 2018 Dernière intervention - 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//
jordane45 22720 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 9 octobre 2018 Dernière intervention - 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 ... !
Commenter la réponse de jordane45
EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 1 juin 2014 à 02:29
0
Merci
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:
Commenter la réponse de EL.marwaa123
jordane45 22720 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 9 octobre 2018 Dernière intervention - 1 juin 2014 à 02:31
0
Merci
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...


EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 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
Commenter la réponse de jordane45
jordane45 22720 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 9 octobre 2018 Dernière intervention - 1 juin 2014 à 16:59
0
Merci
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


Commenter la réponse de jordane45
EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 3 juin 2014 à 11:01
0
Merci
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
EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 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.
jordane45 22720 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 9 octobre 2018 Dernière intervention - 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.
EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 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?
jordane45 22720 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 9 octobre 2018 Dernière intervention - 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'];
EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 3 juin 2014 à 12:13
quand j'ai mis $a=$_POST['ligne0']; il fonctionne bien
mais si je veux récuperer la valeur de toutes les inputs crée par la boucle for,il faut tjrs faire
$a=$_POST['ligne0'];
$a=$_POST['ligne1'];
$a=$_POST['ligne2'];
........................

meme si je sais pas combien d'inputs créé par la boucle?
Commenter la réponse de EL.marwaa123
jordane45 22720 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 9 octobre 2018 Dernière intervention - 3 juin 2014 à 13:29
0
Merci
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.

Commenter la réponse de jordane45
EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 3 juin 2014 à 15:11
0
Merci
je l'ai ajuster selon un autre code mais il renvoi que la derniere valeur:
jordane45 22720 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 9 octobre 2018 Dernière intervention - 3 juin 2014 à 15:46
.... sans voir ton code .... on ne peut pas t'aider !
EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 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
Commenter la réponse de EL.marwaa123
jordane45 22720 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 9 octobre 2018 Dernière intervention - Modifié par jordane45 le 3/06/2014 à 16:40
0
Merci
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.
EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 3 juin 2014 à 17:37
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
jordane45 22720 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 9 octobre 2018 Dernière intervention - 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
Commenter la réponse de jordane45
EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 3 juin 2014 à 18:24
0
Merci
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:
EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 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
jordane45 22720 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 9 octobre 2018 Dernière intervention - 3 juin 2014 à 20:08
Regarde les variables i et N dans la boucle....
EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 3 juin 2014 à 21:04
ah oui :D
j'ai ajouté un autre type,et j'ai refait l'insertion, et j'ai trouvé qu'il garde le meme $idT, dois je refaire la boucle des types pour inserer la note pour le type concerné?
merci et dsl
jordane45 22720 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 9 octobre 2018 Dernière intervention - 3 juin 2014 à 21:27
.... il faut que tu comprennes ce que j'ai fait....
Regarde comment sont construit les input;..
echo "<th><input type='text' name='monInput_".$num."_".$i."' id='imp_".$i."'/></th>";
	

je passe dans leur NAME : moninput puis le NUM de l'élève puis $i
Il faut qu' à la place du $i ... tu mettes (si tes types en ont dans ta table) l' ID des types...

Ainsi... lorsque je fais un Explode des variables POST
$arrNom = explode("_",$name);

je récupère chaque élément ;..
     $N =$arrNom[1];  // => $num
     $i =$arrNom[2];  // => $i ( ou $id_type) 


voila.

Je ne peux pas t'en dire plus... je pense que mes explications sont suffisement claires.
A toi maintenant de continuer à programmer.
EL.marwaa123 99 Messages postés jeudi 24 avril 2014Date d'inscription 7 juin 2014 Dernière intervention - 3 juin 2014 à 21:31
okk merciiii infiniment
Commenter la réponse de EL.marwaa123

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.