REQUETE INSERT DABS UN FOREACH

Naixn Messages postés 455 Date d'inscription mardi 17 septembre 2002 Statut Membre Dernière intervention 22 juillet 2007 - 5 avril 2006 à 07:55
bubuze Messages postés 31 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 25 avril 2006 - 5 avril 2006 à 09:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36899-requete-insert-dabs-un-foreach

bubuze Messages postés 31 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 25 avril 2006
5 avril 2006 à 09:23
deux solutions se présentent :
1 - deux requêtes
$req = "INSERT INTO table(id) VALUES ('".$id_val."') ";
$result=mysql_query($req); // et vérification de la requête
$req= "UPDATE table SET";
foreach ($_POST as $Nom_Champ => $Valeur_Champ) {
if ($Nom_Champ!='User_News') {
//faire ici les traitements sur les _POST (quotes,MD5...)
$req.= $Nom_Champ."='".$Valeur_Champ."', ";
}
}
//la requete se termine par une virgule, on profite du chkbox pour la terminer proprement
$User_News = isset($_POST["User_News"]);//1 si coché, 0 sinon
$req.="User_News='".$User_News."' WHERE id='".$id_val."'";
mysql_query($req);//sans oublier de vérifier le résultat de la requête plutôt que or die()

2 - une requête
c'est cette méthode que j'utilise, mais elle m'impose de voir connaître tous les champs du _POST
$req="INSERT INTO base(champ1,champ2...,champn) VALUES('";
après tu vois comment faire..
personnellement, je n'envoie pas un formulaire dans la base aussi brutalement :

a - vérification de la présence de tous les champs _POST
$post_ok=isset($champ1) && isset($champ2) ... isset($champn);//sauf les checkbox

b - vérification et traitement des champs
$req_ok=$post_ok;
if ($post_ok) {
un bloc de code par champ : numéro de téléphone ? valeur numérique ? e-mail ?
chaîne de caractères ? (dans ce cas, je fais quoi avec les guillemets et apostrophes)
...
if (expr.erreur) {$req_ok=false;}
}

c - tout est propre ?
$form_aff=true;//à priori affichage du formulaire
if ($req_ok) {
//construction, exécution et contrôle de la requête
// si tout va bien
$form_aff=false;
}

d - affichages
if ($form_aff) {
//affichage du formulaire, avec éventuellement des alertes suite au traitement des champs
// (ex : le numéro de téléphone n'est pas correct)
} else {
//affichage du résultat de la requête
echo 'bienvenue chez nous ! votre compte a bien été créé, mémorisez votre mot de passe !!!';
}
Naixn Messages postés 455 Date d'inscription mardi 17 septembre 2002 Statut Membre Dernière intervention 22 juillet 2007
5 avril 2006 à 07:55
Le problème majeur, déjà, c'est que tu postes ça en tant que code source, alors que tu devrais poster ça dans le forum d'aide, dédié à ce genre de questions...
Rejoignez-nous