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 :

Créer mysql table suivant nombre des inputs


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 134
    Points : 75
    Points
    75
    Par défaut Créer mysql table suivant nombre des inputs
    Bonjour
    j'ai un formulaire avec un nombre de inputs modifiable, c'est-à-dire que l'utilisateur peut décider du nombre des inputs en ajoutant ou en supprimant les inputs autant qu'il le veut.
    Comment puis-je créer une table MySql qui contienne les inputs avec leur contenu ? Notez que les inputs ont un nom de classe (className).
    Le but est de créer un modèle (scénario) de formulaire que les utilisateur utiliseront plus tard pour remplir les données des autres inputs.
    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 218
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 218
    Points : 8 449
    Points
    8 449
    Billets dans le blog
    17
    Par défaut
    Tu ne peux pas procéder ainsi, c'est ingérable et contre-performant. Tes inputs ne doivent pas être en colonne mais en ligne.

    user
    -----------
    id
    name
    email

    model_form -- Table de paramétrage des modèles, un utilisateur peut avoir (0,n) modèles
    -----------
    id
    name
    description
    created_at
    user_id -- Propriétaire du modèle

    model_input -- Table de paramétrage des champs de saisie des modèles
    -----------
    id
    name
    default_value
    class_name
    display_order
    model_id

    Ensuite il faudra prévoir des tables pour les occurrences de formulaire et de champ de saisie valorisés.

    N'ayant pas plus d'infos sur ce que tu comptes faire je ne peux pas être plus précis.

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 134
    Points : 75
    Points
    75
    Par défaut
    Voici une partie du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <tbody>
    <tr>
    <td style="" >
    <input type="text"  name="ligne_critere1" id="ligne_critere1" class="class_critere_critere1" placeholder="Séectionner un thème"> 
    <input type="text"  name="rouge" class="rouge_critere1" id="rouge_critere1" style="color: #FFFFFF;" onclick="change_color(this);">
    <input type="text"  name="orange" class="ornage_critere1" id="ornage_critere1" style="color: #FFFFFF;" onclick="change_color(this);">
    <input type="text"  name="vert" class="vert_critere1" id="vert_critere1" style="color: #FFFFFF;" onclick="change_color(this);">
    </td>
    </tr>
    </tbody>
    Il s'agit d'un formulaire d'évaluation sur des thèmes désignés par un examinateur.
    A la base il y a 1 seule ligne composée de 4 inputs.
    A tout moment l'examinateur peut ajouter (clone / appendchild) ou supprimer (remove) une ligne selon les thèmes qu'il décide d'évaluer. 2 boutons sont mis à disposition (pour l
    Le premier input concerne le thème sur lequel l'examinateur souhaite évaluer les participants.
    Les 3 autres inputs sont des carreaux blancs qui change de couleur sur onclick (et bien sûr la valeur "value" qui est le code couleur et qui est cachée. Ce code couleur va être envoyé dans la table MySql pour être récupéré plus tard dans une page qui enregistre les évaluations de tous les participants).
    En faisant cela l'examinateur prépare un modèle d'évaluation qui peut être nommé "Exercice n°1".
    Pour résumer, dans un premier temps, l'examinateur entre uniquement les critères (le premier input de chaque ligne). Ensuite, il enregistre le modèle dans la base des données en créant une table MySql qu'il nommera "table_exercice1" (d'où la nécessité de "CREATE" et "INSERT" en même temps).
    Dans un deuxième temps, l'examinateur appelle la page avec un "FETCH" qui désigne le nom de l'exercice. A ce moment, il commence par remplir les autres inputs du FORM (les carreaux de couleur, et bien sûr le nom du participant et la date)
    NB: j'ai créé un Array dans lequel j'enregistre la valeur de tous les premiers input de chaque ligne (en me disant que je pourrai passer par un tableau dans la création de la table MySql)
    NB: J'utilise PHP PDO pour travailler sur MySql

    Voilà pourquoi je cherche une méthode de créer la table MySql qui ressemblerait à une LOOP ou autre.

    Merci de ton aide, SEB

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 218
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 218
    Points : 8 449
    Points
    8 449
    Billets dans le blog
    17
    Par défaut
    Ensuite, il enregistre le modèle dans la base des données en créant une table MySql
    Tu ne peux pas procéder ainsi, je te l'ai déjà dit, et je t'ai proposé un début de modèle.

    Ton descriptif s'encombre de détails non conceptuels inutiles à la réflexion

    Résumé :

    1. A la base il y a 1 seule ligne composée de 4 champs texte
    2. A tout moment l'examinateur peut ajouter ou supprimer une ligne selon les thèmes qu'il décide d'évaluer
    3. Le premier input concerne le thème sur lequel l'examinateur souhaite évaluer les participants
    4. Les 3 autres inputs sont des carreaux blancs qui change de couleur... (??) => Il faut bien distinguer la présentation de l'information. Ici quelle est l'information ?
    5. En faisant cela l'examinateur prépare un modèle d'évaluation qui peut être nommé "Exercice n°1".
    6. Pour résumer, (snip détails techniques)
    7. Dans un deuxième temps, l'examinateur appelle la page selon le nom de l'exercice. A ce moment, il commence par remplir les 3 autres inputs, le nom du participant et la date

    Pour le moment le modèle proposé répond pas mal au besoin (points 1. à 3.).

    Reste à voir à quoi correspondent les 3 champs couleur/texte. En partant du principe qu'il s'agit d'évaluer des copies papier selon 3 catégories (les 3 couleurs), cela pourrait donner :

    user -- Tables des examinateurs et étudiants
    ------------------
    id
    name
    email

    exercice_model -- Les modèles d'exercice
    ------------------
    id
    name
    creator_id -- Créateur du modèle

    theme_model -- Les thèmes évalués sur l'exercice
    ------------------
    id
    name
    description
    display_order
    model_id -- Exercice

    rating_model -- Les différentes évaluations possibles
    ------------------
    id
    name
    value
    color -- Pour la présentation
    description

    ex. (id, name, value, description, color) => (1, 'Mauvais', 0, '...', 'red'), (2, 'Moyen', 10, '...', 'orange'), (3, 'Bon', 20, '...', 'green')

    exercice -- Table des exercices évalués
    ------------------
    id
    created_at -- Date d'évaluation
    assessor_id -- Examinateur
    student_id -- Étudiant
    model_id -- Modèle de l'exercice examiné

    rating -- Table des évaluations données
    ------------------
    id
    exercice_id -- Exercice évalué
    theme_id -- Thème évalué
    rating_id -- Évaluation donnée par l'examinateur
    comment -- Commentaire sur l'évaluation laissé par l'examinateur

    Avec ces 6 tables tu as un système de modèle d'exercices/critères et d'enregistrement des évaluations totalement dynamique. Pas besoin de créer X tables. Chaque nouveau modèle ajoute des lignes aux tables *_model préexistantes.

    J'espère que tu y vois plus clair. Si je ne réponds pas précisément au besoin, ce qui est très probable (pas bien compris le rôle des "trois autres input"), ce n'est pas grave, le plus important est que tu comprennes le principe de non-redondance de l'information et que tu adaptes.

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 311
    Points : 39 677
    Points
    39 677
    Billets dans le blog
    9
    Par défaut
    Tout ceci est très confus.

    De même qu'on ne construit pas une maison sans en avoir dessiné le plan, on ne commence pas à créer les tables d'une base de données sans l'avoir préalablement modélisée.

    La bonne démarche pour modéliser une base de données est la suivante, il faut dans cet ordre :

    1. identifier les objets de gestion, on note par exemple "examinateur", "participant", "thème", "évaluation", il y en a sans doute d'autres.
    2. identifier les relations entre ces objets de gestion, là c'est beaucoup plus confus dans votre énoncé.
      On peut noter toutefois que c'est l'examinateur qui crée les modèles d'évaluation et que chaque modèle est basé sur un thème.
    3. rédiger les règles de gestion. Voyez dans ce fil de discussion la réponse 8 qui indique comment les rédiger


    Quand tout ça est fait, il faut établir un Modèle Conceptuel des Données (MCD) en utilisant un logiciel de modélisation.
    Il en existe des gratuits, comme l'excellent Looping que vous pouvez télécharger ICI
    Et à partir du MCD, la génération des tables est très simple : on choisit le SGBD cible (SQL server, MySQL ou autre) et le script DDL de création des tables est généré automatiquement et dans le bon ordre

  6. #6
    Membre régulier
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 134
    Points : 75
    Points
    75
    Par défaut
    Merci Escartefigue
    je vais me pencher sur cette méthode

  7. #7
    Membre régulier
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 134
    Points : 75
    Points
    75
    Par défaut
    Bonjour
    Finalement j'ai décidé de le faire avec ALTER TABLE ADD et insert & bindvalue conditionné par un if(isset($_POST['input***'])) pour chacun des inputs ajoutés.
    ça marche

    Merci à tous

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 218
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 218
    Points : 8 449
    Points
    8 449
    Billets dans le blog
    17
    Par défaut
    À bientôt

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

Discussions similaires

  1. limiter le nombre des lignes d'une table MYsql
    Par ikrambh dans le forum Requêtes
    Réponses: 2
    Dernier message: 31/08/2013, 15h09
  2. Réponses: 2
    Dernier message: 14/10/2006, 23h31
  3. [MySQL]Recuperer la liste des tables utilisées...
    Par zaventem dans le forum Requêtes
    Réponses: 4
    Dernier message: 21/03/2006, 02h36
  4. Réponses: 13
    Dernier message: 16/11/2005, 13h15
  5. Réponses: 8
    Dernier message: 20/06/2005, 15h10

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