Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24

Discussione: invio variabili

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    34

    invio variabili

    Ciao a tutti è da parecchi che non scrivo sul forum, ho una perplessità:
    ho una pagina php(form) e uno script che esegue il check delle variabili della form e le controlla,
    ho catturato le variabili della form e le controlollo solo che vorrei che nel caso il ceck sia FALSE ritrasmetta alla pagina form le variabili completate dall utente per evitare che in caso di dimenticanza di un campo obigatorio sia costretto a ricompilare tutta la form:
    in Javascript è abbastanza semplice ma in php avrei bisogno di due dritte:

    se il check è TRUE genera delle variabili locali che vengono poi inserite in un array globale,se faccio una cosa di questo genere è corretta?
    if($var1="") ||($var2="") || ($var3=""){
    header("location: form.php"); /*locale*/
    $post_var1 = $_POST['$var1'];
    $post_var2 = $_POST['$var2'];
    $post_var3 = $_POST['$var3'];
    }
    e poi nella pagina php prendo le variabili con $_GET

    e corretto o sto dicendo fesserie?
    grazie a tutti per le dritte

  2. #2
    Codice PHP:
    <input ... value="<?php if(isset($_GET['nome_campo']) && trim($_GET['nome_campo']) != '') ? echo $_GET['nome_campo'?>" name="nome_campo">
    trim elimina gli spazi vuoti all'inizio ed alla fine della stringa;
    isset controlla se la variabile esiste
    Se la variabile soddisfa entrambe le condizioni dell'if (cioè esiste e non è vuota) allora viene stampata.
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    34
    Ti ringrazio della disponibilità non conoscievo isset, approfitto e ti faccio un altra domanda, il redirect automatico con header location mi dà alcuni problemi in locale nel senso che se passo la variabile url con indirizzo del localhost la vede come un commento probabilmente a causa dei backslash, hai idee su come risolvere?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    34
    ma quando mi scrivi nome_campo intendi la variabile php non il nome html vero?

  5. #5
    se passo la variabile url con indirizzo del localhost la vede come un commento probabilmente a causa dei backslash

    Come la passi? hai tipo pagina.php?url=http://localhost/pagina ?

    ma quando mi scrivi nome_campo intendi la variabile php non il nome html vero?
    Il nome del campo diventa la chiave dell'array GET o POST

    Se il tuo campo si chiama "cognome" per recuperarlo da PHP usi $_POST['cognome'] e nell'html avrai
    <input ... name="cognome" />

    Ho anche rivisto il codice che hai postato.
    codice:
    if($var1="") ||($var2="") || ($var3=""){
    header("location: form.php"); /*locale*/
    $post_var1 = $_POST['$var1'];
    $post_var2 = $_POST['$var2'];
    $post_var3 = $_POST['$var3'];
    }
    $var cos'è? Da dove esce?
    Viene valorizzata in precedenza? Perchè posi la usi come chiave dell'array POST per recuperare il valore del campo corrispondente.
    C'è altro codice prima?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    34
    il codice che ho postato era solo un esempio $var1 ecc sono le variabili globali che contengoni i dati del form chiedevo solo se dovevo mettere il valore html oppure la variabile php che memorizza il valore,c'è abb codice prima e dopo solo che volevo evitare di postare tutto il check/invio/redirect...facciamo che lo posto così,visto che non funge approfitto della tua disponibilità,il primo if ha dei problemi non mi legge ||.
    <?php
    //Script per validare la form di registrazione
    //variabili dei campi form
    $name=$_POST['nome'];
    $cognome=$_POST['cognome'];
    $jobA=$_POST['professioneA'];
    $citta=$_POST['citta'];/*required*/
    $citta2=$_POST['provincia'];/*required*/
    $attivitaA=$_POST['attivitaA'];/*required*/
    $attivitaB=$_POST['attivita'];/*required*/
    $email=$_POST['email'];/*required*/
    $privacy=$_POST['priv'];/*required*/
    //array che contiene le variabili
    $arrayDati = array();
    /*
    echo $name, "
    ";
    echo $cognome, "
    ";
    echo $jobA, "
    ";
    echo $citta, "
    ";
    echo $citta2, "
    ";
    echo $attivitaA, "
    ";
    echo $attivitaB, "
    ";
    echo $email, "
    ";
    echo $privacy, "
    ";
    */
    QUI L'ERRORE DEL REDIRECT ME LO LEGGE COME UN COMMENTO
    /**/
    $url = http://localhost/Mysite/form.php;
    function data(){
    QUESTO E' IF CHE NN FUNGE
    if(($citta == "") || ($citta2 == "") || ($attivitaA == "") || ($attivitaB == "") || ($privacy == "") || (($email== "") || (!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $email)))){
    header("location: $url"); /*locale*/
    COME PASSO LE VARIABILI ALLA PAGINA HTML?
    $post_nome = $name;
    $post_cognome =$cognome;
    $post_jobA = $jobA;
    $post_citta=$citta;
    $post_citta2=$citta2;
    $post_attivitaA=$attivitaA;
    $post_attivitaB=$attivitaB;
    $post_email=$email;
    $post_privacy=$privacy;
    }
    else{
    $arrayDati[0]=$name;
    $arrayDati[1]=$cognome;
    $arrayDati[2]=$jobA;
    $arrayDati[3]=$citta;
    $arrayDati[4]=$citta2;
    $arrayDati[5]=$attivitaA;
    $arrayDati[6]=$attivitaB;
    $arrayDati[7]=$email;
    $arrayDati[8]=$privacy;
    /*stampa var*/
    //echo $arrayDati;
    function invioMail(){
    /**/
    //destinatario
    $to = "#";
    //subject
    $subject = "consulenza da sito";
    //corpo del mess
    $message = "
    nome: new array[0]
    cognome: new array[1]
    job: new array[2]
    citta: new array[3]
    citta2: new array[4]
    attivita: new array[5]
    consulenza: new array[6]
    email: new array[7]
    ";
    //passo la var mail come mittente
    $headers = "From: $email" . "\r\n" .
    "Reply-To: $email" . "\r\n" .
    "X-Mailer: PHP/" . phpversion();
    mail($to, $subject, $message, $headers);
    }
    }
    }

    ?>

  7. #7
    Ok, perfetto, allora iniziamo.
    Ti dico subito che è un bel po' incasinato come codice!

    Stavo iniziando a metterci mano ma, secondo me dovresti riscriverlo.
    Ora inizio a darti qualche suggerimento, aggiustalo e ripostalo: se lo lasci così non te ne esci mai!

    1) Quando posti il codice racchiudilo tra tag (php) codice (/php), ma anzichè usare le tonde usa le quadre (io ho usato le tonde perchè altrimenti il forum le parsa e crea il box del codice)

    2) Prendi un foglio di carta e inizia a scrivere quello che vuoi fare e i vari passaggi necessari per ottenerlo
    Es:
    a) Il form invia i dati
    b) controllo che i dati siano validi
    c) Se i dati sono validi invio il form altrimenti lo mostro di nuovo con i campi precompilati con i valori immessi dall'utente

    3) Inizia a scrivere il codice del punto a)
    CONSIGLIO: usa un array, non usare variabili separate. Le riesci a gestire meglio. Quando valorizzi la variabile dell'array fai il controllo che ti ho postato prima. Più semplice a farsi che a dirsi

    Codice PHP:
    $datiForm['name'] = if (isset($_POST['nome']) && trim($_POST['nome']) != '') ? $_POST['nome'] : '' ;
    // Questo lo fai per ogni valore passato dal form 
    CONSIGLIO: usa nomi uguali: se nel form il campo si chiama "nome" (e quindi anche in POST la chiave è "nome") allora nell'array che crei usa "nome" non "nAme" altrimenti ti incasini. Datti delle regole di scrittura: il codice è più ordinato, leggibile e lo puoi correggere più facilmente.

    Per vedere se i dati sono passati correttamente fai
    Codice PHP:
    print_r($_POST) ;
    echo 
    '

    ;
    print_r($datForm) ; 
    Ti vengono stampati i valori dell'array.

    PS
    L'errore del redirect ti viene dato perchè non hai racchiuso l'url tra apici

    $url = "http://indirizzo.tld";

    Inizia a correggere queste cose, poi passiamo al controllo della funzione, che pure va riscritta.
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    34
    ok ci stò lavorando mi dici di creare un array in modo da gestire meglio il tutto, ho provato a fare così nel punto 1:
    Codice PHP:
    //Script per validare la form di registrazione
    //variabili dei campi form
    //creo array
    //linea 5
        
    $datiForm = new array( );
        
    $datiForm['nome'] = if (isset($_POST['nome']) && trim($_POST['nome']) != '') ? $_POST['nome'] : '' ;
        
    $datiForm['cognome'] = if (isset($_POST['cognome']) && trim($_POST['cognome']) != '') ? $_POST['cognome'] : '' ;
        
    $datiForm['professioneA'] = if (isset($_POST['professioneA']) && trim($_POST['professioneA']) != '') ? $_POST['professioneA'] : '' ;
        
    $datiForm['citta'] = if (isset($_POST['citta']) && trim($_POST['citta']) != '') ? $_POST['citta'] : '' ;
        
    $datiForm['provincia'] = if (isset($_POST['provincia']) && trim($_POST['provincia']) != '') ? $_POST['provincia'] : '' ;
        
    $datiForm['attivitaA'] = if (isset($_POST['attivitaA']) && trim($_POST['attivitaA']) != '') ? $_POST['attivitaA'] : '' ;
        
    $datiForm['attivitaB'] = if (isset($_POST['attivitaB']) && trim($_POST['attivitaB']) != '') ? $_POST['attivitaB'] : '' ;
        
    $datiForm['email'] = if (isset($_POST['email']) && trim($_POST['email']) != '') ? $_POST['email'] : '' ;
        
    $datiForm['priv'] = if (isset($_POST['priv']) && trim($_POST['priv']) != '') ? $_POST['priv'] : '' ;
        
    print_r($_POST) ;
        echo 
    '

    ;
        
    print_r($datiForm) ; 
    mi restituisce l'errore
    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `'$'' in C:\wamp\www\Mysite\Scripts\check.php on line 5
    che sbaglio?

  9. #9
    Per creare un array non devi usare new array() ma semplicemente array(). E comunque basta che inizi a valorizzarlo e si crea da solo, quindi puoi anche togliere $datiForm = new array( ); e iniziare direttamente a popolarlo.
    Quello che hai fatto tu ($variabile = array() ) è indicato quando lo crei e lo popoli in una volta.
    Vedi qui per capire meglio di che sto parlando

    http://php.html.it/guide/lezione/2651/gli-array/

    Do per scontato che funzioni e vado uno step avanti.
    Nell'if che non ti funziona controlli che la variabile sia valorizzata.
    Possiamo fare quel controllo creando una funzione apposita:

    Codice PHP:
    function varIsSet$var ) {
    // Qui metti il codice dell'if che ti
    // ho dato per valorizzare le variabili dell'array
    // ma sostituisci la valorizzazione con un "true"
    // se la variabile esiste e con un "false" se non esiste
    // Non te la scrivo così hai la possibilità di provare
    // e di capire il meccanismo. Alla fine devi restituire
    // il valore ottenuto (true/false) usando "return"

    Maggiori informazioni sulle funzioni le trovi qui: http://php.html.it/guide/lezione/266...ersonalizzate/

    Una volta che avrai creato la tua funzione per controllare se una variabile esiste e non è vuota puoi usarla anche all'inizio, quando valorizzi l'array $datiForm. In questo modo semplifichi il codice e lo rendi più leggibile. Otterrai qualcosa tipo:

    Codice PHP:
        $datiForm['nome'] = if ( varIsSet($_POST['nome']) ) ? $_POST['nome'] : '' ;
        
    $datiForm['cognome'] = if ( varIsSet($_POST['cognome']) ) ? $_POST['cognome'] : '' 
    NOTA: ho dato alla funzione il nome "varIsSet" ma tu ovviamente puoi darle il nome che preferisci!

    Fammi sapere!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    34
    ok ti ringrazio per le dritte mi guarderò un pò in giro su php.net (senza offesa per html.it) e ci lavoro stasera,buon week end.

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.