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

Bibliothèques & Frameworks Discussion :

[Bootstrap Table] Récupération et traitement de données


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut [Bootstrap Table] Récupération et traitement de données
    Bonjour à tous,

    Je tente de mettre en place un tableau partagé, créé à partir d'une base PostGreSQL, chargée en PHP, et mise en forme avec Bootstrap + Bootstrap Table.
    Voici l'ébauche du projet :
    url supprimée

    Je rencontre un problème au chargement de la page, problème qui rend inopérationnel le moteur de recherche en haut à droite du tableau (alors qu'il fonctionne par exemple avec le tableau de l'onglet "Acquisitions").

    La console me dit ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data[En savoir plus] referentiel.php:590:16
    Et la fonction qui génère cette erreur est celle-ci :
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function ThemeFormatter(value, row, index) {
        row.tags = JSON.parse(row.tags);
        row.tags.forEach(function(item, i) {
        row.tags[i] = '<button type="button" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-tag"></span>&nbsp;' + item + '</button>';
            });
    		return '<button type="button" class="btn btn-success btn-md"><span class="glyphicon glyphicon-asterisk"></span>&nbsp;' + value + '</button><br><br>' + row.tags.join('');
    }

    Donc, je vois que mes données problématiques sont celles du champs tags de ma table PostGreSQL.
    Ce champ est de type text[] est voici par exemple le contenu de la 1ère valeur :
    {écoles,lycées,"établissements scolaires","éducation nationale"}(j'avais mis des quotes " " pour chaque item, mais PostGre les supprime quand j'édite la table)

    Auriez-vous une piste qui me permettrait d'identifier plus précisément ce qui pose problème ?

    Si besoin, je peux exporter l'ensemble du contenu de la colonne tags... mais est-ce que le problème vient vraiment de là ?

    Merci pour votre aide !

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut
    En poursuivant mes investigations, je me rends compte que la fonction ThemeFormatter n'est pas la seule à poser problème.
    La fonction DescriptionFormatter est aussi en cause.
    Du coup, je pense que le problème vient plus des fonctions que des données !

    Ça parait logique : j'ai écris ces fonctions JS sans maitriser vraiment JS...

    Du coup, c'est là qu'il doit être possible de corriger mon erreur.

    Voici le contenu de la deuxième fonction :
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function DescriptionFormatter(value, row, index) {
        row.formats = JSON.parse(row.formats);
        row.formats.forEach(function(item, i) {
            row.formats[i] = '<span class="badge badge-extension format-' + item + '">' + item + '</span>';
            });
    		return row.description + '<br>' + row.formats.join('') + '<br>'
    		+ '<a href="file:///' + row.chemin + '" class="btn btn-info btn-xs" role="button" data-toggle="tooltip" data-placement="top" title="Dossier"><span class="glyphicon glyphicon-folder-open"></span>&nbsp;&nbsp;' + row.chemin + '</a><br>'
    		+ '<a href="file:///' + row.links + '" class="btn btn-info btn-xs" role="button" data-toggle="tooltip" data-placement="top" title="Dossier"><span class="glyphicon glyphicon-folder-open"></span>&nbsp;&nbsp;' + row.links + '</a><br>'
    		+ '<a href="' + row.liens_metadata + '" class="btn btn-default btn-xs" role="button" data-toggle="tooltip" data-placement="top" title="Métadonnées"><span class="glyphicon glyphicon-list-alt"></span>&nbsp;Métadonnées</a>';
    }

    Le principe de ces fonctions est de formater en HTML le contenu du JSON généré depuis la base de données via PHP.

    Identifieriez vous mon (mes) erreur(s) ?

  3. #3
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    ton serveur PostGreSQL ne renvoit pas les données au format JSON, et même avec des doubles quotes ce ne sera toujours pas un format JSON

    à minima il faut : ["écoles","lycées","établissements scolaires","éducation nationale"]sinon tu peux utiliser un simple split, mais faudrait mieux maîtriser le paramétrage de ton serveur sur se formatage des données transmises.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut
    Merci psychadelic de te pencher sur ma question,

    Je ne suis pas sûr de bien comprendre ta réponse, mais pour éclaircir le fonctionnement, voici la fonction PHP qui génère le fichier "JSON" :
    (ce n'est pas moi qui en suis à l'origine, mais je ne sais plus où je l'avais récupéré )
    Code PHP : 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
    <?php
    # Connect to PostgreSQL database
    $conn = new PDO('pgsql:host=localhost;dbname=xxx_dbname_xxxx','xxx_user_xxx','xxx_mdp_xxx');
    # Build SQL SELECT statement and return the geometry as a GeoJSON element
    $sql = "SELECT theme, titre, producteur, source, date_maj, date_recup, description, 
           formats, liens_metadata, chemin, flux, links, id_cat, array_to_json(tags) as tags
           FROM sig.catalogue
           ORDER BY theme;";
    # Try query or error
    $rs = $conn->query($sql);
    if (!$rs) {
        echo 'An SQL error occured.\n';
        exit;
    };
    #loop through the returned data
    $data = array();
    while ($row = $rs->fetch(PDO::FETCH_ASSOC)) {
    	$data[] = $row;
    }
    #header('Content-type: application/json');
    echo json_encode($data);
    $conn = NULL;
    $rs=NULL;
    ?>

    Est-ce que ça permet d'y voir plus clair ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut
    Et j'ai oublié de mettre le lien vers le contenu du "JSON" (ou "pseudo-JSON") généré :
    url supprimée

    Pour comparaison, ce "JSON" créé de manière similaire en PHP ne génère pas d'erreur :
    url supprimée

  6. #6
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    a priori ton premier fichier est bien au format json.

    mais quel est l’intérêt de parser pour transformer en json des données qui sont déjà en json ?

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

Discussions similaires

  1. [OpenLayers] Récupération et traitement de données JSON
    Par ineszarka dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 25/06/2016, 09h00
  2. Récupérations et traitement de données
    Par iliaseyah dans le forum Access
    Réponses: 36
    Dernier message: 05/06/2015, 11h46
  3. Réponses: 15
    Dernier message: 28/10/2011, 15h45
  4. Réponses: 19
    Dernier message: 23/12/2004, 12h01
  5. Liste des tables d'une bases de données spécifique
    Par faridos23 dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/08/2003, 22h20

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