Foreach $_POST INSERT MYSQL [Résolu]

Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention - 10 mars 2009 à 15:50 - Dernière réponse : Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention
- 12 mars 2009 à 10:01
bonjour,

bon j'ai un souci,

j'ai un formulaire envoyé en post a une page php,
ce que je cherche a faire c'est que n'importe quel formulaire puisse etre envoyé a cette page php,

il y serait envoyé ceci :
- le nom de la table
-les infos a inserer

et il faudrait créer une requete INSERT avec tout ca

j'ai essayé avec un foreach du genre

 $list='';
 foreach ($_POST as $key=>$val)
 {$list.= ",'".$key=$val."'";}
$idcom=connex('sarah','param');
 $req="INSERT INTO $table VALUE ($list)";
 [mailto:$res=@mysql_query($req,$idcom $res=@mysql_query($req,$idcom]);
  if(!$res)
  {
  echo "erreur ".mysql_error()."";
  }
  else
  {
  echo'Sauvegarde Réussie';
  }

mais de 1 ; je ne sais pas comment faire pour faire passer en post le nom de la table (ici $table)
et de  2, le $list ne fonctionne pas...

moi perdu...

quelqu'un peu m'aider?

bonne journée

Annadrill
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
cs_mike1310 232 Messages postés jeudi 30 août 2007Date d'inscription 31 juillet 2009 Dernière intervention - 10 mars 2009 à 22:36
3
Merci
ok commençons dans l'odre alors ...

as tu fais afficher ta requete pour voir d'ou venait le probleme parce que la je doute que ta requete soit correct ...
 supposons que tu passe dans $POST ceci : array("name" => "toto", "lastname" => "titi")

tu fais ceci :

$list='';
 foreach ($_POST as $key=>$val)
 {
      $list.= ",'".$key=$val."'";
}
$req="INSERT INTO $table VALUE ($list)";

Ainsi tu va te retrouver avec ceci

$rep = "INSERT INTO $table VALUE (,'name=toto','lastname=titi')";
Chose complètement erroné !!!

Tu as déja une virgule de trop au début et ensuite tes cotes sont mal placé ...
Tu devrait plutot faire un truc comme ça

$list="";
foreach ($_POST as $key=>$val)
{   $list .$key." '".$val."',";
}
$req = "INSERT INTO $table VALUE (".substr($list,0,-1)."); //Le substr pour enlever la virgule de fin de trop

J'ai pas testé hein ... J'ai fait ça comme je le sentais .. Je sors de devant Dr House alors faut pas trop m'en demander  ^^ lol

Merci cs_mike1310 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de cs_mike1310
Meilleure réponse
Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention - 10 mars 2009 à 23:26
3
Merci
hey ,
jai modifié un deux ptit truc pour que ca passe

$list="";


foreach ($_POST as $key=>$val)
{
   $list .= "'".$val."',";
}
$lista=htmlspecialchars_decode(htmlentities($list));

$req = "INSERT INTO s_sculpture VALUE (".substr($lista,0,-1).")";
 $idcom=connex('sarah','param');
 [mailto:$res=@mysql_query($req,$idcom $res=@mysql_query($req,$idcom]);
  if(!$res)
  {
  echo "erreur ".mysql_error()."";
  }
  else
  {
  echo'Sauvegarde Réussie';
  }

me reste a faire un if si y a la variable $table, et faire en sorte que le foreach ne la prenne pas
et c'est tou bon
Un super grand merci, car jai réduit grace à toi à deux pages la centaine que jaurais du me taper

bonne soirée

Annadrill

Merci Annadrill 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de Annadrill
Meilleure réponse
Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention - 11 mars 2009 à 21:32
3
Merci
petit probleme résolu,
les info étaient entré dans la base dans lordre alphabetic
mtn c tout juste

vla le code pour qui passerait par la  ;)

$table="";
$last="";
$list="";




foreach ($_POST as $key=>$val)
{
if($key=="table")
 {
 $table.=$val;
 }
 else
 {
   $last .= "".$key.",";
   $list .= "'".$val."',";
   }
}


$lista=htmlspecialchars_decode(htmlentities($list));
//echo substr($lista,0,-1);
$req = "INSERT INTO $table(".substr($last,0,-1).") VALUE (".substr($lista,0,-1).")";
 $idcom=connex('sarah','param');
 [mailto:$res=@mysql_query($req,$idcom $res=@mysql_query($req,$idcom]);
  if(!$res)
  {
  echo "erreur ".mysql_error()."";
  }
  else
  {
  echo'Sauvegarde Réussie';
  }

Annadrill

Merci Annadrill 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de Annadrill
Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention - 10 mars 2009 à 15:52
0
Merci
juste un truc encore... si dans ce qui est posté il y a une var $table=s_matable

ca devrait pouvoir faire passer le nom de la table?

Annadrill
Commenter la réponse de Annadrill
cs_mike1310 232 Messages postés jeudi 30 août 2007Date d'inscription 31 juillet 2009 Dernière intervention - 10 mars 2009 à 16:25
0
Merci
Pour faire cela, tu devrait utiliser dans ton formulaire des input type hidden ... Du genre un qui porte la value du nom de ta table et je pense ensuite que les champs à insérer dans ta table son ceux de ton formulaire ...
Commenter la réponse de cs_mike1310
Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention - 10 mars 2009 à 20:28
0
Merci
Ca je suis d'accord, mais ce que j'aimerais


c'est créer la requete insert d'après n'importe quel formulaire.


si l'on oublie l'histoire de $table pour commencer


il faudrait arriver à


$requete="INSERT INTO latable VALUE($list) ";


mais je n'y arrive pas...

Annadrill
Commenter la réponse de Annadrill
Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention - 10 mars 2009 à 22:58
0
Merci
ah ouai d'accord mdr (pour Dr House)

merci bien en tout cas,
je test demain, et je te redis,
merci de prendre le temps en tout cas

ciao

Annadrill
Commenter la réponse de Annadrill
cs_mike1310 232 Messages postés jeudi 30 août 2007Date d'inscription 31 juillet 2009 Dernière intervention - 11 mars 2009 à 10:20
0
Merci
Aaaaaah oui lol ... La syntaxe que je t'ai mis c'étais la syntaxe pour un UPDATE ...^^ Dr House ne m'a pas réussi ...

Ravi d'avoir pu te filer un coup de main...

PS: Pense au tag "résolu"
Commenter la réponse de cs_mike1310
Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention - 11 mars 2009 à 12:37
0
Merci
pour le tag, il veut pas maintenant, je me retrouve avec un message d'erreur sur la page,


alors je ressaierai plus tard ;)

pour l'update, c'est cool, parce que je pourrai aussi l'employer :)

sâlut

Annadrill
Commenter la réponse de Annadrill
Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention - 11 mars 2009 à 12:42
0
Merci
ah bin c'êst passé mtn mdr

Annadrill
Commenter la réponse de Annadrill
Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention - 11 mars 2009 à 18:01
0
Merci
je dépose le code avec la variable $table...

$table="";
$list="";


foreach ($_POST as $key=>$val)
{
 if($key=="table")
 {
  $table.=$val;
 }
 else
 {
     $list .= "'".$val."',";
    }
}


$lista=htmlspecialchars_decode(htmlentities($list));


$req = "INSERT INTO $table VALUE (".substr($lista,0,-1).")";
 $idcom=connex('sarah','param');
 [mailto:$res=@mysql_query($req,$idcom $res=@mysql_query($req,$idcom]);
  if(!$res)
  {
  echo "erreur ".mysql_error()."";
  }
  else
  {
  echo'Sauvegarde Réussie';
  }

c'est tout ;)

Annadrill
Commenter la réponse de Annadrill
cs_mike1310 232 Messages postés jeudi 30 août 2007Date d'inscription 31 juillet 2009 Dernière intervention - 12 mars 2009 à 08:35
0
Merci
J'imagine que ta variable $table va toujours etre passé au formulaire donc un truc mieux pourait être ça :

$table=$_POST['table'];
unset($_POST['table']);
$last="";
$list="";
foreach ($_POST as $key=>$val)
{
   $last .= "".$key.",";
   $list .= "'".$val."',";
}

$lista=htmlspecialchars_decode(htmlentities($list));
//echo substr($lista,0,-1);
$req = "INSERT INTO $table (".substr($last,0,-1).") VALUE (".substr($lista,0,-1).")";
 $idcom=connex('sarah','param');
 [mailto:$res=@mysql_query%28$req,$idcom $res=@mysql_query($req,$idcom]);
  if(!$res)
  {
  echo "erreur ".mysql_error()."";
  }
  else
  {
  echo'Sauvegarde Réussie';
  }
Commenter la réponse de cs_mike1310
Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention - 12 mars 2009 à 10:01
0
Merci
Ah oui, super, merci bien ;)

Annadrill
Commenter la réponse de Annadrill

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.