IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Alimenter une table avec des champs generés dynamiquement [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 38
    Points
    38
    Par défaut Alimenter une table avec des champs generés dynamiquement
    Bonjour,
    j'ai crée un formulaire dans lequel je permet à l'utilisateur d'ajouter des lignes (donc des champs) à l'aide d'un bouton Ajouter /supprimer (javascript).
    Donc par exemple: "Ajouter un invité" crée des champs de saisie "nom", "prenom" ...etc
    Mon but maintenant est d'alimenter une BD grace aux infos recupéres.
    Ma question est : comment remplir une table sans connaitre les champs à l'avance? ie: comment ecrire ma requete alors que je ne connais pas les $post?
    Je vous remercie.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Excuses moi , mais c'est impossible de te comprendre ?
    Tu parles de la récupération d'une saisie par un <FORM
    lequel est "contrôlé" par du javascript, (peut importe.)

    Donc le PHP qui reçoit voit bien son array POST il peut voir ce qu'il contient, et en fonction de cela écrire dans SQL
    C'est simple non ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 38
    Points
    38
    Par défaut
    Bonjour,
    le nombre de input n'est pas connu à l'avance puisque c'est l'utilisateur qui décide de rajouter des champs ou pas .
    Exemple : moi je crée une 1ere ligne du genre : nom1, prenom1, adresse1
    Si l'utilisateur décide de rajouter une deuxième ou niem ligne , il aura des champs du genre : "nom2,prenom2,adresse2" ....."nomn, prenomn,adressen).
    Donc pour écrire ma requête (insert into) et récupérer les champs que l'utilisateur aura rajouté sans que je sache comment je fais ? comment je peut ecrire ma requete?
    Je vous remercie.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Cette façon de faire n'a aucun sens a mon avis, pourquoi laisser tant de libertée aux visiteurs
    Bien sur tu fais comme tu le souhaites mais alors le PHP de réception sera une usine a gaz ! et comment comptes tu avoir le moindre contrôle

  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 38
    Points
    38
    Par défaut
    Je pense que c'est une maniere standard que j'ai vu sur plein de formulaires du genre "ajouter un nouveau poste" dans les formulaires de sites de recherches d'emploi.
    Je te remercie qd meme

  6. #6
    Membre émérite
    Avatar de Nothus
    Homme Profil pro
    aucun
    Inscrit en
    Juillet 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : aucun
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 200
    Points : 2 427
    Points
    2 427
    Billets dans le blog
    27
    Par défaut
    C'est possible. Voici un exemple avec JSON : ton formulaire génère un code JSON valide (pas développé ici).

    Tu récupères ton POST (ou GET, bref par $_REQUEST) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $Colonnes = json_decode($_REQUEST['Colonne'],true); // true pour avoir un tableau et pas un objet
    ... ensuite tu parcours ton tableau $Colonnes.

    NB : attention, ça ne précise pas le TYPE de la colonne !!! (texte, INT, etc.). Pour résoudre ce pb, tu rajoutes à chaque colonne dans ton JSON un sous-tableau. Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"colonne_1":{"type":"text","var_defaut":"truc"},"colonne_2'":{"type":"int","var_defaut":"0"}}
    Plus d'informations ici : http://fr2.php.net/manual/en/function.json-decode.php
    "En dehors des langages de la famille LISP et du modèle RDF, point de salut."

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonjour,

    ou plus simplement les requêtes HTTP POST gère les tableaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="nom[]" />
    Si tu met plusieurs input comme celui au dessus tu recevra alors dans le tableau $_POST un tableau nom avec tous les input renseignés.

    Tu peut aussi leurs donner un index dans l'HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="text" name="personne[0]['nom']" />
    <input type="text" name="personne[0]['prenom']" />
    Avec l'exemple au dessus tu aura un tableau personne contenant un tableau avec deux informations le nom et le prénom de la personne 0, il te suffit d'ajouter un lot de deux input comme ce du dessus en remplaçant le 0 par un nombre quelconque et tu aura ta liste de personnes.

    Avec ces exemples tu doit pouvoir t'en sortir pour ton problème.
    une réponse vous a permis d'avancer ?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 38
    Points
    38
    Par défaut
    J'ai trouvé une solution avec une boucle while qui scan tous $_post qui commencent par...
    du genre $_post['nom'.$i]
    Je vous remercie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 19/04/2012, 11h38
  2. Réponses: 4
    Dernier message: 22/11/2007, 19h23
  3. réorganiser une table avec des variables dynamiques
    Par Stefan_H dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/11/2007, 12h40
  4. [D7],[ADO] : ordonner une table avec des champs référencés
    Par iam dans le forum Bases de données
    Réponses: 3
    Dernier message: 07/11/2006, 21h36
  5. Tables avec des relations & procédures dynamiques
    Par JustMe dans le forum Débuter
    Réponses: 5
    Dernier message: 15/12/2004, 09h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo