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

    stupidoForm e Sessioni...

    Uela'!
    Dopo svariati sbattimenti e taluni preziosi consigli, sono riuscito a far funzionare le sessioni in un banalisssimo script di prova (buttato giù a scopo puramente "autodidattico"):
    Codice PHP:
    <?php
    session_start
    (); //"Apro" la sessione...
    error_reporting(E_ALL); //Chiedo che siano attivati i "notice" su *tutti* gli errori (è già settata così anche nel "php.ini").

    //=== Inizializzo le due variabili in modo che anche se sono vuote non riceva "notice" ===//
    $invia = (isset($_POST['invia'])) ? ($_POST['invia']) : '' ;
    $insert = (isset($_POST['insert'])) ? ($_POST['insert']) : '' ;

    //====  PASSAGGIO N° [2]: Verifica dei dati inseriti ========//
    if ($invia) { 
        
    $_SESSION['nome']=ucwords($_POST['nome']);
        
    $_SESSION['cognome']=ucwords($_POST['cognome']);
          echo 
    "<html><head><title>[2] == Controlla i dati</title></head>
                <body>
                2).
    Ciao, "
    .$_SESSION['nome']." ".$_SESSION['cognome']."!

                <form action=\"
    $_SERVER[PHP_SELF]\" method=\"POST\">            
                <input type=\"reset\" value=\"Cambia i dati\" onclick=\"javascript:history.back()\">
                <input type=\"submit\" value=\"INSERISCI!\" name=\"insert\">
                </form>
                </body>
                </html>"
    ;
                }
                    
    //====  PASSAGGIO N° [3]: STAMPA dei dati inseriti ========//
    else if ($insert) {
              echo 
    "<html><head><title>[3] == Valori per \"".$_SESSION['nome']." ".$_SESSION['cognome']."\"</title></head>
                    <body>
                    3).

                    Ho inserito i dati \"[b]"
    .$_SESSION["nome"]." ".$_SESSION["cognome"]."[/b]\" nel DB!
                    </body>
                    </html>"
    ;
                    }
    else {
    //====  PASSAGGIO N° [1]: Inserimento dei dati  ========//
    echo "<html><head><title>[1] == Inserisci i dati</title></head>
            <body>
            1).
    <form action=\"
    $_SERVER[PHP_SELF]\" method=\"POST\">
            Nome: <input name=\"nome\" size=\"30\">

            Cognome: <input name=\"cognome\" size=\"30\">

            <input type=\"reset\" value=\"CiòripenZato...\">
            <input type=\"submit\" value=\"OK\" name=\"invia\">
        </form>
        </body>
        </html>"
    ;
        }
    ?>
    Mo'...
    Funzionare, funziona.

    Ma la domanda è:
    È corretto l'uso che ho fatto di $_SESSION, o c'è un modo un po' più elegante e soprattutto sintetico per non dover richiamare ogni volta quel "$_SESSION['nome']"?

    Poi:
    E se al posto dell'IF volessi usare uno SWITCH? Non ho idea di quale variabile dovrei "switchare" (ma soprattutto *come*), tra quelle già presenti, né come usarne una nuova.

    Grass... ;-)

    cià
    ale-niubbVersion
    If you can keep your head when all about you are losing theirs,
    it's just possible you haven't grasped the situation.

  2. #2
    L'uso di $_SESSION['value'] che hai fatto va benissimo.

    Se vuoi puoi sostituirlo con variabili a cui assegni il valore, cioè:
    Codice PHP:
    $name $_SESSION['nome'];
    $cognome $_SESSION['cognome']; 
    E poi usi sempre $name e $cognome al posto di $_SESSION['nome'] e $_SESSION['cognome'].

    L'uso di switch in questo caso non serve a niente.
    Switch è un costrutto che usi quando devi testare una variabile che può contenere a seconda dei casi valori diversi e per ognuno prevedi una soluzione e un trattamento che vuoi tu.

    Esempio:
    crei un form che permette di effettuare un'operazione su due numeri.
    Il form richiede numero1, numero2 e operatore (+,-,*,/).
    a questo punto crei uno switch che fa
    Codice PHP:
    switch(operatore) {
             case 
    '+':
                     
    $somma num1 num2;
                     break;
             case 
    '-':
                     
    $differenza num1 num2;
       ......
     ...... 

  3. #3
    Originariamente inviato da devil89
    L'uso di $_SESSION['value'] che hai fatto va benissimo.

    Se vuoi puoi sostituirlo con variabili a cui assegni il valore, cioè:
    Codice PHP:
    $name $_SESSION['nome'];
    $cognome $_SESSION['cognome']; 
    E poi usi sempre $name e $cognome al posto di $_SESSION['nome'] e $_SESSION['cognome'].
    Il che era esattamente quello che avevo in mente e che ho provato a fare, ma non mi funzia.
    A che punto dello script, esattamente, dovrei inserire 'ste variabili?
    Se le metto così:

    Codice PHP:
    //====  PASSAGGIO N° [2]: Verifica dei dati inseriti ========//
    if ($invia) { 
        
    $_SESSION['nome']=ucwords($_POST['nome']);
        
    $_SESSION['cognome']=ucwords($_POST['cognome']);
        
    $nome=$_SESSION['nome'];
        
    $cognome=$_SESSION['cognome'];
          echo 
    "<html><head><title>[2] == Controlla i dati</title></head>
                <body>
                2).
    Ciao, 
    $nome $cognome!

                <form action=\"
    $_SERVER[PHP_SELF]\" method=\"POST\">            
                <input type=\"reset\" value=\"Cambia i dati\" onclick=\"javascript:history.back()\">
                <input type=\"submit\" value=\"INSERISCI!\" name=\"insert\">
                </form>
                </body>
                </html>"
    ;
                } 
    poi in questo passaggio:

    Codice PHP:
    //====  PASSAGGIO N° [3]: STAMPA dei dati inseriti ========//
    else if ($insert) {
              echo 
    "<html><head><title>[3] == Valori per \"$nome $cognome\"</title></head>
                    <body>
                    3).

                    Ho inserito i dati \"[b]
    $nome $cognome[/b]\" nel DB!
                    </body>
                    </html>"
    ;
                    } 
    Ottengo 'sta sfilza di "Notice":
    Notice: Undefined variable: nome in .../FORM/form3.php on line 28
    Notice: Undefined variable: cognome in .../FORM/form3.php on line 28
    Notice: Undefined variable: nome in .../FORM/form3.php on line 31
    Notice: Undefined variable: cognome in .../FORM/form3.php on line 31

    e i valori delle variabili non passano e non vengono stampati.
    (come d'altronde mi pare logico, visto che quelle variabili - messe lì - sono dichiarate "solo in caso di 'invia'") Ma se devo ri-dichiararle anche al terzo passaggio, mi pare una roba un po' ridondante, no?

    L'uso di switch in questo caso non serve a niente.
    Switch è un costrutto che usi quando devi testare una variabile che può contenere a seconda dei casi valori diversi e per ognuno prevedi una soluzione e un trattamento che vuoi tu.
    Sì, occhei...
    Ma siccome m'avevano consigliato di usarlo e non ci sono riuscito e visto che sto facendo tutto ciò per imparare, mi piacerebbe sapere come gestire il tutto così com'è però tramite Switch ;-)
    (Se poi serve o non serve è un altro discorso... L'importante è saperlo fare comunque, no? ;-)

    Tnx!

    cià
    ale
    If you can keep your head when all about you are losing theirs,
    it's just possible you haven't grasped the situation.

  4. #4

    Re: stupidoForm e Sessioni...

    Com'è possibile che non ti funzioni.

    Prova il seguente codice:
    Codice PHP:
    <?php
    session_start
    (); //"Apro" la sessione...
    error_reporting(E_ALL); //Chiedo che siano attivati i "notice" su *tutti* gli errori (è già settata così anche nel "php.ini").

    //=== Inizializzo le due variabili in modo che anche se sono vuote non riceva "notice" ===//
    $invia = (isset($_POST['invia'])) ? ($_POST['invia']) : '' ;
    $insert = (isset($_POST['insert'])) ? ($_POST['insert']) : '' ;

    //====  PASSAGGIO N° [2]: Verifica dei dati inseriti ========//
    if ($invia) {
        
    $name $_SESSION['nome'];
        
    $cognome $_SESSION['cognome'];
          echo 
    "<html><head><title>[2] == Controlla i dati</title></head>
                <body>
                2).
    Ciao, "
    .$name." ".$cognome."!

                <form action=\"
    $_SERVER[PHP_SELF]\" method=\"POST\">            
                <input type=\"reset\" value=\"Cambia i dati\" onclick=\"javascript:history.back()\">
                <input type=\"submit\" value=\"INSERISCI!\" name=\"insert\">
                </form>
                </body>
                </html>"
    ;
                }
                    
    //====  PASSAGGIO N° [3]: STAMPA dei dati inseriti ========//
    else if ($insert) {
              echo 
    "<html><head><title>[3] == Valori per \"".$name." ".$cognome."\"</title></head>
                    <body>
                    3).

                    Ho inserito i dati \"[b]"
    .$name." ".$cognome."[/b]\" nel DB!
                    </body>
                    </html>"
    ;
                    }
    else {
    //====  PASSAGGIO N° [1]: Inserimento dei dati  ========//
    echo "<html><head><title>[1] == Inserisci i dati</title></head>
            <body>
            1).
    <form action=\"
    $_SERVER[PHP_SELF]\" method=\"POST\">
            Nome: <input name=\"nome\" size=\"30\">

            Cognome: <input name=\"cognome\" size=\"30\">

            <input type=\"reset\" value=\"CiòripenZato...\">
            <input type=\"submit\" value=\"OK\" name=\"invia\">
        </form>
        </body>
        </html>"
    ;
        }
    ?>

  5. #5

    'nz!

    Nientedafa'.
    Come prima ugualeuguale.
    (Hai solo "virgolettato" le variabili "$nome" e "$cognome", no)?

    Se ti può aiutare, così funziona:

    Codice PHP:
    <?php
    session_start
    (); //"Apro" la sessione...
    error_reporting(E_ALL); //Chiedo che siano attivati i "notice" su *tutti* gli errori (è già settata così anche nel "php.ini").

    //=== Inizializzo le due variabili in modo che anche se sono vuote non riceva "notice" ===//
    $invia = (isset($_POST['invia'])) ? ($_POST['invia']) : '' ;
    $insert = (isset($_POST['insert'])) ? ($_POST['insert']) : '' ;

    //====  PASSAGGIO N° [2]: Verifica dei dati inseriti ========//
    if ($invia) { 
        
    $_SESSION['nome']=ucwords($_POST['nome']);
        
    $_SESSION['cognome']=ucwords($_POST['cognome']);
        
    $nome=$_SESSION['nome'];
        
    $cognome=$_SESSION['cognome'];
          echo 
    "<html><head><title>[2] == Controlla i dati</title></head>
                <body>
                2).
    Ciao, 
    $nome $cognome!

                <form action=\"
    $_SERVER[PHP_SELF]\" method=\"POST\">            
                <input type=\"reset\" value=\"Cambia i dati\" onclick=\"javascript:history.back()\">
                <input type=\"submit\" value=\"INSERISCI!\" name=\"insert\">
                </form>
                </body>
                </html>"
    ;
                }
                    
    //====  PASSAGGIO N° [3]: STAMPA dei dati inseriti ========//
    else if ($insert) {
        
    $nome=$_SESSION['nome'];
        
    $cognome=$_SESSION['cognome'];
              echo 
    "<html><head><title>[3] == Valori per \"$nome $cognome\"</title></head>
                    <body>
                    3).

                    Ho inserito i dati \"[b]
    $nome $cognome[/b]\" nel DB!
                    </body>
                    </html>"
    ;
                    }
    else {
    //====  PASSAGGIO N° [1]: Inserimento dei dati  ========//
    echo "<html><head><title>[1] == Inserisci i dati</title></head>
            <body>
            1).
    <form action=\"
    $_SERVER[PHP_SELF]\" method=\"POST\">
            Nome: <input name=\"nome\" size=\"30\">

            Cognome: <input name=\"cognome\" size=\"30\">

            <input type=\"reset\" value=\"CiòripenZato...\">
            <input type=\"submit\" value=\"OK\" name=\"invia\">
        </form>
        </body>
        </html>"
    ;
        }
    ?>
    Però continua a non andarmi giù il fatto di dover assegnare due volte i valori alle stesse variabili.

    cià
    ale
    If you can keep your head when all about you are losing theirs,
    it's just possible you haven't grasped the situation.

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.