Visualizzazione dei risultati da 1 a 10 su 10

Discussione: PHP + Json valore null

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    106

    PHP + Json valore null

    Ciao a tutti
    premetto che sto sviluppando un app da appoggiare ad un piccolo sito sviluppato in joomla, ho però un problema quando voglio tirarmi fuori gli articoli.
    Il problema è che quando faccio la query e creo l'oggetto json, questo ha un valore nullo
    faccio un esempio pratico

    con questo script in php tiro fuori le info di cui ho bisogno
    Codice PHP:
    <?php
    include "db.php"
    if (
    $db == FALSE) die ("Errore nella connessione. Verificare i parametri...");
    mysql_select_db($db_name) or die ("Errore nella selezione del database. Verificare i parametri..."); 
    $query="SELECT `id`, `title`, `introtext`, `fulltext`, `alias`, `catid`, `created`, `created_by` 
    FROM `xxxx_content` WHERE `catid`=13 ORDER BY `created` DESC LIMIT 0, 6"


    $q=mysql_query($query); 

    while(
    $e=mysql_fetch_assoc($q)) 
       
    $output[]=$e; print(json_encode($output)); 

    mysql_close(); 
    ?>
    funziona tutto, solo che il parametro fulltext risulta nullo. Potete visionare il risultato a questo link

    Se ad esempio tiro fuori solo il risultato della query, in questo modo
    Codice PHP:
    <?php 
    include "db.php"
    if (
    $db == FALSE) die ("Errore nella connessione. Verificare i parametri..."); 
    mysql_select_db($db_name) or die ("Errore nella selezione del database. Verificare i parametri..."); 

    $query="SELECT `fulltext` 
    FROM `xxxx_content` 
    WHERE `id`=53"

    $q=mysql_query($query); 
    $count=mysql_num_rows($q);
    if(
    $count==1){ 
        while (
    $row mysql_fetch_assoc($q)) 
        { 
           print 
    $row['fulltext']; 
        } } 
    mysql_close(); 
    ?>
    il valore non è null, ma stampa a video l'articolo. (link test}

    Io in pratica vorrei capire perchè non è possibile esportare il tutto in json...
    forse sbaglio qualcosa io, ma non riesco proprio a risolvere.
    se magari qualcuno ha la soluzione a sto maledetto problema, sarebbe l'ideale

    Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    prova a fare un encoding mettendo tu a mano la variabile... può essere un problema di codifica del testo (utf?): verifica come dicevo con una var. hard-coded e prova a mettere il teso un pezzo alla volta

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    106
    Originariamente inviato da eiyen
    prova a fare un encoding mettendo tu a mano la variabile... può essere un problema di codifica del testo (utf?): verifica come dicevo con una var. hard-coded e prova a mettere il teso un pezzo alla volta
    ok ci provo, non sono molto esperto di php, comunque ti riferisci ad una cosa del genere giusto? (documentazione php )

    Però se ci fai caso, la colonna introtext la esporta bene.

    In pratica un articolo joomla è diviso su 3 colonne
    introtext + images + fulltext

    comunque provo... grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    prova un semplice:

    Codice PHP:
    var_export(json_encode(
      array(
        
    '...' => '...'
        
    '...' => '...',
        ...
      ))); 
    mettendo "a mano i valori" per vedere se funge... in particolare con il campo problematico mettendo prima tutto il testo e poi togliendone un pezzetto alla volta per vedere se c'è qualche carattere "fastidioso"

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    106
    hai ragione!

    Il problema era la codifica del testo
    infatti con questo script tira fuori tutto
    Codice PHP:
    <?php 
    include "db.php"
    if (
    $db == FALSE) die ("Errore nella connessione. Verificare i parametri..."); 
    mysql_select_db($db_name) or die ("Errore nella selezione del database. Verificare i parametri..."); 
    $query="SELECT `id`, `fulltext` 
                FROM `xxxx_content` 
                WHERE `id`=53"


    $q=mysql_query($query); 
    $count=mysql_num_rows($q); 

    if(
    $count==1){ 
        while (
    $row mysql_fetch_assoc($q)) 
         { 
            
    $text = (string)$row['fulltext']; 
            
    $id $row['id']; } 
          } 

    $a = array('id' => $id'fulltext' => utf8_encode($text)); 

    print(
    json_encode($a)); 
    mysql_close(); ?>
    solo che le lettere accentate le tira fuori male, link

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    vanno benissimo... quando recuperi il dato usa la funzione di decoding

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    106
    Originariamente inviato da eiyen
    vanno benissimo... quando recuperi il dato usa la funzione di decoding
    ti ringrazio per la pazienza, ma non ho capito

    io ho provato a fare così

    Codice PHP:
    $text utf8_encode((string)$row['fulltext']);


    $a = array('id' => $id'fulltext' => $text); 
    come detto prima, che tra l'altro credo che sia come dice la documentazione. Se puoi essere più preciso che non riesco a venirne fuori

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    mi pare vada bene... poi quando recuperi i dati via json (non so dove li usi: come li usi?) prima di riutilizzarli applica utf8_decode... prova un po'

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    106
    ah ho capito...
    i dati li importo nell'app android, quindi farò la codifica tramite java, speriamo bene


    ti ringrazio, gentilissimo

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    prova un po'... se avessi problemi cmq un'altra possibilità è codificare l'intero vettore serializzandolo e usando la codifica base64 per poi effettuare il processo inverso quando lo riutilizzi

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.