Invité
Invité n'ayant pas de compte PHPfrance
09 janv. 2008, 05:01
j'ai trouvé ce que je cherche avec les variables de variables. Merci pour la réponse.
Je vous expose un autre problème qui est lié.
Je suis entrain de créer un générateur de formulaire, dans le quel on peut gérer les champs.
Pour chaque champ, on peut modifier/mettre à jour:
- le descriptif du champ (input text)
- l'ordre du champ (input text)
Mon formulaire qui permet de gérer 10 champs de texte dont l'ordre et le descriptif sont enregistrés dans la bdd. il est généré avec une boucle.
<input type="text" id="champtxt_descr_<?php echo $fields->id; ?>" name="champ_descr_<?php echo $fields->id; ?>" />
<input type="text" id="champtxt_ordre_<?php echo $fields->id; ?>" name="champ_ordre_<?php echo $fields->id; ?>" />
Je nomme chaque champ avec son type (champtxt), le nom du champ dans la table (descr ou ordre) et son id(<?php echo $fields->id; ?>)
Avec cette stratégie de nommage, j'espérais faire l'enregistrement des données avec peu de code en faisant, sur les données provenant du formulaire:
foreach (array_keys($_POST) as $key)
{
//récupération des noms de champs avec la technique dont on par le plus haut
$$key = $_POST[$key];
//explode pour séparer les infos type_nomchampdanstable_idchamp
$row = explode("_", $key);
//si le type du champ est un champ de texte
switch ($row[0])
{
case "champtxt" :
$sql = "UPDATE matable SET " . $row[1] . " = '" . ${$key} . "' WHERE id = " . $row[2];
....exécution de la requete...
break;
..... code pour mettre à jour d'autres types de champs
}
Le code fonctionne dans le principe, j'arrive à traiter les champs du formulaire et l'insertion fonctionne.
Mon problème: pour enregistrer l'ordre et le descriptif d'un champ, j'ai 2 données venant du formulaire. Pour enregistrer l'ordre et le descriptif de 2 champs, j'ai 4 données, ainsi de suite.
Ma stratégie de nommage des champs n'est pas bonne car le test case "champtxt" m'indique qu'il y a 4 éléments correspondant à ce critère. Ma requete est donc exécutée 4 fois au lieu de 2.
Quelle serait la bonne façon de nommer les champs du formulaire pour gérer l'enregistrement des données?
Merci pour vos réponses.