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ésultat dans une colonne en json


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 143
    Points : 49
    Points
    49
    Par défaut Résultat dans une colonne en json
    Bonjour j'ai un soucis ...
    je suis en train de tester une requette dans une table ayant des contenus en JSON
    le contexte :
    j'ai une table contenant des items x6072_k2_items
    avec le champs suivant extra_fields
    contenant (exemple)
    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
    17
    [ {
    "id":"1","value":"0000"}, 
    {"id":"2","value":" Ce circuit de 3 jours vous permettra de mieux connaître le Yucatan tout en allant à* votre rythme."}, 
    {"id":"3","value":" images/Forfaits/c6bo-voyages-plongee-autotour-3-jours-2-nuits-pour-decouvrir-le-yucatan"}, 
    {"id":"4","value":""}, {"id":"5","value":""}, 
    {"id":"6","value":""}, 
    {"id":"7","value":"Transferts inclus"}, 
    {"id":"8","value":""}, {"id":"9","value":""}, 
    {"id":"10","value":"De octobre à*avril"}, 
    {"id":"11","value":""}, 
    {"id":"12","value":"Accessible à tous"}, 
    {"id":"13","value":"2"}, 
    {"id":"14","value":"20"}, 
    {"id":"15","value":""}, 
    {"id":"15","value":""}, 
    {"id":"18","value":""}, 
    {"id":"19","value":""}, ]
    et je voudrais pouvoir listé les articles dans l'id 14 est égale à 20
    Voici ma requette
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM x6072_k2_items WHERE JSON_CONTAINS(extra_fields, ' "20" ', '$.14');
    il me renvoie
    #3141 - Invalid JSON text in argument 1 to function json_contains: "Invalid escape character in string." at position 846.
    j'ai essayer avec 'extra_fields' ect
    Mais je ne trouve pas ... Merci d'avance pour votre aide

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 413
    Points : 4 856
    Points
    4 856
    Par défaut
    Salut,

    D'abord il y'a une virgule en trop à la fin du tableau que tu dois supprimer.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * FROM `x6072_k2_items` 
    where json_contains(extra_fields,'{"id":"14","value":"20"}','$')=1

    Sinon il existe JSON_SEARCH :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * FROM `x6072_k2_items` 
    where 
    replace(JSON_SEARCH(extra_fields,'one',"14",null,'$[*].id'),".id","")=replace(JSON_SEARCH(extra_fields,'one',"20",null,'$[*].value'),".value","")

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 143
    Points : 49
    Points
    49
    Par défaut
    hello déjà merci pour la réponse ... mais il me renvoi toujours cette erreur
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM `x6072_k2_items` 
    WHERE json_contains(extra_fields,'{"id":"14","value":"20"}','$')=1 LIMIT 0, 25
    #3141 - Invalid JSON text in argument 1 to function json_contains: "Invalid escape character in string." at position 846.
    pour les deux ..

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 413
    Points : 4 856
    Points
    4 856
    Par défaut
    Le format de ton json n'est pas correcte, il y'a une virgule à la fin dans :

    {"id":"19","value":""},/*celle-ci*/ ].

    L'as-tu supprimée ou pas?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 143
    Points : 49
    Points
    49
    Par défaut
    ahah ... mais il faudrait que je checke toute ma base ..... (500 articles) pour trouver celui fait foiré ...
    y a un truc pour aller plus vite ?
    j'ai fait ceci
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `x6072_k2_items` WHERE `extra_fields` LIKE '%, ]%'
    puis corrigé le truc mais j'ai toujours l"erreur bizarre

    exemple 2
    [ 
    {"id":"1","value":"0000 €"}, 
    {"id":"2","value":" Des requins marteaux en abondance"},
    {"id":"3","value":" images/Forfaits/c6bo-voyages-plongee-croisiere-plongee-a*-l-ile-coco-avec-la-flotte-sea-hunter"}, 
    {"id":"4","value":""}, 
    {"id":"5","value":""}, 
    {"id":"6","value":""}, 
    {"id":"7","value":"Transferts inclus"}, 
    {"id":"8","value":""}, 
    {"id":"9","value":""}, 
    {"id":"10","value":"De décembre à*avril "}, 
    {"id":"11","value":"bancs de requins marteaux, raies mantas "}, 
    {"id":"12","value":"Niveau 2 / Advanced Open Water avec 50 plongées minimum, Deep Diver recommandé"}, 
    {"id":"13","value":"7"}, 
    {"id":"14","value":"5"}, 
    {"id":"15","value":"1"}]
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM `x6072_k2_items` 
    where json_contains(extra_fields,'{"id":"7","Transferts inclus"}','$')=1 LIMIT 0, 25
    #3141 - Invalid JSON text in argument 1 to function json_contains: "Invalid escape character in string." at position 846.
    Merci

Discussions similaires

  1. [XL-2013] Modification d'un resultat et mettre le nouveau resultat dans une autre colonne
    Par Mateos_hiss dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/06/2016, 11h15
  2. nom de colonne en fonction du resultat(dans une seule requete)
    Par chezdevelopping dans le forum Requêtes
    Réponses: 7
    Dernier message: 14/06/2011, 12h30
  3. Masquer une ligne selon resultat dans une colonne
    Par amne26 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/10/2008, 23h45
  4. intervertir les valeurs dans une colonne d'une table
    Par hammou dans le forum Débuter
    Réponses: 2
    Dernier message: 26/01/2004, 10h15
  5. Syntaxe pour avoir un seul resultat dans une requete
    Par Pompil dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/09/2003, 15h51

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