Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Aiuto su creazione JSON da db

    ciao!

    io avrei necessità di creare da db, un JSON con questa struttura:
    codice:
    {   
        items: [
            {id: "recent", text: "Recent", icon: "recent.png", selected: true},
            {type: "separator"},
        ]
    }
    io ho fatto questa funzione:
    Codice PHP:
        public function getGruppi() {
            
    $query 'SELECT * FROM notes GROUP BY gruppo ORDER BY gruppo';
            
    $prepare $this->conn->prepare($query);
            
    $prepare->execute();
            
    $res $prepare->fetchAll();
            
    $arr = array("items");
            foreach (
    $res as $r) {
                
    array_push($arr, array(
                    
    "id" => $r['gruppo'],
                    
    "text" => $r['gruppo']
                ));
            }
            return 
    json_encode($arr);
        } 
    la stringa che mi esce è questa:
    codice:
    ["items",{"id":"c#","text":"c#"},{"id":"cpp","text":"cpp"},{"id":"database","text":"database"},{"id":"java","text":"java"},{"id":"java  android","text":"java  android"},{"id":"js","text":"js"},{"id":"kotlin","text":"kotlin"},{"id":"lavoro","text":"lavoro"},{"id":"linux","text":"linux"},{"id":"mondo  web","text":"mondo  web"},{"id":"network","text":"network"},{"id":"php","text":"php"},{"id":"python","text":"python"},{"id":"ruby","text":"ruby"},{"id":"server","text":"server"},{"id":"software","text":"software"},{"id":"vari","text":"vari"}]
    in sostanza:
    • non ho le parentesi graffe ad inizio e fine
    • dopo il campo items mi esce una virgola, quando invece mi dovrebbe usire un array con tutte le altre voci


    avrei già la soluzione, che sarebbe quella di costruire una stringa e concatenarla.
    e cosi ricreare la struttura richiesta.
    ma mi non mi fa impazzire.
    avete qualche altra soluzione migliore??

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Se vuoi che i valori siano dentro items modifica questo:

    codice:
    array_push($arr, array(
        "id" => $r['gruppo'],
        "text" => $r['gruppo']
    ));

    in questo:

    codice:
    array_push($arr['items'], array(
        "id" => $r['gruppo'],
        "text" => $r['gruppo']
    ));

    Per avere le graffe all'inizio invece:

    codice:
    return json_encode(array($arr));

    Dovrebbe (non l'ho testato) andare bene.

  3. #3
    ciao!

    allora, come prima modifica ho fatto questo (lo avevo già provato in verità):
    Codice PHP:
            $arr = array("items");
            foreach (
    $res as $r) {
                
    array_push($arr['items'], array(
                    
    "id" => $r['gruppo'],
                    
    "text" => $r['gruppo']
                ));
            }
            return 
    json_encode($arr); 
    ma mi da questo errore:
    codice:
    Warning:  array_push() expects parameter 1 to be array, null given in NotesDb.php on line 59

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Scusami ti ho risposto di fretta pensando che lo castasse ad array.

    Inizializza così l'array:

    codice:
    $arr = array("items");
    diventa
    codice:
    $arr['items'] = array();
    A questo punto non fare la modifica sul return che ti avevo detto, lascialo come lo avevi nel primo post e dovrebbe funzionare.

  5. #5
    cosi funziona:
    Codice PHP:
            $arr['items'] = array();
            foreach (
    $res as $r) {
                
    array_push($arr['items'], array(
                    
    "id" => $r['gruppo'],
                    
    "icon" => 'recent.png',
                    
    "text" => $r['gruppo']
                ));
            }
            return 
    json_encode($arr); 
    grazie!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.