ciao a tutti! ho seguito attentamente le istruzioni del file di modifica di uno o più campi.
ho scritto questo codice, lo riporto sotto, che funziona correttamente tranne che in un punto.
<?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><br /><br />';
// preparo la query
$query = "SELECT id,nome,soldi,tettoia FROM fanta_squadra";
// 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>Soldi</th>
<th>Tettoia</th>
<th> </th>
</tr>';
while ($row = mysql_fetch_assoc($result))
{
$nome = htmlspecialchars($row['nome']);
$soldi = intval($row['soldi']);
$tettoia_arr = array('no','si');
$tettoia = $tettoia_arr[$row['tettoia']];
// preparo il link per la modifica dei dati del record
$link = $_SERVER['PHP_SELF'] . '?id=' . $row['id'];
echo "<tr>
<td>$nome</td>
<td>$soldi</td>
<td>$tettoia</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 gli altri campi del form
$soldi = intval($_POST['soldi']);
$tettoia = intval($_POST['tettoia']);
//definisco la variabile di costo
$costo = 1000000;
$resto = $soldi - $costo;
$id = intval($_GET['id']);
// preparo la query
$query = "UPDATE fanta_squadra SET
soldi = $resto,
tettoia = '$tettoia'
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><br /><br />';
$id = intval($_GET['id']);
// preparo la query
$query = "SELECT tettoia FROM fanta_squadra 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($tettoia) = mysql_fetch_row($result);
?>
<form name="form_tettoia" method="post" action="">
<label>tettoia
<select name="tettoia">
<option value="1" <?if($tettoia==1) echo 'selected="selected"'?>>si</option>
</select>
</label>
</p>
<p>
<input name="invia" type="submit" value="Invia" />
</p>
</form>
<?
}
?>
in pratica il valore tettoia viene effettivamente aggiornato a 1, però la variabile soldi viene calcolata in modo errato.
infatti $resto viene restituita sempre uguale a -$costo
questo mi fa pensare che viene letta come nulla e non riesco a capire il perchè.
fate conto che il campo soldi sul database è un int(11) ed è pari a un valore numerico di 300000000
l'ho richiamata male oppure è qualcos'altro?
come posso risolvere l'errore?
grazie