Salve ragazzi,
il seguente codice
Codice PHP:
<?php
include '../../config.php';
//Recupero il valore del parametro "id"
$id = $_GET['id'];
if($_POST && isset($_GET['id']))
{
aggiorna_record();
}
// esecuzione prima query
$query = "SELECT titolo,descrizione FROM images WHERE id = $id";
$res = mysql_query($query) or die (mysql_error());
// ciclo tutti i record recuperati attraverso la nostra query
while ($f=mysql_fetch_array($res)){
$titolo = stripslashes($f['titolo']);
$descrizione = stripslashes($f['descrizione']);
}
function aggiorna_record()
{
// recupero i campi di tipo "stringa"
$titolo = trim($_POST['titolo']);
$descrizione = trim($_POST['descrizione']);
// verifico se devo eliminare gli slash inseriti automaticamente da PHP
if(get_magic_quotes_gpc())
{
$titolo = stripslashes($titolo);
$descrizione = stripslashes($descrizione);
}
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
$titolo = mysql_real_escape_string($titolo);
$descrizione = mysql_real_escape_string($descrizione);
$titolo = htmlentities($titolo);
$descrizione = htmlentities($descrizione);
$id = intval($_GET['id']);
// verifico la presenza dei campi obbligatori
if(!$titolo)
{
echo 'Non hai inserito il Titolo!
[url="javascript:history.back()"]Torna indietro[/url]';
exit;
}
if(!$descrizione)
{
echo 'Non hai inserito la Descrizione!
[url="javascript:history.back()"]Torna indietro[/url]';
exit;
}
// preparo la query
$query = "UPDATE images SET titolo='$titolo',descrizione='$descrizione' 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();
echo 'Modifica effettuata con successo!';
}
?>
<form method="post" action="">
Titolo:
<input name="titolo" type="text" value="<?php echo $titolo; ?>" size="20">
Descrizione:
<textarea name="descrizione" cols="20" rows="4"><?php echo $descrizione; ?></textarea>
<input type="submit" name="Submit" value="Submit">
</form>
funziona perfettamente ma vorrei sapere perché quando modifico un record mi appare il messaggio
codice:
Modifica effettuata con successo!No database selected
quel "No database selected" da dove/perchè esce visto che la modifica viene registrata nel DB?
Altra cosuccia, quardando questa parte di funzione
Codice PHP:
function aggiorna_record()
{
// recupero i campi di tipo "stringa"
$titolo = trim($_POST['titolo']);
$descrizione = trim($_POST['descrizione']);
// verifico se devo eliminare gli slash inseriti automaticamente da PHP
if(get_magic_quotes_gpc())
{
$titolo = stripslashes($titolo);
$descrizione = stripslashes($descrizione);
}
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
$titolo = mysql_real_escape_string($titolo);
$descrizione = mysql_real_escape_string($descrizione);
$titolo = htmlentities($titolo);
$descrizione = htmlentities($descrizione);
è giusto mettere trim, stripslashes, mysql_real_escape_string e htmlentities per ovviare ai soliti problemi di riconoscimento/scrittura di caratteri strani come " e cose varie oppure esiste una sintassi migliore per queste situazioni?
Se c'è qualche errore di sintassi/impostazione per migliorare il codice, sono gradite segnalazioni, il funzionamento pratico c'è, a parte queste cose che ho segnalato poco sopra.