Ciao a tutti,
Ho creato un form per la modifica dei dati di una tabella sulla falsa riga dell'esempio riportato nella Vs lezione n°9 - Corso PHP/MySQL (aggiornamento dei dati).
Il problema é che non riesco ad aggiornare il campo fin_account_tm (TINYINT(4)) al quale sono abbinati 3 radio button, praticamente quando cambio un opzione succede che ricevo sempre il valore 0 (nessun valore nella tabella del form).
Non so se qualcuno può darmi un aiuto?
Grazie in anticipo.
Amos
<code>
<?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']))
{
edit_fin_account();
}
elseif(isset($_GET['id']))
{
show_fin_account();
}
else
show_fin_accounts();
function show_fin_accounts()
{
// mostro un eventuale messaggio
if(isset($_GET['msg']))
echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
// preparo la query
$query = "SELECT * FROM fin_accounts ORDER BY fin_account_code";
// invio la query
$result = mysql_query($query);
// controllo l'esito
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}
$fin_account_tm_arr=array(' ','Operativo','Manovra','Tesoreria');
echo '<h1 align="center">Lista codici finanziari<h1>
<table border="1" align="center">
<tr>
<th>ID</th>
<th>Codice</th>
<th>Nome</th>
<th>Tipo movimento</th>
<th> </th>
</tr>';
while ($row = mysql_fetch_assoc($result))
{
$id = htmlentities($row['id']);
$fin_account_code = htmlentities($row['fin_account_code']);
$fin_account_name = htmlentities($row['fin_account_name']);
if(!$fin_account_code) $fin_account_code = ' ';
if(!$fin_account_name) $fin_account_name = ' ';
$fin_account_tm = $fin_account_tm_arr[$row['fin_account_tm']];
// preparo il link per la modifica dei dati del record
$link = $_SERVER['PHP_SELF'] . '?id=' . $row['id'];
echo "<tr>
<td>$id</td>
<td>$fin_account_code</td>
<td>$fin_account_name</td>
<td>$fin_account_tm</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 edit_fin_account()
{
// recupero i campi di tipo "stringa"
$fin_account_code = trim($_POST['fin_account_code']);
$fin_account_name = trim($_POST['fin_account_name']);
// verifico se devo eliminare gli slash inseriti automaticamente da PHP
if(get_magic_quotes_gpc())
{
$fin_account_code = stripslashes($fin_account_code);
$fin_account_name = stripslashes($fin_account_name);
}
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
$fin_account_code = mysql_real_escape_string($fin_account_code);
$fin_account_name = mysql_real_escape_string($fin_account_name);
//recupero gli altri campi del form
$fin_account_tm = isset($_POST['fin_account_tm']) ? intval($_POST['fin_account_tm']) : 0;
$id = intval($_GET['id']);
// verifico la presenza dei campi obbligatori
if(!$fin_account_code || !$fin_account_name)
{
$messaggio = urlencode("Non hai inserito i campi codice e/o nome: campi obbligatori");
header("location: $_SERVER[PHP_SELF]?id=$id&msg=$messaggio");
exit;
}
// preparo la query
$query = "UPDATE fin_accounts SET
fin_account_code = '$fin_account_code',
fin_account_name = '$fin_account_name',
fin_account_tm = $fin_account_tm
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 show_fin_account()
{
// mostro un eventuale messaggio
if(isset($_GET['msg']))
echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
$id = intval($_GET['id']);
// preparo la query
$query = "SELECT * FROM fin_accounts 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($id,$fin_account_code,$fin_account_name,$fin_account_tm) = mysql_fetch_row($result);
$fin_account_code = htmlspecialchars($fin_account_code);
$fin_account_name = htmlspecialchars($fin_account_name);
$fin_account_tm = htmlspecialchars($fin_account_tm);
?>
<h1 align="center">Modifica codici FIN</h1>
<form name="form_edit_fin_account" method="post" action="" align="center">
<table border="1" align="center">
<tr><td><label><b>Codice:</b></label></td>
<td><input name="fin_account_code" type="text" value="<?echo $fin_account_code?>" /></td></tr>
<tr><td><label><b>Nome:</b></label></td>
<td><input name="fin_account_name" type="text" value="<?echo $fin_account_name?>" /></td></tr>
<tr><td><label><b>Tipo movimento:</b></label></td>
<td><label><input type="radio" name="tipo_movimento" value="1" <?if($fin_account_tm==1) echo 'checked="checked"'?>/>Operativo</label><label><input type="radio" name="tipo_movimento" value="2" <?if($fin_account_tm==2) echo 'checked="checked"'?>/>Manovra</label><label><input type="radio" name="tipo_movimento" value="3" <?if($fin_account_tm==3) echo 'checked="checked"'?>/>Tesoreria</label></td></tr>
</table>
<table align="center"><tr><td colspan=\"2\" align="center" valign="middle"><input name="invia" type="submit" value="Invia" /></td></tr></table>
</form>
<?
}
?>
</code>