- Home
- Categorie
- Coding e Sistemistica
- PHP
- Passagio di stringhe e INCLUDE
-
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"?
-
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.
-
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?
-
I valori passati si richiamano così (almeno così faccio io ed è semplicissimo):
$variabile = $_GET['nomevariabile'].
Nel tuo caso:
$variabile = $_GET['testo']
-
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?
-
Allora: se la variabile non è stata passata, significa che non è stata settata. Quindi basta fare così:
if (isset($_GET['testo'])) { // Istruzioni se la variabile è stata passata. } else { // Istruzioni se la variabile non è stata passata. }
-
Grazie a ico1989 che, se il nome non m'inganna, ha 10 anni in meno di me...
...quanto sono ignorante...
Ciao!
-
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{'testo'] = ""
, cioè valore nullo.
In questo caso, si potrà controllare che il campo sia stato inserito in questo modo:
if ($_GET['testo'] == "") { // Istruzioni se il campo "testo" non è stato riempito. }
Avvertenze:
Se si usa la funzione
isset()
, 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 ($_GET['testo'] == FALSE) { [...]
, 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.
-
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
-
@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