Se connecter / S'enregistrer
Votre question

Récupérer les données d'un formulaire avec une boucle

Tags :
  • Echo
  • Programmation
Dernière réponse : dans Programmation
26 Août 2007 12:42:11

Boujours à tous,
Je pense que mon titre résume bien mon problème. En effet, j'ai fait un formulaire avec une boucle for et je n'arrive pas à récupérer les données. Le nombre de donné et définit par l'utilisateur c'est pour cette raison que j'utilise une boucle for. Voici mon code:

(formulaire.php):

<?php
if ($nbrpers){
$limite = $nbrpers;
}
else{
$limite = 1;
}
echo '<form method="POST" action="formindex.php?limite='.$limite.'">';
for ($i=1; $i < $limite+1; $i++){
?>
<tr><td align="center" height="30"><input type="text" name="<?php echo 'nom['.$i.']'; ?>" maxlength="20" style="width: 100px"></td>


<?php }

echo '<tr width="20">
</tr>
<tr>
<td colspan="11" align="center">
<input type="submit" name="submit" value="Envoyer">
</td>
</tr>

Voici le code pour récupérer les données:

(formindex.php):

<?php @session_start ();

$limite = $_GET['limite'];


// On commence par récupérer les champs
$db = mysql_connect('localhost', '*****', '******') or die('Erreur de connexion '.mysql_error());

// sélection de la base
mysql_select_db('******',$db) or die('Erreur de selection '.mysql_error());


for ($i=1; $i < $limite+1 ; $i++){

$nom=$nom[$i];

$sql = "INSERT INTO lien2(id,nom)
VALUES('','$nom')";

// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
echo 'Données bien enregistrées!';
}
// on affiche le résultat pour le visiteur

include('formulaire.php');

?>
</table>
</form>';
?>


Merci d'avance pour vos réponses!

Autres pages sur : recuperer donnees formulaire boucle

a c 232 L Programmation
26 Août 2007 14:22:34

Une petite remarque d'abord :
for ($i=1; $i != $limite+1; $i++)
Prend l'habitude de mettre < ou <= et pas !=, imagine que la variable $limite soit égale à -1 pour une raison ou pour une autre, ça te fait une boucle infinie...

Deuxième remarque :
action="formindex.php?limite='.$nbrpers.'"
Tu viens de définir la variable limite qui est égale à nbrpers s'il est défini, sinon à 1, donc utilise la à la place ;) 

Sinon, quelle est ton erreur exactement ? Tu as un quelconque message ?
26 Août 2007 14:46:08

Merci tout d'abord pour tes remarques pertinentes!

En fait mon problème c'est qu'il ne récupére que la première donnée (nom[1]) et pas celles qui suivent (nom[2], nom[3], ...) en faite, une nouvelle entré est rentré dans la BDD mais il n'y a pas de valeur sauf, comme je les dit plus haut, pour la première entrée. Je sais pas si très compréhensible mais merci d'avance!!
Contenus similaires
a c 232 L Programmation
26 Août 2007 23:04:48

Ok, je vois l'erreur :
$nom=$nom[$i];

A ce niveau là, la première fois que tu entres, tu détruis ton tableau vu que tu le mets dans une variable du même nom ;) 
13 Mai 2014 21:18:58

je ne sais pas ou se trouve la faute: voila mon programme

<html>
<head>
<meta charset="utf-8">
<title>Inscription</title>
<link href="CSS.css" rel="stylesheet" type="text/css" />
</style>

</head>
<body>
<center>
<Fieldset>
<legend align=Top >Module</legend>
<form method=POST action=Ajout-Module.php>

<tr><td><center>saisir le nombre des modules par semestre: <input type="number" name="n" ></td></tr>
<br><center><input type="submit" name="val" value="valider">
</Fieldset>
<br>
<?php
include("cnx.php");
?>
<?php

if (isset($_POST['val'])){
echo'<Fieldset>';
for($i=1;$i<=$_POST['n'];$i++){
echo'entrer le nom du module :'."$i";
echo"<input type='text' name='nom.$i'>";

echo"<br>";
}
echo'<input type="submit" name="enrg" value="enregistrer">';
echo'</Fieldset>';
}

if (isset($_POST['enrg'])){

for($i=1;$i<=$_POST['n'];$i++){
connectMaBase();
$q="INSERT INTO module( `libelle_module` )VALUES ('".$_POST['nom.$i']."')";

if (mysql_query ($q)) {echo"<br><br>Un nouveau module ajouté";}
else {echo"ERREUR";}
}
}





?>
a c 232 L Programmation
17 Mai 2014 13:06:13

créé ton propre sujet stp
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS