In questo breve tutorial illustrerò una delle tecniche standard per passare dei dati ad uno script PHP tramite una normale form html.
supponiamo di avere una normale pagina html (chiamata form.php ) utilizzata per inviare tramite una form il valore di un campo di testo,
<html>
<head><title>Una Form</title></head>
<body>
sto utilizzando html<br/>
<form method='GET' action='form.php'>
<input type='text' name='testo' value='ciao mondo' />
<input type='submit' value='invia' />
</form>
</body>
</html>
<form method='GET' action='form.php'>
il tag presenta due attributi method e action:
http://www.mioserver.com/analizzalaform.php' ).
<input type='text' name='testo' value='ciao mondo' />
questo tag presenta tre attributi (in realtà sono molti di più ma per semplicità non li vedremo, esiste comunque un'ottima guida su
http://www.html.it ):
riscriviamo adesso la pagina in modo che l'http server la sfrutti come script php e chiamiamola form1.php
<html>
<head><title>Una Form con php</title></head>
<body>
<?php
if (!isset($_GET['testo'])) {
?>
adesso utilizzo php <br/>
<form method='GET' action='form1.php'>
<input type='text' name='testo' value='ciao mondo' />
<input type='hidden' name='nascosto' value='ok' />
<input type='submit' value='invia' />
</form>
<?php
} else {
echo 'il valore del campo testo: '.$_GET['testo'].'<br/>';
echo 'il valore del tipo hidden: '.$_GET['nascosto'].'<br/>';
?>
</body>
</html>
come si può notare tutto quello che è stato aggiunto è riassumibile in un banale if che fa visualizzare o meno la form se non è stato inizializzato il valore di una particolare chiave dell'array $_GET .
if (!isset($_GET['testo'])) {
// html per visualizzare la form
}
per maggiori info sulla funzione isset() fate un salto sulla
reference di php.net
L'array $_GET (al pari di $_POST ) rappresenta una variabile globale di php ed è utilizzabile sempre ed ovunque. All'interno di questo array vengono memorizzati tutti i valori inviati tramite metodo GET (o POST) attraverso una form. Il nome della chiave dell'array sarà quindi il valore dell'attributo name utilizzato precedentemente nella form.
se analizziamo come funziona lo script vedremo che al primo richiamo dal server visualizzerà la form e appena verrà fatto il submit dei dati siccome $_GET['testo'] è stato inizializzato restituirà in output il valore inserito cioè:
echo $_GET['testo'];
vediamo adesso come fare una form che visualizza diverse form in base al risultato di quelle precedenti, chiamiamo il nuovo file form_selector.php
<html>
<head><title>Form Selector</title></head>
<body>
<?php
if (!isset($_POST['selector'])) {
?>
<form method='POST' action='form_selector.php'>
<select name='selector'>
<option value='prima'>prima form</option>
<option value='seconda'>seconda form</option>
<option value='terza'>terza form</option>
<input type='submit' value='invia' />
</form>
<?php
} else {
switch ($_POST['selector']) {
case 'prima':
include 'form.php'; // includo il primo esempio di form che non fa nulla
break;
case 'seconda':
include 'form1.php'; // includo il secondo esempio di form
break;
case 'terza':
echo 'ciao hai scelto il valore: '.$_POST['selector'].'<br/> ma non ho creato nessuna form a riguardo :) ';
break;
}
?>
</body>
</html>
visita la reference di php per la
sintassi dello switch
lib/WikiUser.php:59: Notice[8]: Only variables should be assigned by reference
lib/Template.php:112: Notice[8]: Only variables should be assigned by reference
lib/Template.php:114: Notice[8]: Only variables should be assigned by reference
lib/Template.php (In template 'html'):112: Notice[8]: Only variables should be assigned by reference
lib/Template.php (In template 'html'):114: Notice[8]: Only variables should be assigned by reference
lib/Template.php (In template 'html'):112: Notice[8]: Only variables should be assigned by reference
lib/Template.php (In template 'html'):114: Notice[8]: Only variables should be assigned by reference
lib/Template.php (In template 'body') (In template 'html'):112: Notice[8]: Only variables should be assigned by reference
lib/Template.php (In template 'body') (In template 'html'):114: Notice[8]: Only variables should be assigned by reference
lib/Template.php (In template 'top') (In template 'body') (In template 'html'):112: Notice[8]: Only variables should be assigned by reference
lib/Template.php (In template 'top') (In template 'body') (In template 'html'):114: Notice[8]: Only variables should be assigned by reference
lib/Template.php (In template 'body') (In template 'html'):112: Notice[8]: Only variables should be assigned by reference
lib/Template.php (In template 'body') (In template 'html'):114: Notice[8]: Only variables should be assigned by reference
lib/CachedMarkup.php (In template 'browse') (In template 'body') (In template 'html'):427: Notice[8]: Only variables should be assigned by reference