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

    Problema con formattazione testo da db

    Un saluto a tutti.
    Ho un problema con dei dati che devo visualizzare in un sito web. In un db sono organizzati dei dati su delle news, che visualizzo nella home page del sito. Funziona tutto bene a parte la visualizzazione (o meglio, la formattazione) del testo delle news.
    I caratteri accentati, e forse altri caratteri 'sensibili', vengono visualizzati con "è".
    Ho provato sia con IE 7 che con google chrome. Vi riporto il codice php che riempirà un div con una notizia:

    Codice PHP:
     <?php
                    
    $i
    =1;
                    
    $id=$_GET['id'];
               
                                     
    $query   "SELECT * FROM news WHERE news_id LIKE '$id'";
            
    $risultato mysql_query($query) or die (mysql_error());

                       
    while(
    $row=mysql_fetch_assoc($risultato))

                                                      
       
    $txt=$row['news_txt'];
       
    $titolo=$row['news_titolo'];
       
    $datains=$row['news_data'];
       
    $txthtmlentities ($txt);
       
    $titolohtmlentities ($titolo);
           
       
    $txt=stripslashes($txt);
       
    $titolo=stripslashes($titolo);
                                            
        echo 
    "  <div id='news_title'>
                 
    $titolo
                 </div>
                 <div id='news'>
                 
    $txt
                 </div>
                 "
    ;
                            
                          
        }

    ?>
    La pagina è visibile su latinson.altervista.org
    Come potrei ovviare a questo fastidioso errore?
    Ringrazio tutti anticipatamente.

    Andrea

  2. #2
    hm. forse si puoi provare a usare il base64_encode per il testo quindi si invia l'informazione a il database. poi base64_decode quindi il testo è visualizza.

    EDIT: o se possibile si cambi la tabella a utf-8 per encoding. poi non bisogna di base64

    Ciao,
    Dennis
    Nuovo Blog di Programmazione! (Lo ha i tutti tipi! PHP e C/C++)
    Per piacere lo supporti!

  3. #3
    Ciao Dennis, intanto ti ringranzio.
    Purtroppo ho cambiato da phpmyadmin la codifica/collation a utf8_general a tutte le tabelle del db ma purtroppo il risultato è sempre lo stesso.

    Non so come far visualizzare correttamente gli accenti.

    con base64e encode/decode non ho provato perchè finora l'inserimento del testo l'ho fatto attraverso phpmyadmin.

    Andrea

  4. #4
    hai reinserito i caratteri dopo lo cambiare?
    Nuovo Blog di Programmazione! (Lo ha i tutti tipi! PHP e C/C++)
    Per piacere lo supporti!

  5. #5
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    quando hai inserito i valori nel database hai usato la funzione htmlentities con il parametro ENT_NOQUOTES
    es $valore = $_POST['news_titolo'];
    $valore = htmlentities($valore, ENT_NOQUOTES);
    e nell'estrazione hai usato la html_entity_decode ? .... e sempre con ENT_NOQUOTES

    prova

  6. #6
    Ciao Pragma, ho provato come dici cioè facendo:

    In scrittura:

    Codice PHP:
    .......................
    $titolo=htmlentities($titoloENT_NOQUOTES);
    $testo=htmlentities($testoENT_NOQUOTES);

    $query "INSERT INTO news (news_titolo, news_txt, news_arg, news_pp, news_data) VALUES ('$titolo','$testo', '$arg','$pp', '$data')";
    ....................... 
    E il lettura:

    Codice PHP:

    .............

    $txthtmlentities ($txt);
    $txt html_entity_decode($txt);
    $titolohtmlentities ($titolo);
    $titolo html_entity_decode($titolo);

    echo 
    "$titolo 
     
    $txt";

    .............. 
    Purtroppo però il risultato non cambia....
    Ancora la mia domanda è irrisolta.... ALtri suggerimenti?

    Grazie....

  7. #7
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    Allora ho avuto una svista e ti ho suggerito il parametro sbagliato.
    Quello esatto è ENT_QUOTES.

    Per l'inserimento devi usare
    $titolo= htmlentities ($titolo, ENT_QUOTES);

    nell'estrarre estrai $titolo
    e poi lo ridefinisci
    $titolo = html_entity_decode($titolo, ENT_QUOTES);

    -------------------------------
    Non ho capito cosa intendi dire con
    codice:
    E il lettura:
    codice PHP:
    $txt= htmlentities ($txt);
    $txt = html_entity_decode($txt);
    $titolo= htmlentities ($titolo);
    $titolo = html_entity_decode($titolo);
    per leggere (o estrarre) solo
    echo html_entity_decode($titolo, ENT_QUOTES);
    echo html_entity_decode($text, ENT_QUOTES);

    ciao

  8. #8
    Grazie Pragma, adesso funziona. Avevo pensato anche io di cambiare il parametro ENT_NOQUOTES. Grazie ancora.

    Poteta mettere come risolta la discussione!

    Andrea

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.