Codice PHP:
<?php
// richiamo il file di configurazione
require 'config.php';
// richiamo lo script responsabile della connessione a MySQL
require 'connect.php';
if($_POST && isset($_GET['id']))
{
aggiorna_record();
}
elseif(isset($_GET['id']))
{
mostra_record();
}
else
mostra_lista();
function mostra_lista()
{
// mostro un eventuale messaggio
if(isset($_GET['msg']))
echo '[b]'.htmlentities($_GET['msg']).'[/b]
';
// preparo la query
$query = "SELECT id,nome FROM clienti";
// invio la query
$result = mysql_query($query);
// controllo l'esito
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}
echo '
<table border="1">
<tr>
<th>Nome</th>
<th>&nbsp;</th>
</tr>';
while ($row = mysql_fetch_assoc($result))
{
$nome = htmlspecialchars($row['nome']);
// preparo il link per la modifica dei dati del record
$link = $_SERVER['PHP_SELF'] . '?id=' . $row['id'];
echo "<tr>
<td>$nome</td>
<td><a href=\"$link\">modifica</a></td>
</tr>";
}
echo '</table>';
// libero la memoria di PHP occupata dai record estratti con la SELECT
mysql_free_result($result);
// chiudo la connessione a MySQL
mysql_close();
}
function aggiorna_record()
{
// recupero i campi di tipo "stringa"
$nome = trim($_POST['nome']);
$cognome = trim($_POST['cognome']);
$messaggio = trim($_POST['messaggio']);
// verifico se devo eliminare gli slash inseriti automaticamente da PHP
if(get_magic_quotes_gpc())
{
$nome = stripslashes($nome);
$cognome = stripslashes($cognome);
$messaggio = stripslashes($messaggio);
}
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
$nome = mysql_real_escape_string($nome);
$cognome = mysql_real_escape_string($cognome);
$messaggio = mysql_real_escape_string($messaggio);
// recupero gli altri campi del form
$sesso = isset($_POST['sesso']) ? intval($_POST['sesso']) : 0;
$newsletter = isset($_POST['newsletter']) ? 1 : 0;
$attivita = intval($_POST['attivita']);
$id = intval($_GET['id']);
// verifico la presenza dei campi obbligatori
if(!$nome)
{
$messaggio = urlencode("Non hai inserito il nome");
header("location: $_SERVER[PHP_SELF]?id=$id&msg=$messaggio");
exit;
}
// preparo la query
$query = "UPDATE clienti SET
nome = '$nome',
cognome = '$cognome',
sesso = $sesso,
newsletter = $newsletter,
attivita = $attivita,
messaggio = '$messaggio'
WHERE id = $id";
// invio la query
$result = mysql_query($query);
// controllo l'esito
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}
// chiudo la connessione a MySQL
mysql_close();
$messaggio = urlencode('Aggiornamento effettuato con successo');
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
}
function mostra_record()
{
// mostro un eventuale messaggio
if(isset($_GET['msg']))
echo '[b]'.htmlentities($_GET['msg']).'[/b]
';
$id = intval($_GET['id']);
// preparo la query
$query = "SELECT nome,email,sesso,newsletter,attivita,messaggio FROM clienti WHERE id = $id";
// invio la query
$result = mysql_query($query);
// controllo l'esito
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}
// controllo che la SELECT abbia restituito un record
// l'id passato via GET potrebbe essere stato manipolato
if(mysql_num_rows($result) != 1) {
die("l'ID passato via GET è errato");
}
list($nome,$cognome,$sesso,$newsletter,$attivita,$messaggio) = mysql_fetch_row($result);
$nome = htmlspecialchars($nome);
$cognome = htmlspecialchars($cognome);
$messaggio = htmlspecialchars($messaggio);
?>
<form name="form_registrazione" method="post" action="">
<label>nome:
<input name="nome" type="text" value="<?echo $nome?>" />
</label>
<label>cognome:
<input name="cognome" type="text" value="<?echo $cognome?>" />
</label>
</p>
Sesso:
<label>
<input type="radio" name="sesso" value="1" <?if($sesso==1) echo 'checked="checked"'?> />
M</label>
<label>
<input type="radio" name="sesso" value="2" <?if($sesso==2) echo 'checked="checked"'?>/>
F</label>
</p>
<label>inviami newletter:
<input name="newsletter" type="checkbox" value="1" <?if($newsletter) echo 'checked="checked"'?> />
</label>
</p>
<label>attività:
<select name="attivita">
<option value="0">:: seleziona ::</option>
<option value="1" <?if($attivita==1) echo 'selected="selected"'?>>studente</option>
<option value="2" <?if($attivita==2) echo 'selected="selected"'?>>lavoratore</option>
<option value="3" <?if($attivita==3) echo 'selected="selected"'?>>disoccupato</option>
</select>
</label>
</p>
<label>messaggio:
<textarea name="messaggio" cols="40" rows="5"><?echo $messaggio?></textarea>
</label>
</p>
<input name="invia" type="submit" value="Invia" />
</p>
</form>
<?
}
?>