• User

    Rendere visibile variabile di un costrutto if in un altro costrutto if

    Ciao a tutti.
    Secondo voi come posso rendere visibile una variabile contenuta dentro un costrutto if in un altro costrutto if?
    Ipotizziamo, ad esempio di avere questo banalissimo codice:
    [PHP]
    <html>
    <head>
    </head>
    <body>
    <form method="post">
    <input type="submit" name="ok1" value="Clicca qui" /><br /><br />
    <input type="submit" name="ok2" value="stampa" /><br /><br />
    <input type="text" name="valore1" />
    </form>
    <?php
    if (isset ($_POST['ok1']))
    {
    $aaa = $_POST['valore1'];
    }
    if (isset ($_POST['ok2']))
    {
    echo $aaa;
    }
    ?>
    </body>
    </html>
    [/PHP]
    Scrivendo in questo modo mi genera questo errore: "Notice: Undefined variable: a in ...". Secondo voi come dobrei fare per rendere visibile la variabile $a dentro if (isset ($_POST['ok2']))?
    Ciao, grazie mille a tutti.


  • Staff Tecnico

    Ciao!

    Secondo me la cosa migliore che puoi fare è inizializzare la tua variabile fuori dagli if, la variabile $aaa in realtà anche nel tuo caso risulta visibile fuori dall'if però viene definita solo quando la prima condizione risulta soddisfatta.

    Prendendo il tuo codice php come base farei una cosa di questo tipo:

    [PHP]
    $aaa = null;
    if (isset ($_POST['ok1']))
    {
    $aaa = $_POST['valore1'];
    }
    if (isset ($_POST['ok2']))
    {
    echo $aaa;
    }
    [/PHP]

    In questo modo in qualsiasi caso la tua variabile $aaa esisterà


  • User

    Samurai, fa attenzione. Il tuo programma potrebbe avere anche qualche problema di "logica". I due if hanno condizioni diverse, quindi durante l'esecuzione può succedere di entrare nel secondo ma non nel primo... (se ok2 fosse settato e ok1 no...)

    Inoltre, dalla parte HTML del tuo esempio mi pare di capire che l'idea sia che l'utente dovrebbe cliccare su "Clicca qui" e poi su "stampa". Ognuno di questi due bottoni però esegue una submit, quindi il codice PHP viene eseguito due volte. Se non sbaglio, per come hai scritto il codice, la prima volta che viene eseguito entra nel primo if e setta la variabile $aaa e la seconda entra nel secondo if e cerca di stampare la variabile $aaa. Il problema è che i valori delle variabili non sopravvivono al ri-caricamento della pagina... per ottenere questo risultato (definire variabili che sopravvivono da un caricamento all'altro) dovresti usare qualcosa tipo le sessioni PHP...