Visualizzazione risultati 1 fino 7 di 7

Discussione: problema inserimento dati in textarea

  1. #1
    Guest

    Predefinito problema inserimento dati in textarea

    Salve a tutti.
    Ho creato una pagina web con un elemento <textarea> che invia il contenuto in un database phpmyadmin. L'attributo presente nella tabella del database è di tipo "TEXT".
    Il problema si presenta quando nella <textarea> vengono digitati più di 500 caratteri. In tal caso, il messaggio non viene inserito nel database e di conseguenza non viene visualizzato nella pagina contenente i messaggi.
    Se i messaggi inseriti sono più brevi tutto funziona senza problemi.
    Ho provato ad inserire il messaggio direttamente all'interno del database, tramite l'applicazione phpmyadmin. In questo caso il messaggio viene inserito normalmente.
    Premetto di non aver apportato alcun limite di caratteri nella <textarea>.
    Qualcuno mi potrebbe dare qualche dritta?

    Grazie infinite...

  2. #2
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Strano, in sql in tipo TEXT, supporta un numero elevato di caratteri ( ovviamente non 500 ).

    Cmq, non credo che ti possano aiutare se non posti il codice, potresti postarlo?

    P.S.: Premetto di non sapere se si tratta di un'errore di codice, ma se ti può essere utile io in questi casi utilizzo il tipo LONGTEXT, e non TEXT, ma credo sia uguale.

    Sevenjeak
    Software developer and much more

  3. #3
    Guest

    Predefinito

    Ho provato ad usare anche il "LONGTEXT", ma non è cambiato nulla.

    Questo è il codice:

    Codice HTML:
    <style>   
        textarea{
            font-family:verdana, arial;
            font-size:13px;
            width:300px;
            height: 150px;
        }   
        #preview{
            font-family:verdana, arial;
            font-size:10px;
            width:30px;
            height: 20px;
            border:1px solid #000000;
            background-color:#cccccc;
            color:#8F3E3E;
            overflow:auto;
        }
    </style>
    <script>
         function showpreview(limite){   
            contenuto_testo=limite-document.getElementById("testo").value.length;   
            if (contenuto_testo<0){
                document.getElementById("testo").innerHTML=document.getElementById("testo").value.substring(0,limite-1);
                document.getElementById("preview").innerHTML=limite-document.getElementById("testo").value.length;
            } else {
                document.getElementById("preview").innerHTML=contenuto_testo;
            }   
        }
    </script>
    <center>
    <form method="post" action="write_message.php?sec=posted">
    <br><br>
    <font size="2" face="verdana"> Write here your message: </font>
    <br>
    <textarea id="testo" onkeyup="showpreview(1500)" name="messaggio"></textarea>
    <br/>Remaining characters:<br/><div id="preview"></div>
    <br><br>
    <input type="submit" value="submit"> &nbsp; &nbsp;
    <input type="reset" value="reset">
    <br><br>
    Ultima modifica di alemoppo : 03-12-2011 alle ore 13.54.36 Motivo: +tag [html]

  4. #4
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Intanto è errata la sintassi che hai postato in queste tre righe:
    Codice:
    document.getElementById("testo").innerHTML=documen t.getElementById("testo").value.substring(0,limite-1);
    document.getElementById("preview").innerHTML=limit e-document.getElementById("testo").value.length;
    } else {
    document.getElementById("preview").innerHTML=conte nuto_testo;
    Infatti ci sono 3 volte degli spazi che non dovrebbero esserci.
    Codice:
    document.getElementById("testo").innerHTML=document.getElementById("testo").value.substring(0,limite-1);
    document.getElementById("preview").innerHTML=limite-document.getElementById("testo").value.length;
    } else {
    document.getElementById("preview").innerHTML=contenuto_testo;
    Potresti postare il codice della pagina che elabora i dati del form?
    Ciao!
    Ultima modifica di radiodelmomento : 03-12-2011 alle ore 13.57.56

  5. #5
    Guest

    Predefinito

    Certo.
    Codice PHP:
    $utente=$_SESSION['user'];
    $messaggio=$_POST['messaggio'];
    $new_message="INSERT INTO messaggi VALUES ('','$utente','$messaggio','$now')";
    $new_message=mysql_query($new_message);
    Questa è la parte in cui inserisce il messaggio nel database.
    Ultima modifica di alemoppo : 03-12-2011 alle ore 15.35.11 Motivo: +tag [php]

  6. #6
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Nella textarea sostituisci l'attributo name con "testo" e nella pagina che elabora i dati dai questo valore a $messaggio:
    Codice PHP:
    $messaggio=$_POST['testo'];
    Potresti farci avere tutto il contenuto della pagina (ovviamente senza i dati personali o del tuo account!)?
    Inoltre ti consiglio vivamente l'uso di htmlspecialchars() e addslashes().
    Ciao!

  7. #7
    Guest

    Predefinito

    Vado un attimo OT per correggere una precisazione di Seven:
    Citazione Originalmente inviato da sevenjeak Visualizza messaggio
    Strano, in sql in tipo TEXT, supporta un numero elevato di caratteri ( ovviamente non 500 ). [...]
    Un campo di tipo TEXT supporta fino a 64Kb (circa 64000 caratteri, esclusi quelli "speciali");
    Uno LONGTEXT invece ne supporta sino a 4GB circa (4 miliardi, come sopra).

    Quindi potrai dedurre che 500 sono supportati alle grande, anche se fossero tutti caratteri multibyte!

    Quella che più si avvicina ai 500 caratteri è VARCHAR, che ne supporta circa la metà, cioè 255.


Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •