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 :

Créer plusieurs fichier JSON à partir des résultats d'une requete SQL


Sujet :

PHP & Base de données

  1. #1
    sff
    sff est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 14
    Points : 12
    Points
    12
    Par défaut Créer plusieurs fichier JSON à partir des résultats d'une requete SQL
    Bonjour,

    je tente depuis quelques temps de créer plusieurs fichiers JSON à partir des résultats d'une requête SQL

    Je possède une colonne "zipcode" dans ma bdd qui contient plusieurs valeurs (45000, 37000 56000 etc)

    Je souhaite créer à partir d'une requete sql un fichier JSON contenant tous les résultats dont les zipcode sont égal à 37000

    Un autre contenant tous les résultats dont le zipcode est égal à 45000

    etc

    Est ce faisable ?

    Merci d'avance

  2. #2
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 109
    Points : 63
    Points
    63
    Par défaut
    Tu crées une fonction qui écrit dans un fichier json en mode append. ecritJSON($nomJSON)
    Tu écris une boucle sur ta requête SQL et à chaque fois que tu rencontres 37000 tu écris ecritJSON('MonJSON37000') idem pour 45000
    Ou alors tu fais dans ta boucle sur ta requête SQL un switch($zipcode) { case '45000': case '37000': ecritJSON('MonJSON'.$zipcode); break;

    Citation Envoyé par sff Voir le message
    Bonjour,

    je tente depuis quelques temps de créer plusieurs fichiers JSON à partir des résultats d'une requête SQL

    Je possède une colonne "zipcode" dans ma bdd qui contient plusieurs valeurs (45000, 37000 56000 etc)

    Je souhaite créer à partir d'une requete sql un fichier JSON contenant tous les résultats dont les zipcode sont égal à 37000

    Un autre contenant tous les résultats dont le zipcode est égal à 45000

    etc

    Est ce faisable ?

    Merci d'avance

  3. #3
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Citation Envoyé par berthos Voir le message
    Tu crées une fonction qui écrit dans un fichier json en mode append. ecritJSON($nomJSON)
    Tu écris une boucle sur ta requête SQL et à chaque fois que tu rencontres 37000 tu écris ecritJSON('MonJSON37000') idem pour 45000
    Ou alors tu fais dans ta boucle sur ta requête SQL un switch($zipcode) { case '45000': case '37000': ecritJSON('MonJSON'.$zipcode); break;
    Non. Il y a 36.000 communes en France donc presqu'autant de codes postaux. Il n'est donc pas possible de faire un switch sur ces valeurs. Ca n'a pas de sens.
    La solution passe par un parcours de l'ensemble des données trié sur le code postal avec une rupture sur ledit code postal. La méthode à appliquer dépend aussi du nombre d'enregistrements à traiter.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    <?php
    //---- DATABASE
    define('DB_HOST', '127.0.0.1');
    define('DB_NAME', 'tests');
    define('DB_USER', 'root');
    define('DB_PWD' , '');
    $bdd       = new PDO('mysql:host='.DB_HOST.'; dbname='.DB_NAME,DB_USER,DB_PWD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    $query     = "SELECT zipcode, id, texte FROM `lcp` order by zipcode, id";
    $prepared  = $bdd->prepare($query);
    $prepared->execute();
    //----- En mémoire
    $liste = array();
    while ($row = $prepared->fetch(PDO::FETCH_ASSOC)) {
     if (!isset($liste[$row['zipcode']])) {
      $liste[$row['zipcode']] = array();
     }
     $liste[$row['zipcode']][] = $row['texte'];
     
    }
    foreach ($liste as $key => $sousListe) {
     $json = json_encode(array_merge(["$key"],$sousListe));
     file_put_contents("fichier$key.json",$json);
    }
    //------ Directement sur l'ensemble des résultats
    $liste   = array();
    $zipcode = "";
    $prepared->execute();
    $row = $prepared->fetch(PDO::FETCH_ASSOC);
    while ($row) {
     if ($zipcode != $row['zipcode']) {
      $zipcode = $row['zipcode'];
      $liste   = array();
     }
     
     $liste[] = $row['texte'];
     
     $row = $prepared->fetch(PDO::FETCH_ASSOC);
     if ($zipcode != $row['zipcode'] || $row === false) {
      $json = json_encode(array_merge([$zipcode],$liste));
      file_put_contents("fichier2$zipcode.json",$json);  
     }
    }

    Structure et données de la table lcp.
    lcp.sql
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

Discussions similaires

  1. [XL-2007] Créer un graphique à partir des résultats d'une requête SQL
    Par jpclabaux dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/04/2013, 22h12
  2. [AC-97] Création d'une table à partir des résultats d'une requete analyse croisée
    Par docjo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/11/2009, 21h46
  3. [AC-2003] Exporter plusieurs fichiers excel à partir des données d'une requête
    Par Daphnoxbow dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 06/10/2009, 11h41
  4. Réponses: 2
    Dernier message: 21/03/2008, 15h41

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