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 :

Valeurs sur bdd


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2024
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Valeurs sur bdd
    Bonsoir à tous, est il possible dans une table sql de définir un choix à une valeur svp exemple concret:

    Champ choix: Valeurs:
    A,B,C 1,2,3

    Si l utilisateur choisi la réponse B, dans le champ « valeurs » cela enregistre « 2 »

    Merci d avance à tous

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 238
    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 238
    Points : 8 502
    Points
    8 502
    Billets dans le blog
    17
    Par défaut
    Tu peux faire cela avec 2 tables et une dépendance fonctionnelle / clef étrangère :

    Table constructeur (id, nom)
    Table voiture (id, nom, constructeur_id)

    constructeur
    --------------
    id=1 nom=Peugeot
    id=2 nom=Renault
    id=3 nom=Citroën
    insert into voiture
    set
        nom = 'Alpine',
        constructeur_id = (select all id from constructeur where nom = 'Renault')
    ;
    La table voiture vaudra :

    id=1 nom=Alpine constructeur_id=2
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2024
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Visiblement je n’y arrive pas, et vu mes lacunes en sql, peut on être plus précis svp?

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 340
    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 340
    Points : 39 738
    Points
    39 738
    Billets dans le blog
    9
    Par défaut
    De ce que je comprends du besoin, la réponse ici est plutôt l'utilisation d'un CASE :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    create table T1
          (  T1C1   smallint primary key
           , T1C2   char(1)  not null
           , T1C3   smallint not null
          )
    ;
    insert into T1 (T1C1, T1C2, T1C3)
    values (   1
            , 'A'
            , case when T1C2 = 'A' then 1
                   when T1C2 = 'B' then 2
                   else 3
              end
           )
         , (   2
            , 'C'
            , case when T1C2 = 'A' then 1
                   when T1C2 = 'B' then 2
                   else 3
              end
           )  
         , (   3
            , 'A'
            , case when T1C2 = 'A' then 1
                   when T1C2 = 'B' then 2
                   else 3
              end
           )  
         , (   4
            , 'B'
            , case when T1C2 = 'A' then 1
                   when T1C2 = 'B' then 2
                   else 3
              end
           )  
    ;

    Résultat :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * from T1
    ;

    Solution applicable seulement s'il n'y a que peu de valeurs possibles.
    Mais en ce cas, il y a une redondance dans la table, quel est le but de la manœuvre ?

    Nom : Sans titre.png
Affichages : 112
Taille : 1,5 Ko

  5. #5
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 238
    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 238
    Points : 8 502
    Points
    8 502
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Mensiorsoca Voir le message
    Visiblement je n’y arrive pas, et vu mes lacunes en sql, peut on être plus précis svp?
    Pas sans savoir précisément ce que tu veux au final (j'image que ton exemple n'est pas un cas d'usage réel).
    Sinon voir la réponse d'escartefigue
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  6. #6
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2024
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Re
    Le but est:

    Un technicien effectue des installations +/- 8 par jour, nous avons au total 20 techniciens… nous voulons qu’il entre son matériel installé via un formulaire, dans le formulaire nous devons absolument récupérer le nom du matériel placer et non pas une valeur…. En revanche j’ai besoin d attribuer une valeur au matériel pour ensuite créer une barre de progression sur 100 points

    Le but étant de dire au technicien en fin de journée tu as eu 90/100

    J’espère avoir été compréhensible dans mon texte. Je vous remercie pour votre aide

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 340
    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 340
    Points : 39 738
    Points
    39 738
    Billets dans le blog
    9
    Par défaut
    En ce cas il faut une table matériel (PK soulignée, contraintes unique en gras, FK suffixées #) :
    MA_MATERIEL (MA_ident, MA_reference, MA_num_serie, MA_date_fab, MA_valeur...)

    Une table Technicien :
    TE_TECHNICIEN(TE_ident, TE_matricule, TE_nom, TE_prenom...)

    Une table intervention, une intervention est faite par un technicien à une date, c'est donc une table associative dont la PK est composée :
    IT_INTERV (IT_date, TE_ident#, MA_ident#, IT_duree, ...)

    Et en fin de journée, on recherche les interventions de chaque technicien pour la journée, et on cumule les valeurs des matériels concernés.

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 238
    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 238
    Points : 8 502
    Points
    8 502
    Billets dans le blog
    17
    Par défaut
    dans le formulaire nous devons absolument récupérer le nom du matériel placer et non pas une valeur….
    Pourquoi ? Généralement le problème ne se pose pas en faisant :

    <select name="materiel_id">
        <option value="123">Libellé matériel ID 123</option>
        <option value="234">Libellé matériel ID 234</option>
        ...
    </select>
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2024
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Seb
    Quand tu fais value = ça note la valeur à la place du matériel placé si j ai bonne mémoire hors il me faut savoir les deux et le matériel placé et la valeur

  10. #10
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2024
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    En ce cas il faut une table matériel (PK soulignée, contraintes unique en gras, FK suffixées #) :
    MA_MATERIEL (MA_ident, MA_reference, MA_num_serie, MA_date_fab, MA_valeur...)

    Une table Technicien :
    TE_TECHNICIEN(TE_ident, TE_matricule, TE_nom, TE_prenom...)

    Une table intervention, une intervention est faite par un technicien à une date, c'est donc une table associative dont la PK est composée :
    IT_INTERV (IT_date, TE_ident#, MA_ident#, IT_duree, ...)

    Et en fin de journée, on recherche les interventions de chaque technicien pour la journée, et on cumule les valeurs des matériels concernés.

    Voilà, j’ai créé mes 3 tables exactement comme dans votre exemple

    J’ai exécuté matériel et technicien

    Matériel:

    MA_ident: cga
    MA_reference: 08:b0:55:30:fe
    MA_num_serie: aucune
    MA_date_fab: 17-09/2024
    MA_valeur: 1.5

    Technicien:

    TE_ident: Steve
    TE_matricule: 7373
    TE_nom: Mensior
    TE_prenom: steve

    En revanche je présume que je dois faire les liens vers la table it_interv

    Intervention:

    IT_date: date du jour
    TE_ident#: faire la relation avec «*Steve*»
    MA_ident#: faire la relation avec «*cga*»
    IT_duree: aucun

    Si les étapes sont justes? Pouvez me dire comment joindre les infos te_ident et ma_ident avec mes deux autres tables svp? Merci

  11. #11
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 238
    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 238
    Points : 8 502
    Points
    8 502
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Mensiorsoca Voir le message
    Quand tu fais value = ça note la valeur à la place du matériel placé si j ai bonne mémoire hors il me faut savoir les deux et le matériel placé et la valeur
    Oui et comme ta base de données est, je l'espère, correctement modélisée, ça te permettra de retrouver le matériel correspondant sans aucune difficulté.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  12. #12
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2024
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Re
    Sais tu me dire comment lié les valeurs svp?

  13. #13
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 238
    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 238
    Points : 8 502
    Points
    8 502
    Billets dans le blog
    17
    Par défaut
    Escartfigue a donné un exemple de modèle de base de données
    => https://www.developpez.net/forums/d2.../#post12044721

    Moi un peu plus haut comment on peut l'exploiter à l'insertion
    => https://www.developpez.net/forums/d2.../#post12044452

    Exemple de formulaire à générer pour choisir le matériel
    => https://www.developpez.net/forums/d2.../#post12044732
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  14. #14
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2024
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Re
    Merci à tous pour votre aide vraiment

  15. #15
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 340
    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 340
    Points : 39 738
    Points
    39 738
    Billets dans le blog
    9
    Par défaut
    Quelques remarque supplémentaires :


    Citation Envoyé par Mensiorsoca Voir le message
    Voilà, j’ai créé mes 3 tables exactement comme dans votre exemple

    Matériel:

    MA_ident: cga
    MA_reference: 08:b0:55:30:fe
    MA_num_serie: aucune
    MA_date_fab: 17-09/2024
    MA_valeur: 1.5

    Technicien:

    TE_ident: Steve
    TE_matricule: 7373
    TE_nom: Mensior
    TE_prenom: steve
    [. . .]
    Les identifiants du modèle conceptuel qui deviennent clefs primaires dans les tables doivent être concis (pour des raisons de performances) et de contenu stable (car ils se propagent au travers des contraintes d'intégrité dans les tables liées).
    Pour la concision, on choisit le plus souvent des identifiants de type integer. L'integer est le type le plus concis à nombre de valeurs égales.
    Et pour la stabilité, on choisit en général une valeur attribuée automatiquement par la base de donnée. Selon le SGBD on parle d'identity, de counter, d'auto_increment...
    Mais, dans vos exemples, vous utilisez des identifiants de type char et dont le contenu est signifiant.
    Si le prénom "Steve" a été mal orthographié et qu'il doit être modifié, alors le phénomène de cascade va engendrer un grand nombre de mises à jour inutiles.
    De plus, si deux personnes portent le même prénom, alors on ne pourra pas utiliser une deuxième fois cette valeur, unicité des PK oblige.
    Bref, revoyez votre modèle pour remplacer toutes les clefs primaires par des types integer (voire bigint si le nombre de lignes estimé dépasse 2^31) avec la propriété identity ou équivalent selon le SGBD.

    Concernant les colonnes de type date, il ne faut pas mélanger les différents séparateurs : "17-09/2024" n'est pas une valeur valide. Utilisez '2024-09-17'.

  16. #16
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2024
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Escartefigue
    Bonjour Escartefigue, y a t il un moyen de te parler en privé svp? Merci à toi

  17. #17
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 340
    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 340
    Points : 39 738
    Points
    39 738
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Le principe d'un forum est d'échanger publiquement pour que tout un chacun puisse lire les échanges, participer le cas échéant et bénéficier des solutions proposées quand le sujet sera marqué à "résolu".
    Il faut donc poser les questions relatives aux points restant à éclaircir ici, dans ce fil de discussion.

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/10/2015, 10h35
  2. [MySQL] liste déroulante sur bdd récupération d'une valeur
    Par zeon71 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/10/2011, 15h42
  3. Réponses: 2
    Dernier message: 23/01/2006, 11h55
  4. Export Acces->Excel Requette sur bdd oracle
    Par cedrickb dans le forum Access
    Réponses: 2
    Dernier message: 31/12/2004, 14h27
  5. [Débutant] Tester une connection sur bdd
    Par lando dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 03/09/2003, 14h37

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