Existe-t-il une meilleure façon de traiter un formulaire dans lequel je dois enregistrer un link
et link text
par rapport à une langue et une entreprise?Meilleure façon de traiter plusieurs champs de formulaire
L'exemple ci-dessous fonctionne, mais je pense que c'est un travail difficile.
J'ai ajouté la langue et l'identifiant de la société à la clé des champs de lien et de texte de lien pour les regrouper et passer les autres informations à PHP et dans la base de données.
$newlinks = array();
foreach($_POST as $post_key => $post_value) {
if (substr($post_key, 0, 7) == 'newlink') {
$posted_link = explode('_', $post_key);
$newlinks[$posted_link[1]][$posted_link[2]][$posted_link[0]] = $post_value;
$newlinks[$posted_link[1]][$posted_link[2]]['language_id'] = $posted_link[1];
$newlinks[$posted_link[1]][$posted_link[2]]['company_id'] = $posted_link[2];
}
}
foreach($newlinks as $newlinklang) {
foreach($newlinklang as $newlink) {
if ($newlink['newlink'] != '' && $newlink['newlinkname'] != '') {
$sql = "
INSERT
INTO
".$db_prefix."catalogue_links (
link,
link_name,
language_id,
company_id
) VALUES (
'".$newlink['newlink']."',
'".$newlink['newlinkname']."',
'".$newlink['language_id']."',
'".$newlink['company_id']."'
";
}
}
}
Et le code HTML
<input type="text" name="newlink_1_1" value="" />
<input type="text" name="newlinkname_1_1" value="" />
Il peut y avoir plusieurs langues et les entreprises affichées sur une page.
En note, assurez-vous de désinfecter ces entrées! Votre déclaration SQL me fait grincer des dents. Utilisez http://php.net/manual/en/function.mysql-real-escape-string.php ou utilisez des instructions préparées. – nategood
Merci @nategood, en simplifiant le code pour SO j'ai supprimé mon nettoyage de la clé de poste et des valeurs. –