SanchoDellaVega Posté 21 Mars 2009 Partager Posté 21 Mars 2009 Bonjour à tous, Je suis à la recherche d'un bout de code qui me permettrait de gérer automatiquement l'insertion d'un formulaire en base de données. Pour l'instant, je me suis fait des fonctions qui vérifient si des champs sont obligatoires et s'ils sont remplis avec les données que l'on attend. Pour la troisième étape, j'aurais bien voulu réussir à faire une sorte de requête INSERT universelle. Avez-vous une idée ? quelqu'un a déjà fait ce genre de chose ? merci. Lien vers le commentaire Partager sur d’autres sites More sharing options...
cyberlaura Posté 21 Mars 2009 Partager Posté 21 Mars 2009 Bonsoir SanchoDellaVega, je ne sais pas exactement ce que tu cherches, mais si tu es en validation de formulaire, on pourrait imaginer faire une boucle sur le tableau des champs saisis ( $_POST ou $_GET ), pour construire un INSERT. Ce que tu sembles rechercher ressemble peut-être à phpmyadmin, une saisie et insertion universelle dans quelque fichier que ce soit ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
SanchoDellaVega Posté 22 Mars 2009 Auteur Partager Posté 22 Mars 2009 En fait, c'est ça, je cherche un truc qui ferait : contrôle des champs obligatoire si ok alors : vérification de la validité des données saisies si ok alors construction d'une requête insert le tout serait utilisé en appelant simplement les trois fonctions les uns à la suite des autres dans le script, sans rien faire d'autre. pour l'instant, j'ai fait les deux premières étapes, la troisième me pose plus de difficultés. Mais je crois que tu m'as mis sur la voie, pour automatiser le truc, il faudrait en fait que les champs de ma base de données ait le même nom que les champs de mon formulaire. Je vous tiens au courant. @++ Lien vers le commentaire Partager sur d’autres sites More sharing options...
SStephane Posté 23 Mars 2009 Partager Posté 23 Mars 2009 (modifié) Je te conseille vivement de faire un insert, puis un update pour faire ton Insert. Ton premier Insert insérant juste une entrée, et tu place les données dedans avec un fonction update +/- universelle, j'en ai une grossière qui ressemble à ça, en paramètre le nom de la table, en second paramètre le tableau associatif colonnes / valeurs, qui suppose tout de même qu'il y ait une colonne "ID", mais ça adapte le à ta sauce en ajoutant des paramètres si le principe te plait pas. Tu peux taper dans les classes du framework Zend, ma classe Mysql s'en est largement inspiré à défaut de l'étendre (une mine pour la conception d'une manière générale). http://framework.zend.com/manual/fr/zend.d...g.insert-update public function updateById($table,$assoc){ $query = "UPDATE `".strtolower($table)."` SET "; $i = 0; foreach($assoc as $key => $value){ $value = mysql_real_escape_string($value); $key = mysql_real_escape_string($key); $i++; if($key!="ID" && $key!="theAction") $query .= "`".$key."`='".$value."'"; if($i!= sizeof($assoc) && $key!="ID" && $key!="theAction") $query .= ","; } $query .= " WHERE `ID`='".mysql_real_escape_string($assoc["ID"])."'"; return mysql_query($query); } Le fait de faire insert/update t'évite surtout de multiplier les fonctions d'insertion, et d'avoir quelques méthodes updates plus globales. Modifié 23 Mars 2009 par SStephane Lien vers le commentaire Partager sur d’autres sites More sharing options...
fingolfin Posté 30 Mars 2009 Partager Posté 30 Mars 2009 Une requête d'insertion universelle ? Pour ce faire il te suffit, comme indiqué dans le message précédent de procéder par système de requête dynamique comme on dit, en gros tu stockes dans un tableau les noms de colonnes de ta table avec les valeurs à insérer, puis tu as juste à générer ta requête en plaçant le début au dessus de la boucle et la fin en dessous de la boucle (l'intérieur servant donc à générer la liste d'insertion et l'insertion elle même). Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant