• User Newbie

    Passagio di stringhe e INCLUDE

    Ciao atutti! Sono nuovo...
    Io chiamo la pagina prova.php passando delle stringhe:

    echo "<a href="prova.php?testo=$ciao">ok</a>";

    nella pagina prova.php includo il menu:

    include ('menu.php');

    La domanda è questa: dentro al file menu.php vedo la variabile "testo"?


  • User Attivo

    Credo ci sia un errore concettuale.

    Quando includi un file [Es.: filedaincludere.php] in un altro file [fileprincipale.php], il risultato è un unico file, con il nome del file nel quale includi l'altro [in questo caso, fileprincipale.php].

    Le variabili settate sono tutte quelle passate al file principale ed, eventualmente, quelle settate nel file incluso.


  • User Newbie

    Ok, ho verificato che anche nel file che includo vedo le variabili passate.

    Per recuperare i valori passati alla pagina prova.php (prova.php?testo=ciao) uso questo comando:

    $valori = array_values($HTTP_GET_VARS)

    e poi li stampo così:

    for ($c=0; $c<$numeroVariabili; $c++)
    echo $valori."
    ";

    Tutto funziona, ma se io passo un valore solo (come nell'esempio in alto) devo creare per forza l'arrey? Conoscendo come si chiama la CHIAVE (testo) non posso vedere direttamente valore?


  • User Attivo

    I valori passati si richiamano così (almeno così faccio io ed è semplicissimo):

    $variabile = $_GET['nomevariabile'].

    Nel tuo caso:

    $variabile = $_GET['testo']


  • User Newbie

    Grazie, funziona tutto alla perfezione!

    Ho solo un'altra cosa da chiedere a riguardo:

    se per caso la variabile 'testo' non viene passata viene giustamente generato un errore, c'è un modo per evitarlo? O meglio: posso controllare se la variabile è stata passata oppure no?


  • User Attivo

    🙂

    Allora: se la variabile non è stata passata, significa che non è stata settata. Quindi basta fare così:

    if &#40;isset&#40;$_GET&#91;'testo'&#93;&#41;&#41; &#123;
      // Istruzioni se la variabile è stata passata.
    &#125;
    
    else &#123;
      // Istruzioni se la variabile non è stata passata.
    &#125;
    

    🙂


  • User Newbie

    Grazie a ico1989 che, se il nome non m'inganna, ha 10 anni in meno di me...
    ...quanto sono ignorante...
    Ciao!


  • User Attivo

    Voglio precisare una cosa, visto che ieri, quando ho risposto, sono stato poco riflessivo 🙂

    La variabile $_GET['testo'] risulta non passata, e quindi non settata, solo nel caso che il modulo non è stato inviato [Esempio: Si è chiamata direttamente la pagina di elaborazione dei dati del modulo].

    Se, semplicemente, il campo "testo" non è stato riempito, la variabile risulterà settata, con valore:

    $_GET&#123;'testo'&#93; = ""
    

    , cioè valore nullo.

    In questo caso, si potrà controllare che il campo sia stato inserito in questo modo:

    if &#40;$_GET&#91;'testo'&#93; == ""&#41; &#123;
      // Istruzioni se il campo "testo" non è stato riempito.
    &#125;
    

    Avvertenze:

    Se si usa la funzione

    isset&#40;&#41;
    

    , la condizione dell'IF risulterà sempre vera, anche nel caso in cui il campo non sia stato riempito, per la ragione già detta.

    È sconsigliato usare la diciture

    if &#40;$_GET&#91;'testo'&#93; == FALSE&#41; &#123; 
    &#91;...&#93;
    

    , in quanto PHP reputa FALSE tutti i seguenti valori:

    0
    0.0
    ""
    "0"
    Un array con zero elementi
    Un oggetto con zero variabili membro
    Il tipo speciale NULL (incluse tutte le variabili non definite)
    Potrebbe così sorgere qualche complicazione.

    🙂

    @daniele50 said:

    Grazie a ico1989 che, se il nome non m'inganna, ha 10 anni in meno di me...
    ...quanto sono ignorante...
    Ciao!
    Seee!: io so poco e niente. Puoi starne certo.

    😉


  • User Newbie

    Uso questa sintassi:

    if (isset($_GET['menu'])) {
    ...
    }
    else {
    ...
    }

    non mi da problemi in quanto le variabili non vengonon passate da un form ma direttamente nell'url, a volte la variabile c'è e a volte no...

    Ciao
    Daniele


  • User Attivo

    @ico1989 said:

    La variabile $_GET['testo'] risulta non passata, e quindi non settata, solo nel caso che il modulo non è stato inviato [Esempio: Si è chiamata direttamente la pagina di elaborazione dei dati del modulo].
    Ci troviamo 🙂