Bonjour, voici mon problème.
J’ai un formulaire qui se compose de plusieurs champs:
- 1 champ texte (name = titre)
- n champs texte (name = nom)
- n champs texte associé. (name = description)
C’est l’utilisateur qui determine le nombre de champs (n) par une page annexe. Pas de problème jusque là.
Un formulaire type se compose donc comme suit:
titre
* nom1: description1
* nom2: description2
* nom3: description3
(le nombre de couple nom/description est variable)
Lorsque l’utilisateur valide, on se retrouve donc avec:
- $_POST[‘titre’]: chaine
- $_POST[‘nom’]: tableau
- $_POST[‘description’]: tableau.
Plusieurs oppérations doivent être effectuées:
- insérer le titre dans une table A avec comme champ (id, titre), l’id étant en autoincrement.
- vérifier que chacun des couples nom/description est rempli
si oui: on continue
si non: il faut éliminer les lignes incomplètes - récupérer l’id (autoincrement) de du titre venant d’être entré (select max(id) from tableA)
- insérer dans une table B les couples nom/description (table sous forme id, id-titre, nom, description).
Le problème se situe au niveau de la suppression des lignes incomplete. J’ai trouvé une solution mais elle semble très lourde. Elle consiste à parcourir le tableau, à tester que les deux champs sont rempli, et si c’est le cas, les copier dans un nouveau tableau. Je ne sais pas si il existe une fonction permettant de supprimer une ligne d’un tableau… si oui, ce serait sans doute plus efficace)
$couple = array();
for($i = 1; $i < (count($description)+1); $i++)
{
if(!empty($nom[$i]) && !empty($description[$i]))
{
$couple[] = array($nom[$i], $description[$i]);
}
}
Après, pour insérer les valeurs dans la table B, je ne sais pas très bien cmt faire (sans faire une boucle for et faire n requete, ce qui serait une vrai folie!
Merci d’avance pour votre aide,
titib