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 :

Récupération des valeurs d'une table


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Récupération des valeurs d'une table
    Bonjour

    J'ai un petit souci :
    J'ai une table "langues" avec 2 champs dans laquelle sont stockées des langues :

    - Le champ 1 est de type CHAR(1)
    - Le champ 2 contient les langues

    J'ai 3 enregistrements dans la table :
    - Champ 1 (langue_id) : a, b et c
    - Champ 2 (nom_langue) : français, anglais et allemand

    Je dois écrire une fonction ou je dois passer le paramètre "id_langue" qui peut être égal à "ac" (si la personne parle le français et l'allemand). Cette fonction doit me renvoyer dans ce cas la chaine de caractères : "français et allemand"

    Si le paramètre avait été "abc", la fonction doit me renvoyer dans ce cas la chaine de caractères : "français, anglais et allemand"

    Je suis débutant en PHP et je patauge complètement !

    J'ai commencé mais je sèche...

    Code : 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
    <?php
    //Paramètre de la fonction : $id_langue
     
    function donne_langue($id_langue) {   
    $resultat = mysql_query("SELECT * FROM langues")
    or die('Erreur de sélection dans la base de données '.mysql_error());
     
    $row =  mysql_fetch_array($resultat);
     
     
    // Je sèche ici sur la partie traitement
     
     
    return $langue;
    }
    ?>
    Si quelqu'un pouvait m'aider ce serait sympa !

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bonjour,

    La facon dont tu structures les choses est pour le moins bancale.
    Utiliser des ids en lettres est par exemple vraiment peu pratique.
    Es-tu obligé de procéder ainsi ?

    Comment va être produit le paramètre "ac" ?


    Si tu es vraiment, vraiment lié à ce fonctionnement, il faut decouper ta variable lettre par lettre et faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM langues WHERE id IN (lettre1, lettre2)

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Et en ce qui concerne l'exploitation proprement dite, un petit rappel pour le cas où Passer des requêtes Mysql en PHP

  4. #4
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Sabotage ?
    Qu'est ce qui aurait été préférable à des lettres ?

    Le but était de remplacer 8 champs (normalement il y a 8 langues) par un seul dans la base de données. Ensuite j'ai 22 champs (les régions françaises), que j'ai remplacé par un seul dans la base données selon le même principe. Ainsi je remplace 30 champs par 2 dans la bdd. J'ai essayé avec les 30 champs mais les temps de traitements devenaient excessivement longs...

    Je suis débutant j'ai imaginé ce principe mais il est probable qu'il y en est un de meilleur...!

    Quelqu'un pour m'aider ?

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    une table de reference t_langue :

    langue_id langue_nom
    1 anglais
    2 français
    3 allemand
    74 twazili

    une table de liaison t_langue_user
    id user_id langue_id
    1 1 1
    2 1 74
    3 67 3

    une requete avec une jointure :
    SELECT langue_nom FROM t_langue JOIN t_langue_user USING (langue_id) WHERE user_id = 1;

    l'utilisateur 1 parle anglais et twazilien

  6. #6
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Meilleur ?
    Je crois comprendre mais ça n'évitera pas les 30 champs dans les tables de liaison semble t'il... C'est ce que je veux éviter... (Voir mon msg précédent).

    Dans ton exemple ce n'est pas plutôt l'utilisateur 2 qui parle anglais et twazilien? Et l'utilisateur 1 parle anglais et anglais ? Ou alors j'ai mal compris ?

Discussions similaires

  1. [MySQL] Récupération des valeurs d'une table entière
    Par danydan01 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/05/2011, 11h48
  2. Réponses: 3
    Dernier message: 21/05/2007, 16h37
  3. Macro - Ecrire des valeurs dans une table
    Par gojaru dans le forum Access
    Réponses: 2
    Dernier message: 17/08/2006, 14h54
  4. Réponses: 2
    Dernier message: 17/05/2006, 22h35
  5. [SQL] Problème de récupération des valeurs d'une liste multiple en php
    Par BOLARD dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/05/2006, 01h29

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