PROGRAMMIAMO
PHP - Passaggio alla pagina stessa

Passaggio valori all'interno della stessa pagina

Nella lezione precedente abbiamo visto come una pagina HTML può passare dinamicamente dei valori a una pagina PHP attraverso i link. Questo passaggio è possibile anche fra due pagine PHP, ovvero quando sia la pagina sorgente (quella che contiene il link) sia la pagina destinazione (quella che riceve i valori) sono scritte in PHP.

Particolarmente interessante è il caso di una pagina PHP che passa i valori a se stessa. Supponiamo per esempio di avere una pagina "foto.php" che visualizza un'immagine e che tale immagine possa cambiare a seconda della scelta dell'utente. Ecco come potrebbe essere scritto il codice PHP:


<!DOCTYPE html>
<html lang="it">

<head>
<meta charset="windows-1252">
<title>Pagina che passa i valori a se stessa </title>

<?php
if (!isset( $_REQUEST['foto']))
$foto = "img1.jpg"; //immagine visualizzata al primo caricamento pagina
else
$foto = $_REQUEST['foto'];

echo "<img src = $foto >";
?>

<p>Scegli la foto che vuoi visualizzare:</p>

<p>
<?php
echo "<a href = 'foto.php?foto=img1.jpg' > Foto1 </a> <br>\n";
echo "<a href = 'foto.php?foto=img2.jpg' > Foto2 </a> <br>\n";
echo "<a href = 'foto.php?foto=img3.jpg' > Foto3 </a> <br>\n";
?>


</p>

</body>
</html>

Esaminiamo adesso nel dettaglio le diverse istruzioni di questo script.


I link

Esaminiamo dapprima i link contenuti nella pagina:

echo "<a href = 'foto.php?foto=img1.jpg' > Foto1 </a> <br>\n";

Il significato è abbastanza semplice: viene linkata la URL della pagina foto.php (cioè la pagina medesima che contiene questo codice) e le viene passato un valore della variabile foto.

Un modo equivalente, anche se più complicato in questo caso, sarebbe stato quello di usare la variabile di sistema $_SERVER['PHP_SELF'], la quale contiene la URL della pagina corrente. In questo modo avremmo potuto anche scrivere:

echo "<a href = '".$_SERVER['PHP_SELF']."?foto=img1.jpg' > Foto1 </a> <br>\n";

Nel nostro caso $_SERVER['PHP_SELF'] avrà il valore foto.php, cioè il nome della nostra pagina.


isset

La funzione isset serve per determinare se una certa variabile ha un valore oppure no. Nel nostro esempio:

isset($_REQUEST['foto'])

torna true (in realtà viene restituito il valore numerico 1, che in PHP equivale a true) se la pagina ha ricevuto una variabile di nome foto e torna false (in realtà 0) se invece non è stato ricevuto nulla. In pratica nel nostro caso la funzione torna false la prima volta che l'utente carica la pagina "foto.php": infatti al primo caricamento non è stato ancora selezionato nessuno dei link disponibili e dunque la variabile foto non esiste.

L'istruzione

if (!isset( $_REQUEST['foto']))
$foto = "img1.jpg"; //immagine visualizzata al primo caricamento pagina
else
$foto = $_REQUEST['foto'];


usa l'operatore NOT (simbolo !) col seguente significato:

- se foto non esiste (primo caricamento della pagina) assegna a $foto un valore iniziale di default (img1.jpg)
- altrimenti, se invece foto esiste (caricamenti successivi della pagina), $foto viene inizializzata col valore effettivamente passato alla pagina stessa.

Questo meccanismo un po' complicato è necessario dal momento che la stessa pagina (foto.php) può essere caricata in due diversi modi:

- la prima volta con un URL semplice: foto.php
- le volte successive con un URL del tipo: foto.php?foto=img2.jpg

Nel primo caso l'esecuzione della istruzione

$foto =  $_REQUEST['foto'] ;

potrebbe provocare un comportamento errato, perchè foto non esiste.



precedente - successiva

Sito realizzato in base al template offerto da
Graphixmania.it - Grafica e non solo
http://www.graphixmania.it