Salve, ho da poco iniziato ad approcciarmi al mondo PHP, e ho un problema che non riesco a risolvere, in pratica nel mio db ho inserito dei dati ovvero "titolo e contenuto" e stavo progettando un modo per poterli modificare utilizzando questa pagina.
Codice PHP:
<?php
// richiamo il file di configurazione
require 'config.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,titolo,contenuto FROM news";
// 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>titolo</th>
<th> </th>
</tr>';
while ($row = mysql_fetch_assoc($result))
{
$titolo = htmlspecialchars($row['titolo']);
// preparo il link per la modifica dei dati del record
$link = $_SERVER['PHP_SELF'] . '?id=' . $row['id'];
echo "<tr>
<td>$titolo</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"
$titolo = trim($_POST['titolo']);
$contenuto = trim($_POST['contenuto']);
// verifico se devo eliminare gli slash inseriti automaticamente da PHP
if(get_magic_quotes_gpc())
{
$titolo = stripslashes($titolo);
$contenuto = stripslashes($contenuto);
}
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
$titolo = mysql_real_escape_string($titolo);
$contenuto = mysql_real_escape_string($contenuto);
// recupero gli altri campi del form
$id = intval($_GET['id']);
// verifico la presenza dei campi obbligatori
if(!$titolo)
{
$messaggio = urlencode("Non hai inserito il titolo");
header("location: $_SERVER[PHP_SELF]?id=$id&msg=$messaggio");
exit;
}
// preparo la query
$query = "UPDATE news SET
titolo = '$titolo',
contenuto = '$contenuto',
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 titolo,contenuto FROM news 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($titolo,$contenuto) = mysql_fetch_row($result);
$titolo = htmlspecialchars($titolo);
$contenuto = htmlspecialchars($contenuto);
?>
<form name="form_registrazione" method="post" action="">
<label>Titolo:
<input name="titolo" type="text" value="<?echo $titolo?>" />
</label>
<p>
<label>Contenuto:<br />
<textarea name="contenuto" cols="40" rows="5"><?echo $contenuto?></textarea>
</label>
</p>
<p>
<input name="invia" type="submit" value="Invia" />
</p>
</form>
<?
}
?>
solo che mi da questa riga in esecuzione.
Codice PHP:
Errore nella query UPDATE news SET titolo = 'Astronauta su marte', contenuto = 'marte finalmente colonizzato', WHERE id = 7: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = 7' at line 4
Qualcuno di buon cuore che possa aiutarmi ?