Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: da XML a JSON

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072

    da XML a JSON

    ciao a tutti, ho una pagina che genera un XML


    //Begin of the Document Creation
    $XML = new SimpleXMLElement("<locations></locations>");

    while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) {

    $aaa = $XML->addChild('location');
    $aaa->addChild('id', $row{'id'});


    Tutto OK, ma vorrei fare una prova generando un JSON invece che un XML, cosa devo cambiare ??

    Thanks

  2. #2
    http://php.net/manual/en/function.json-encode.php esempio 1...ovviamente invece di un xml farai un array e lo encodi in json, a meno che tu non voglia encodare l'xml...buh
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    mmmmm grazie per la risposta!!!

    Però non ho capito cosa devo cambiare nel mio codice e cosa va bene

    Thanks

  4. #4
    mah una cosa del tipo

    Codice PHP:


    $data 
    = array('locations' => array());

    while (
    $row mysql_fetch_array($result,MYSQL_ASSOC)) {    

    $data['locations'][] = array('id' => $row['id']);


    }

    echo 
    json_encode($data); 
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Grazie mille!!

    Quindi

    $data['locations'][] = array('id' => $row['id']);

    e per gli altri campi proseguo

    $data['locations'][] = array('campo2' => $row['campo2']);
    $data['locations'][] = array('campo3' => $row['campo3']);
    $data['locations'][] = array('campo4' => $row['campo3']);

    ...


    ed alla fine passo la var $data alla chiamata JSON!

    E' corretto?

    Tutto qui??

  6. #6
    Originariamente inviato da Valeria75_bis
    Grazie mille!!

    Quindi

    $data['locations'][] = array('id' => $row['id']);

    e per gli altri campi proseguo

    $data['locations'][] = array('campo2' => $row['campo2']);
    $data['locations'][] = array('campo3' => $row['campo3']);
    $data['locations'][] = array('campo4' => $row['campo3']);

    ...


    ed alla fine passo la var $data alla chiamata JSON!

    E' corretto?

    Tutto qui??
    beh si... ovviamente l'header della pagina a quel punto non è più text/xml come avevi impostato per l'xml, ma sarà

    Codice PHP:
    header('Content-type: application/json'); 

    quindi tutta la tua pagina sarà:

    Codice PHP:
    <?php

    $data
    ['locations'][] = array('id' => $row['id']); 

    while(..){
    ...
    }

    header('Content-type: application/json');
    echo 
    json_encode($data);
    exit;
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Sto provando ma non capisco come iterare gli elementi

    quindi

    Codice PHP:
        $data = array('locations' => array()); 
        
        while (
    $row mysql_fetch_array($result,MYSQL_ASSOC)) {    
            
                
    $data['locations'][] = array('id' => $row['id']); 
    a questo punto come aggiungo a $data gli altri campi del DB??

    zip
    address
    mail
    ....??

    con

    Codice PHP:
    $data['locations'][] = array('id' => $row['zip']); 

    $data['locations'][] = array('id' => $row['address']); 

    $data['locations'][] = array('id' => $row['mail']); 

    non sembra essere corretto...



    Fatto questo (creata la mia variabile $data) basterà fare:

    Header('Content-type: application/json');

    echo json_encode($data);

    dopo la chiusura del ciclo while

    Corretto??

    Grazie infinite!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Ho atto altre prove ma non capisco cosa sbaglio nel codice indicato sopra

  9. #9
    Tanto per capire il livello: ma lo conosci il php? Cmq basta:

    Codice PHP:

    $data
    ['locations'][] = array('id' => $row['id'],'zip' => $row['zip'],'address' => $row['address'], 'mail' => $row['mail']); 
    anche se, visto che devi semplicemente portarti dietro la riga $row, basta che fai

    Codice PHP:
    $data['locations'][] = $row
    e fai prima
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Grazie per la risposta.... PHP non lo conosco approfonditamente, ma sto imparando

    per quanto riguarda la seconda soluzione

    $data['locations'][] = $row;


    praticamente crea automaticamente l'array associativo?? Senza farlo campo per campo come nel primo esempio??


    $data['locations'][] = array('id' => $row['id'],'zip' => $row['zip'],'address' => $row['address'], 'mail' => $row['mail']);


    E' corretto??

    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 © 2025 vBulletin Solutions, Inc. All rights reserved.