Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Recupero testo della textarea

    Ciao a questo indirizzo http://www.a101.it/form.htm
    ho creato un form elementare che ancora deve essere sistemato ( per esempio il campo teelefono e file ).
    Vorrei capire pero' come fare in modo che nella finestra che appare dopo l'invio dei dati , le parole che si scrivono nella textarea mi appaiono correttamente formattate e non tutte in orizzontale come appare.
    Provate nella textarea a scrivere molto testo e vedrete .
    Ringrazio in anticipo tutti quelli che vorranno chiarirmi questa questione .
    Grazie
    A

  2. #2
    Se hai usato PHP per scrivere la pagina che riceve i dati, devi usare la funzione nl2br() per trasformare i ritorni a capo inseriti nel testo della textarea in tag
    . I ritorni a capo inseriti con Invio non vengono interpretati dal browser ma servono solo per far andare a capo il codice (X)HTML generato.

  3. #3

    Grazie ........pero'......

    Molte grazie per avermi risposto seed_squall_it .........l'unico problema è che io sono un principiante ed applicare quella funzione........ehm........non so bene come.....dove.......


    Se magari hai un filo di pazienza ancora mi potresti indicare come fare ?

    Grazie comunque

    Atary_babe :master:

  4. #4
    Basta che quando stampi la stringa ricevuta dall'area di testo, passi tale stringa alla funzione nl2br() come argomento:

    codice:
    /* Recupera il contenuto della textarea eliminando i backslash eventualmente aggiunti in automatico da PHP per gestire apici e backslash e gli spazi che possono essere presenti prima e dopo il testo. */
    
    $messaggio = trim(stripslashes($_POST['campotesto']));
    
    /* Stampa nella pagina il contenuto della textarea recuperato prima mantenendo i ritorni a capo. */
    
    echo nl2br($messaggio);
    nl2br() in pratica converte i caratteri di ritorno a capo (\r e \n, corrispondenti alla pressione di INVIO) in tag
    (occhio che se usi una versione di PHP inferiore alla 4.0.5, il tag sarà
    , mentre con versioni più recenti sarà
    , ossia conforme a XHTML).

    Cmq il codice della pagina contiene degli errori...per es., l'attributo for del tag label associato alla textarea ha come valore una stringa diversa dall'id della textarea a cui si riferisce. Questo non pregiudica nulla nel funzionamento dello script, ma rende poco accessibile il form.

  5. #5

    ci arrivero' mai ?..

    Scusa l' inettitudine......ma io dopo fatiche per me veramente grandi ho messo in piedi questo

    script ( per te certo banale ) per recuperare i dati dal mio form .

    E' che non so' come inserire quello che mi hai scritto , magari perche' il mio script fa schifo .

    Comunque eccolo .

    <?
    $nome=$_POST['nome'];
    $cognome=$_POST['cognome'];
    $email=$_POST['email'];
    $telefono=$_POST['telefono'];
    $partenza=$_POST['partenza'];
    $richiesta=$_POST['richiesta'];
    $messaggio=$_POST['campotesto'];

    #eleiminazione degli spazi

    $nome=trim($nome);
    $cognome=trim($cognome);
    $email=trim($email);
    $telefono=trim($telefono);
    $partenza=trim($partenza);
    $richiesta=trim($richiesta);
    $messaggio=trim($messaggio);

    #controllo la lunghezza dei campi nome , cognome etc..

    $lungh_nome=strlen($nome);
    $lungh_cognome=strlen($cognome);
    $lungh_partenza=strlen($partenza);
    $lungh_richiesta=strlen($richiesta);
    $lungh_messaggio=strlen($messaggio);

    #controllo la mail, imposto una variabile che poi confronto con email
    $pattern="^[^@ ]+@[^@ ]+\.[^@ \.]+$";

    #controllo che i campi siano superiori a 3 caratteri e non vuoti
    if (($nome == "") || ($cognome == "")|| ($email == "")|| ($telefono == "")||($partenza== "")|| ($richiesta== ""))
    {
    echo "<div id='msg' class='msgSENT'>Compila tutti i campi! <p id='close'>[click to close]</p></div>";}

    else if (($lungh_nome <= 3)or($lungh_cognome <= 3) or ($lungh_partenza <= 3) or ($lungh_richiesta <=3)or($lungh_messaggio <= 3) )
    {
    echo "<div id='msg' class='msgKO'>I campi devono contenere almeno 3 caratteri! <p id='close'>
    [click to close]</p></div>";
    }
    else if(!ereg($pattern,$email))
    {
    echo "<div id='msg' class='msgKO'>\"$email\"non è una email valida! <p id='close'>
    [click to close]</p></div>";

    }
    else{
    echo "<div id='msg' class='msgKO'>Il tuo nome è [b]$nome
    Il tuo cognome è $cognome

    Il tuo telefono è $telefono
    La tua email è $email
    lingua di partenza $partenza
    lingua richiesta$richiesta
    Il tuo commento è $messaggio
    <p id='close'>
    [click to close]</p></div>";
    }
    ?>

    Sto' provando a capire come fare ma combino solo disastri

  6. #6

    dimenticavo.!!!!!

    questo codice

    <div id='msg' class='msgKO'>


    si riferisce al div che nel css formatta la finestra che appare quando recuperi i dati

  7. #7
    In rosso le correzioni e in blu i commenti.

    codice:
    /* Indica sempre <?php e non semplicemente <?, perché altrimenti lo script non è portabile se il file php.ini è configurato per non accettare l'abbreviazione del "tag" di apertura PHP. */
    <?php
    
    /* Tutta questa parte e quella di eliminazione degli spazi puoi raggrupparle in una unica. Inoltre usa anche stripslashes() perché se la direttiva magic_quotes_gpc nel file php.ini è abilitata, PHP ti aggiunge un backslash davanti ad apici singoli e doppi, oltre che ai backslash stessi. Questo perché quei caratteri sono particolari per PHP e quindi te li escapizza. Ti commento questo codice e subito dopo ti presento la versione "compatta". */
    
    /* --- Inizio parte commentata ---
    
    $nome=$_POST['nome'];
    $cognome=$_POST['cognome'];
    $email=$_POST['email'];
    $telefono=$_POST['telefono'];
    $partenza=$_POST['partenza'];
    $richiesta=$_POST['richiesta'];
    $messaggio=$_POST['campotesto'];
    
    #eliminazione degli spazi 
    
    $nome=trim($nome);
    $cognome=trim($cognome);
    $email=trim($email);
    $telefono=trim($telefono);
    $partenza=trim($partenza);
    $richiesta=trim($richiesta);
    $messaggio=trim($messaggio);
    
    --- Fine parte commentata --- */
    
    $nome=trim(stripslashes($_POST['nome']));
    $cognome=trim(stripslashes($_POST['cognome']));
    $email=trim(stripslashes($_POST['email']));
    $telefono=trim(stripslashes($_POST['telefono']));
    $partenza=trim(stripslashes($_POST['partenza']));
    $richiesta=trim(stripslashes($_POST['richiesta']));
    $messaggio=trim(stripslashes($_POST['campotesto']));
    
    #controllo la lunghezza dei campi nome , cognome etc..
    
    $lungh_nome=strlen($nome);
    $lungh_cognome=strlen($cognome);
    $lungh_partenza=strlen($partenza);
    $lungh_richiesta=strlen($richiesta);
    $lungh_messaggio=strlen($messaggio);
    
    #controllo la mail, imposto una variabile che poi confronto con email
    
    /* Questa espressione regolare non è il massimo per controllare il formato di un indirizzo mail. */
    
    /* $pattern="^[^@ ]+@[^@ ]+\.[^@ \.]+$"; */
    
    /* Questa è più completa. */
    
    $pattern = "/^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][a-z0-9-]+\.)+([a-z]{2,})$/i";
    
    #controllo che i campi siano superiori a 3 caratteri e non vuoti
    if (($nome == "") || ($cognome == "")|| ($email == "")|| ($telefono == "")||($partenza== "")|| ($richiesta== "")) {
    
    echo '<div id="msg" class="msgSENT">Compila tutti i campi! <p id="close">[click to close]</p></div>';
    }
    
    else if (($lungh_nome <= 3) or ($lungh_cognome <= 3) or ($lungh_partenza <= 3) or ($lungh_richiesta <=3)or($lungh_messaggio <= 3) )
    {
    echo '<div id="msg" class="msgKO">I campi devono contenere almeno 3 caratteri! <p id="close">[click to close]</p></div>';
    }
    
    /* Qui ti conviene usare preg_match() piuttosto che ereg(): sia perché è leggermente meno dispendioso di risorse, sia perché è più portabile supportando la sintassi PERL delle espressioni regolari e anche perché ti permette di usare il modificatore "i" nell'espressione (per non distinguere tra maiuscole e minuscole), mentre invece con ereg() non puoi, a meno che non usi la corrispondente funzione eregi(). Tra l'altro, l'espressione regolare che ti ho scritto prima è fatta apposta per preg_match() (perché ha i delimitatori tipici di PERL, ovvero "/"). Inoltre, quando stampi delle stringhe con echo, usa gli apici singoli per racchiuderle e concatena le variabili usando il punto (vedi le istruzioni echo qui sotto). Questo perché PHP risparmia risorse (gli apici singoli sono diversi dai doppi: questi ultimi costringono PHP a un parsing di tutta la stringa alla ricerca di variabili da interpretare). Inoltre, in quel modo puoi usare gli apici doppi per racchiudere i valori degli attributi HTML dei tag. */
    /* else if(!ereg($pattern,$email)) */
    
    else if (!preg_match($pattern,$email))
    
    {
    echo '<div id="msg" class="msgKO">"'.$email.'"non è una email valida! <p id="close">[click to close]</p></div>';
    
    }
    else{
    
    /* Arriviamo alla stampa dei valori. Come vedi $messaggio viene stampato passandolo alla funzione nl2br(), che quindi manterrà i ritorni a capo trasformandoli in tag 
    . */
    
    echo '<div id="msg" class="msgKO">Il tuo nome è [b]'.$nome.'
    Il tuo cognome è '.$cognome.'
    
    Il tuo telefono è '.$telefono.'
    La tua email è '.$email.'
    lingua di partenza '.$partenza.'
    lingua richiesta'.$richiesta.'
    Il tuo commento è '.nl2br($messaggio).'
     <p id="close">[click to close]</p></div>';
    }
    ?>
    Spero di non aver commesso errori, ma l'ho corretto in fretta...al limite fammi sapere.

  8. #8

    Mi hai abbandonato ?

    Spero tu non mi abbia abbandonato , ce la sto' mettendo tutta !

  9. #9

    NON SO' COME RINGRAZIARTI

    SINCERAMENTE GRAZIE , NON SO' DAVVERO COME RINGRAZIARTI DELL'ALTRUISMO , DELLA COMPETENZA E DELLA TUA PAZIENZA .

    SEI IL MIO GURU INFORMATICO

    SPERO TU SIA , CREDO TU SIA UNA PERSONA BELLA .

    SE HAI UN SITO , BLOG ETC.... MI PIACEREBBE SAPERLO .

    GRAZIE ANCORA

    Atary_babe

  10. #10

    non funziona..

    Caspita non funziona ..
    Se provo a scrivere molto ( premi aaaaaaaaaaaaaaa...........un bel po' ) poi nella finestra color rosa della pagina che elabora il form il testo fuoriesce in orizzontale dalla finestra .

    Eppure io ho scritto

    '.nl2br($messaggio).' nel div che formatta la finestra .

    Comunque ti rinnovo i ringraziamenti per le tue dritte .

    Ciao

    Atary_babe :master:

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.