Champs de saisie dans un tableaux dynamique

Signaler
Messages postés
6
Date d'inscription
mercredi 21 février 2007
Statut
Membre
Dernière intervention
25 mai 2008
-
Messages postés
6
Date d'inscription
mercredi 21 février 2007
Statut
Membre
Dernière intervention
25 mai 2008
-
Bonjour,,
J'ai un tableaux dynamique qui contient des champs de saisie , le problèm c'est que lors de l'insertion dans la base il y a que la derniere ligne qui s'enregistre voila le code :
1.le code de creation du tableau
<form name= "enr" method="post" action="enreg_vun.php" >
           
            ----

               
      Vunérabilité |
               
      Menace |

               
      Contre Mesure |
               
      Priorité |
               
       
        <tfoot>
            ----

                Ajouter une ligne |
           
        </tfoot>
       
       
           
            ----

                ,
                ,
                ,
                 ,
                Supp,
           
       
   

   
</form>
-------------------------------------------------------------
2.code de l'enregistrement dans la base "enreg_vun.php"
<?php
$ch1 = array();
$ch2 = array();
$ch3 = array();
$ch4 = array();
foreach($_POST as $cle=>$value){
   
    if(substr($cle,0,7)=="champ1"){
        $ch1[]=$value;
    }
   
    if(substr($cle,0,7)=="champ2"){
        $ch2[]=$value;
    }
    if(substr($cle,0,7)=="champ3"){
        $ch3[]=$value;
    }
   
    if(substr($cle,0,7)=="champ4"){
        $ch4[]=$value;
    }
}

include("connection.php");
$nb=0;
for ($i=0;$i<sizeof($ch1);$i++)
{
$req="INSERT INTO vunerabi (champ1,champ2,champ3,champ4) VALUES('".$ch1[$i]."','".$ch2[$i]."','".$ch3[$i]."','".$ch4[$i]."');";
$res=mysql_query($req);
$nb++;
}
echo "<HTML>".$nb." enregistrements ont été faits dans la base !</HTML>";
?>
il me donne " 1 enregistrements ont été faits dans la base !
Merci

5 réponses

Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
12
Bonjour,

Tout d'abord, ceci est invalide :

Si un élément utilise les 2 attributs 'id' et 'name', ceux-ci doivent avoir la même valeur, soit :

Ensuite, pour récupérer un tableau, les attributs doivent avoir une autre valeur :
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>

Et si tu veux être certain de la synchronisation des colonnes d'une ligne,
il faut ajouter un indice :
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>

Et pour récupérer :
foreach ($_POST['champ1'] as $cle => $valeur)
{
$champ1 = $valeur;
$champ2 = $_POST['champ2'][$cle];
$champ3 = $_POST['champ3'][$cle];
$champ4 = $_POST['champ4'][$cle];

$req = 'INSERT INTO vunerabi (champ1,champ2,champ3,champ4)
VALUES(\'' . $champ1 . '\',
\'' . $champ2 . '\',
\'' . $champ3 . '\',
\'' . $champ4 . '\')';
$res=mysql_query($req);
}
</tr>
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

"Si un élément utilise les 2 attributs 'id' et 'name', ceux-ci doivent avoir la même valeur"

heu...non?
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
12
Les éléments indiqués ci-dessus sont au format xhtml. Donc :
http://www.w3.org/WAI/GL/2000/05/wcag-techs.html - paragraphe xhtml - alinéa 6

Extrait concernant les attributs 'name' et 'id' :
Since many existing HTML user agents don't support the use of ID-type attributes in this way, identical values should be supplied for both of these attributes to ensure maximum forward and backward compatibility--for example
Table of Contents
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Oui, "should be", cela veut dire "devrait"; en aucun cas il n'est indiqué que c'est invalide; c'est juste une question de facilité, qui n'a pour l'instant aucun rôle avec les navigateurs actuels. Sans compter qu'en DOM, étant 2 attributs différents, ils s'utilisent aussi différemment. Et pour ajouter à ça : la valeur de "name" n'est pas forcément unique (et d'ailleurs dans le cas de boutons radio groupés, ce n'est jamais le cas), alors qu'un attribut "id", lui, doit avoir une valeur unique. Ce n'est donc pas applicable.
Encore une fois, c'est juste une aide que propose là le w3c, en aucun cas une norme.
Messages postés
6
Date d'inscription
mercredi 21 février 2007
Statut
Membre
Dernière intervention
25 mai 2008

salut merci pour vous
mais jé encore le meme probléme il ajoute dans la base tt se passe bien mais il enregistre
que la derniere ligne
jé changer les id des inputs :

avant : 
            <td></td>
aprés:
            <td></td>
              
              mais je pense que le problem est dans la boucle

include("connection.php");
$nb=0;
for ($i=0;$i<sizeof($ch1);$i++)
{
$req="INSERT INTO vunerabi (champ1,champ2,champ3,champ4) VALUES('".$ch1[$i]."','".$ch2[$i]."','".$ch3[$i]."','".$ch4[$i]."');";
$res=mysql_query($req);
$nb++;
}
c urgent est important merci