problème avec INSERT

Répondre
nasdrovia70
le 27/04/2009 à 12:06
nasdrovia70
Bonjour, j'ai un formulaire dans une boucle qui m'affiche le nombre de formulaire a rentrée.

<?php
echo " <font color='white' size='5'><center><b>Ajouter une fiche</b></center></font><br /><br />";
echo "<table border='1' bordercolor='yellow' width='4050'>
<tr>
<td width='50'><font color ='white'>n°</font></td>
<td width='300'><font color ='white'>jour</font></td>
<td width='300'><font color ='white'>commande</font></td>
<td width='300'><font color ='white'>produit</font></td>
<td width='300'><font color ='white'>marque</font></td>
<td width='300'><font color ='white'>designation</font></td>
<td width='300'><font color ='white'>sequence</font></td>
<td width='300'><font color ='white'>etat</font></td>
<td width='300'><font color ='white'>commentaire</font></td>
<td width='300'><font color ='white'>serie</font></td>
<td width='300'><font color ='white'>date</font></td>
<td width='300'><font color ='white'>affectation</font></td>
<td width='300'><font color ='white'>nom</font></td>
</tr>
</table>";


$nb=$i;
for($i=1;$i<=$nb_fiches;$i++)
{ $sequence=$nb_fiches;
echo " <form action='ajout3.php' name='fiche[]' method='post'>";
echo " <table width='4050' align='center' border='1' bordercolor='yellow'>
<tr>
<td width='300'><font color ='white'>$nb</font></td>
<td width='300'><input type='text' name='jour' value='$jour' size='50' /></td>
<td width='300'><input type='text' name='commande' value='$commande' size='50' /></td>
<td width='300'><input type='text' name='produit' value='$produit' size='50' /></td>
<td width='300'><input type='text' name='marque' value='$marque' value=size='50' /></td>
<td width='300'><input type='text' name='designation' value='$designation' size='50' /></td>
<td width='300'><input type='text' name='sequence' value='$nb/$sequence' size='50' /></td>
<td width='300'><input type='text' name='etat' value='$etat' size='50' /></td>
<td width='300'><input type='text' name='commentaire' value='$commentaire' size='50' /></td>
<td width='300'><input type='text' name='serie' value='$serie' size='50' /></td>
<td width='300'><input type='text' name='date' value='$date' size='50' /></td>
<td width='300'><input type='text' name='affectation' value='$affectaion' size='50' /></td>
<td width='300'><input type='text' name='nom' value='$nom' size='50' /></td>
</tr>
</table>";


}
echo "<input type='submit' name='ajouter' value='ajouter le contact' /></form>
<font size='4'><a href='index.php'><center><b>Retour</center></b></a></font><br />";?>


et la tentative d'ajout

<?php 
<code type="php">
//paramètres de la base
$serveur="localhost";
$util="root";
$mpasse="";
$base="stocks";
// connexion au serveur Mysql
$lien=mysql_connect($serveur,$util,$mpasse);
// connexion à la base de données
mysql_select_db($base);
// réccupération des données du formulaire
// strip_tags($_POST['champ']); // on retire les codes HTML du champ
// Traitement

if(is_array($_POST['fiche'])) {

foreach($_POST['fiche'] as $k=>$val)
{ // boucle de traitement
$jour=strip_tags($_POST['jour']);
$commande=strip_tags($_POST['commande']);
$produit=strip_tags($_POST['produit']);
$marque=strip_tags($_POST['marque']);
$designation=strip_tags($_POST['designation']);
$sequence=strip_tags($_POST['sequence']);
$etat=strip_tags($_POST['etat']);
$commentaire=strip_tags($_POST['commentaire']);
$serie=strip_tags($_POST['serie']);
$date=strip_tags($_POST['date']);
$affectation=strip_tags($_POST['affectation']);
$nom=strip_tags($_POST['nom']);

mysql_query("INSERT INTO Pcs VALUES(NULL,'$jour','$commande','$produit','$marque','$designation','$sequence','$etat','$commentaire','$serie','$date','$affectation','$nom') WHERE '$val'");
echo "<meta http-equiv='refresh' content='1; url=index.php'>";
}
mysql_close(); // Déconnexion de MySQL
echo "<meta http-equiv='refresh' content='1; url=index.php'>"; // redirection vers l'index
}
else { // si c'est pas un tableau de checkbox , erreur !
mysql_close(); // Déconnexion de MySQL
echo "<meta http-equiv='refresh' content='5; url=index.php'>";
echo "erreur dans le formulaire !";
}

?>


Je n'arrive pas a ajouter les fiche quand j'en ai plus d'une
LA GLOBULE
le 27/04/2009 à 23:50
LA GLOBULE
Le problème est que tu donnes le même attribut name à tous tes input, du coup, il ne t'en récupère qu'un.

Ce que tu peux faire, c'est utiliser un tableau pour tes attributs name.
Exemple <input type="text" name="toto[]" />, ainsi tu recupères toutes tes valeurs dans le tableau $_POST['toto'].

Naturellement, tu fois utiliser un nom de tableau différent pour chaque input.

Je te conseille d'utiliser massivement print_r pour débuguer ce genre de code.
LA GLOBULE
le 28/04/2009 à 10:21
LA GLOBULE
Voici un exemple que je te laisse adapter :

<?php
if (isset($_POST['tab1']) && isset($_POST['tab2']) && is_array($_POST['tab1']) && is_array($_POST['tab2'])) {
if (array_keys($_POST['tab1']) == array_keys($_POST['tab2'])) {
foreach ($_POST['tab1'] AS $key => $value) {
echo 'tab1 valeur '.$key.' : '.$value.' / tab2 valeur '.$key.' : '.$_POST['tab2'][$key].'<br />';
}
}
}
?>

<form action="blu.php" method="post">
<?php
for ($i=0; $i<3; $i++) {
?>
<input type="texte" name="tab1[]" /> <input type="texte" name="tab2[]" /><br />
<?php
}
?>
<input type="submit" name="go" value="ok" />
</form>
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours