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

 MySQL Discussion :

Extraction de données à l'intérieur d'une colonne


Sujet :

MySQL

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Points : 52
    Points
    52
    Par défaut Extraction de données à l'intérieur d'une colonne
    Bonjour,

    Je ne sais pas comment procéder pour extraire des données présentent dans une colonne d'une table mysql

    le contenu de la colonne est le suivant , celle ci commence par un crochet ouvert [ et se termine par un crochet fermé ] :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [{"title":"Nom","message":"DURAND","type":"input","field_id":213},
    {"title":"Pr\u00e9nom","message":"Benoit","type":"input","field_id":214},
    {"title":"Email","message":"durand.benoit@essai.com","type":"input","field_id":251},
    {"title":"T\u00e9l\u00e9phone","message":"33600000000","type":"input","field_id":215},]
    je cherche à mettre dans des variables nommées : $nom, $prenom, $email, $tel les contenus respectifs situés entre la syntaxe message:" et ",

    soit en résultat:



    Pourriez-vous m'aider à composer la requête pour obtenir ce résultat svp ?

    La colonne contenant ces infos ne nomme "message"

    Pour l'instant j'ouvre la table `btj4_baforms_submissions` et je classe les données par id .

    Nom : capture.jpg
Affichages : 116
Taille : 130,5 Ko

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     $query = "
     SELECT * FROM `btj4_baforms_submissions`
     
        ORDER BY id DESC
    	LIMIT 1
    	OFFSET $i
    	";
     
    $result = mysqli_query($conn, $query);

    Ensuite, comment faire pour lire le contenu de la colonne message et récupérer que ce dont j'ai besoin ?

    Merci pour votre aide,
    Cordialement,

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 099
    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 099
    Points : 8 208
    Points
    8 208
    Billets dans le blog
    17
    Par défaut
    Ta colonne contient du JSON.

    Tu peux procéder de 2 manières :
    -- Avec PHP : tu récupères la valeur de manière classique, tu la décodes avec json_decode(), tu obtiens ainsi un objet/tableau contenant tes données
    -- Avec MySQL : grâce à son support JSON => https://dev.mysql.com/doc/refman/8.0/en/json.html

    Avec MySQL tu peux générer des colonnes/lignes à partir d'un JSON, exemple si les éléments du tableau JSON sont toujours dans le même ordre* :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT ALL
        id,
        message->>'$[0].message' as last_name,   -- DURAND
        message->>'$[1].message' as first_name,  -- Benoit
        message->>'$[2].message' as email,       -- durand.benoit@essai.com
        message->>'$[3].message' as phone_number -- 33600000000
    FROM btj4_baforms_submissions
    WHERE ...
    ...
    * ce sur quoi il ne faut pas trop compter
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Points : 52
    Points
    52
    Par défaut
    J'aimerai partir sur une solution en PHP faisant appel a des requêtes mySQL

    par contre je n'ai pas bien compris comment les données attendues étaient mises en table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    message->>'$[0].message' as last_name
    message est l'id de la colonne et $[0].message et le 1er champ du json ?


    pour l'instant je n'arrive pas a composer la bonne requete avec json_decode() pour que les données soient bien indexées

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 099
    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 099
    Points : 8 208
    Points
    8 208
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    message->>'$[0].message' as last_name
    message : c'est ta colonne SQL
    ->> : pour accéder aux valeurs du JSON, te concernant il s'agit d'un tableau de 4 objets
    $[0] : pour accéder au premier élément/objet du tableau JSON
    .message : pour accéder à la propriété "message" de l'objet JSON

    Tu as essayé d'exécuter la requête ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Points : 52
    Points
    52
    Par défaut
    Dans la console SQL de la table j'arrive pas afficher la dernière ligne de la table avec cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT ALL
     
        id,
        message->>'$[0].message' as nom,
        message->>'$[1].message' as prenom,
        message->>'$[2].message' as email,
        message->>'$[3].message' as telephone
     
    FROM btj4_baforms_submissions
     
    ORDER BY id DESC
    LIMIT 1
    Par contre, je ne parviens pas à réutiliser les variables : nom , prenom , email, telephone avec du code PHP ensuite.

    Pour essayer, j’essaie d'afficher via du PHP les résultats sous forme de table HTML avec ce code, mais ça ne fonctionne pas :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    echo "</br>";
    echo "DEMANDE n° : " . $i;
    echo "</br>";
    echo "*---------------------*";
    echo "</br>";
     
    echo "data : " . $nom;
    echo "</br>";
     
    echo "";
    echo "</br>";
    echo "";
    echo "</br>";

    Est-ce que j'appelle la variable de mauvaise façon ?

    Merci à vous,

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut à tous.

    En cherchant sur le net, on trouve des exemples dont celui-ci.

    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/10/2017, 11h17
  2. [XL-2010] Ajout de donnée en fonction d'une colonne et d'une ligne
    Par metiss_mimi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/03/2017, 12h05
  3. Extraire des données a partir d'une colonne d'un qvd
    Par mano_bi dans le forum QlikView
    Réponses: 5
    Dernier message: 21/07/2015, 21h35
  4. Réponses: 5
    Dernier message: 10/08/2011, 18h05
  5. Réponses: 1
    Dernier message: 10/05/2011, 20h34

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