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

    Modulo Texarea e inserimento dati nel DB

    Ciao a tutti,
    ho realizzato un semplicissimo script che mi permette di tenere aggiornato un semplice box delle news che contiene solo testo.

    Lo script consiste in un form HTML in cui vi è una texarea nella quale è possibile inserire il testo delle news. Questo testo viene memorizzato in un database mysql e poi richiamato nel box delle news e quindi stampato a video. Una cosa molto semplice

    Tutto funziona correttamente se non fosse per due piccoli problemi .....o meglio die piccole imperfezioni che mi piacerebbe risolvere.

    1) Il testo inserito viene visualizzato nel box delle news senza nessuna formattazione, ovvero se inserisco il testo seguente nel form:
    codice:
    Questo è un esempio del testo delle news.
    Ora, dopo il punto, vado a capo (nuova riga).
    La riga precedente termina con un punto e quindi vado a capo.
    Ora, dopo il punto, vado a capo (nuova riga).
    Lo script inserisce correttamente il testo nel database, ma poi quando vado a visualizzarlo nel box delle news, il testo non conserva la formattazione e viene visualizzato in questo modo:

    codice:
    Questo è un esempio del testo delle news.Ora, dopo il punto, vado a capo (nuova riga).La riga precedente termina con un punto e quindi vado a capo.Ora, dopo il punto, vado a capo (nuova riga).
    Come posso fare per conservare la formattazione? Mi accontenterei che il testo andasse a capo dopo il punto...

    2) Quando inserisco un testo in cui vi è " ' (APOSTROFO)", quando vado a visualizzare tutto nel box delle news mi compare il simbolo "\"...evidentemente messo dal php per non generare un errore.

    Posso evitare ciò?

    Grazie e ciao

  2. #2
    per il primo problema ti consiglio di usare la funzione NL2BR di php che converte gli "a capo" in tag
    ti html. Per il secondo problema, penso ti sia utile la funzione STRIPSLASHES. Se cerchi ognuna di esse sul manuale online di php vedrai come possono essere utilizzate.
    --> MANUALE <--
    "Una volta che si saranno esaurite senza successo tutte le possibilita', ci sara' una soluzione, semplice e ovvia, che saltera' immediatamente all'occhio di chiunque altro."

    Guardate: Il Miracolo delle Noci!!

  3. #3
    Ciao,
    per quanto riguarda il primo problema, nelle textarea la nuova riga viene definita dal carattere '\n', quindi è questo ad essere memorizzato nel database. Questo carattere non viene assolutamente riconosciuto da HTML. io ho risolto il problema in questo modo:

    Codice PHP:
    $text str_replace("\n","
    "
    ,$row[text]); 
    Dove $row[text] è la variabile che contiene il testo ottenuto dal database.
    A questo punto se printi a schermo il contenuto di $text nel box delle news, vedrai che il testo va a capo esattamente come hai deciso tu.

    Per il secondo problema, io ho risolto in questo modo: sia prima di salvare il testo nel database, sia quando lo mostro nella pagina lo faccio modificare in questo modo:

    Codice PHP:
    $text=htmlspecialchars(stripslashes($text)); 
    htmlspecialchars converte i caratteri speciali di html (come <, ", >, etc.) nel loro codice (es < diventa &lt mentre stripslashes rimuove gli slash di protezione.
    Guitar of Odio Su Tela

  4. #4
    Originariamente inviato da TaKPe
    Ciao,
    per quanto riguarda il primo problema, nelle textarea la nuova riga viene definita dal carattere '\n', quindi è questo ad essere memorizzato nel database. Questo carattere non viene assolutamente riconosciuto da HTML. io ho risolto il problema in questo modo:

    Codice PHP:
    $text str_replace("\n","
    "
    ,$row[text]); 
    Dove $row[text] è la variabile che contiene il testo ottenuto dal database.
    A questo punto se printi a schermo il contenuto di $text nel box delle news, vedrai che il testo va a capo esattamente come hai deciso tu.

    Per il secondo problema, io ho risolto in questo modo: sia prima di salvare il testo nel database, sia quando lo mostro nella pagina lo faccio modificare in questo modo:

    Codice PHP:
    $text=htmlspecialchars(stripslashes($text)); 
    htmlspecialchars converte i caratteri speciali di html (come <, ", >, etc.) nel loro codice (es < diventa &lt mentre stripslashes rimuove gli slash di protezione.
    Grazie per il consiglio!
    Sto facendo delle prove ma ho alcune domande in merito.
    Allora per quanto riguarda:
    Codice PHP:
    $text=htmlspecialchars(stripslashes($text)); 
    funziona bene solo se è impostata per un solo campo...ad esempio se ho tre campi texarea
    Codice PHP:
    $text=htmlspecialchars(stripslashes($text));
    $text2=htmlspecialchars(stripslashes($text2));
    $text3=htmlspecialchars(stripslashes($text3)); 
    e per ognuno di essi vorrei convertire i caratteri speciali html in semplice testo e poi memorizzarli in tre distinti records....in questo caso non va! Ovvero lo script non riesce ad inserire i dati nel DB. Sbaglio io? Forse ignoro qualcosa!!!

    Per quanto riguarda invece:
    Codice PHP:
    $text str_replace("\n","
    "
    ,$row[text]); 
    non ho capito bene come funziona.....cioè devo utilizzarla proima di memorizzare i dati nel DB? Oppure solo quando li estraggo per stamparli a video?

  5. #5
    Ciao, per quanto riguarda il primo problema mi sembra davvero strano!
    io uso quelle due funzioni su tutti i campi e nn mi danno alcun problema...
    Prova a postarmi il codice php che usi per salvare i dati nel db (e magari anche quello del form va la')

    Per la secondo domanda... beh a rigor di logica è la stessa cosa, nel senso che puoi
    convertire gli "a capo" sia prima che dopo l'inserimento nel database,
    Il problema è che se li converti prima, nel caso in cui tu voglia per esempio creare un form per la modifica e carichi il testo nelle textarea, non avrai gli "a capo" ma verranno visualizzati i tag
    .
    Ti consiglio quindi di salvare il testo nel database senza sostituire gli "a capo", ed usare la funzione che ti ho postato prima della visualizzazione a schermo.
    Guitar of Odio Su Tela

  6. #6
    Grazie!!!!
    Ecco il codice

    Codice PHP:
    <?php

    // Recupero i dati dal Form

    $localita                =    htmlspecialchars(stripslashes($_POST['localita']));
    $prov                    =    $_POST['prov'];
    $nome_manifestazione    =    htmlspecialchars(stripslashes($_POST['nome_manifestazione']));
    $tipo_manifestazione    =    htmlspecialchars(stripslashes($_POST['tipo_manifestazione']));


    // Mi collego la Database        
            
    include("********************");  

        ...........    ..................................
        
    //Inserisco i dati nel Database

    $query "INSERT INTO nome_database ( localita, prov, nome_manifestazione, tipo_manifestazione) VALUES ( '$localita', '$prov', '$nome_manifestazione', '$tipo_manifestazione')";        

    // Controllo che i dati siano stati inseriti
                    
    if (mysql_query($query$db))
                    {    
                    
                    
    // i dati sono stati inseriti
                    
    echo"Inserimento riuscito";
                    }else{
                    
                    
    // Si è verificato un errore durante l'inserimento
                    
    echo"ERRORE";
                    
                    }

    ?>
    Lo script mi da errore, mentre se utilizzo una sola volta (quindi per una sola variabile) la funzione htmlspecialchars tutto funziona correttamente.

    Eccoti il codice HTML del form.

    codice:
    <form action="script.php" method="post" name="inserisci" id="inserisci">
                  
    <input name="localita" type="text" id="localita">
    <select name="prov">
                        <option>AG </option>
                        ................................
                      </select></td>
                   <input name="nome_manifestazione" type="text" id="nome_manifestazione">
    
                  <textarea name="tipo_manifestazione" cols="30" rows="8" id="tipo_manifestazione"></textarea>
                  
    
                  
                  <input type="submit" name="Submit" value="Pubblica">
                  </form>
    Grazie per la tua gentilezza!

  7. #7
    Ho fatto un paio di prove sul mio codice e hai ragione!
    Cmq sia... avevo sbagliato a riferirti una cosa e chiedo perdono!

    Controllando quello che ho fatto io mi sono reso conto che i comandi striplashes e htmlspecialchars non li uso prima di inserire i dati nel databse! ma solo quado devo
    mostrarli a schermo!
    Prova e vedi se anche a te così funziona!
    Guitar of Odio Su Tela

  8. #8
    Grazie 1000!
    Adesso si funziona tutto perfettamente.
    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.