Salve a tutti,
E' da giorni che sbatto per trovare una soluzione al mio problema, ma essende un niubbone, ovviamente non ci sono ancora riuscito...
Il problema è questo: ho letto la guida di html.it sulla realizzazione di un blog dinamico (http://php.html.it/guide/leggi/77/gu...mysql-pratica/) e dopo aver smanettato un pò in mezzo a così tanto codice, sono riuscito un pò a caprine la logica e far funzionare tutto per bene.
Ora però vorrei aggiungere una funzione per la modifica degli articoli pubblicati. Ho fatto diversi tentativi, ma fino ad ora, il risultato migliore che sono riuscito ad ottenere, è quello di non ricevere errori strani... d'altra parte però, non ricevo proprio niente. Cioè, utilizzando la funzione UPDATE, gli articoli non vengono comunque aggiornati.
Per creare la pagina "modifica.php", sono partito dalla pagina "gestisci.php" che serve per l'inserimento di nuovi articoli (e che è fornita dall'autore della guida) ed ho apportato le "dovute" modifiche.
La pagina "gestisci.php" è questa:
Codice PHP:
<?php
// inizializzazione della sessione
session_start();
// controllo sul valore di sessione
if (!isset($_SESSION['login']))
{
// reindirizzamento alla home page in caso di login mancato
header("Location: index.php");
}
// valorizzazione delle variabili con i parametri dal form
if(isset($_POST['submit'])&&($_POST['submit']=="Scrivi")){
if(isset($_POST['autore'])){
$autore = addslashes(filter_var($_POST['autore'], FILTER_SANITIZE_STRING));
}
if(isset($_POST['titolo'])){
$titolo = addslashes(filter_var($_POST['titolo'], FILTER_SANITIZE_STRING));
}
if(isset($_POST['testo'])){
$testo = addslashes(filter_var($_POST['testo'], FILTER_SANITIZE_STRING));
}
// inclusione del file della classe
include "funzioni_mysql.php";
// istanza della classe
$data = new MysqlClass();
// chiamata alla funzione di connessione
$data->connetti();
$t = "post"; # nome della tabella
$v = array ($titolo,$testo,$autore,date("Y-m-d")); # valori da inserire
$r = "titolo_post,testo_post,autore_post,data_post"; # campi da popolare
// chiamata alla funzione per l’inserimento dei dati
$data->inserisci($t,$v,$r);
echo "Articolo inserito con successo.";
// disconnessione
$data->disconnetti();
}else{
// form per l'inserimento
?>
<html>
<h1>Inserimento post:</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Titolo:
<input name="titolo" type="text">
Testo:
<textarea name="testo" cols="30" rows="10"></textarea>
Autore:
<input name="autore" type="text">
<input name="submit" type="submit" value="Scrivi">
</form>
</html>
<?
}
?>
La pagina "modifica.php" che ho creato io è invece questa:
Codice PHP:
<?php
session_start();
if (!isset($_SESSION['login']))
{
header("Location: index.php");
}
$id_post = $_GET['id_post'];
include "funzioni_mysql.php";
$data = new MysqlClass();
$data->connetti();
if(!isset($_POST['submit'])){
$post_sql = $data->query("SELECT * FROM post WHERE id_post = $id_post");
$post_obj = $data->estrai($post_sql);
$id_post = $post_obj->id_post;
$titolo_post = stripslashes($post_obj->titolo_post);
$testo_post = stripslashes($post_obj->testo_post);
$autore_post = stripslashes($post_obj->autore_post);
$data_post = $post_obj->data_post;
}
// valorizzazione delle variabili con i parametri dal form
if(isset($_POST['submit'])&&($_POST['submit']=="Scrivi")){
if(isset($_POST['autore'])){
$autore = addslashes(filter_var($_POST['autore'], FILTER_SANITIZE_STRING));
}
if(isset($_POST['titolo'])){
$titolo = addslashes(filter_var($_POST['titolo'], FILTER_SANITIZE_STRING));
}
if(isset($_POST['testo'])){
$testo = addslashes(filter_var($_POST['testo'], FILTER_SANITIZE_STRING));
}
$data->modifica();
echo "Articolo modificato con successo.";
$data->disconnetti();
}else{
// form per l'inserimento
?>
<html>
<h1>Inserimento post:</h1>
<? echo $titolo_post;?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Titolo:
<input name="titolo" value="<? echo $titolo_post;?>" type="text">
Testo:
<textarea name="testo" cols="30" rows="10"><? echo $testo_post;?></textarea>
Autore:
<input name="autore" value="<? echo $autore_post;?>" type="text">
<input name="id_post" type="hidden" value="<?php echo $id_post; ?>">
<input name="submit" type="submit" value="Scrivi">
</form>
</html>
<?
}
?>
La funzione per che ho creato per la modifica degli articoli è questa:
Codice PHP:
//funzione per la modifica dei dati in tabella
public function modifica()
{
if(isset($this->attiva))
{
$istruzione = "UPDATE post SET titolo_post='$titolo', testo_post='$testo', autore_post='$autore_post' WHERE id_post = '$id_post'";
$query = mysql_query($istruzione) or die (mysql_error());
}
else
{
return false;
}
}
Se può servire posto anche la funzione per la creazione dei nuovi articoli (fornita dall'autore della guida):
Codice PHP:
//funzione per l'inserimento dei dati in tabella
public function inserisci($t,$v,$r = null)
{
if(isset($this->attiva))
{
$istruzione = 'INSERT INTO '.$t;
if($r != null)
{
$istruzione .= ' ('.$r.')';
}
for($i = 0; $i < count($v); $i++)
{
if(is_string($v[$i]))
$v[$i] = '"'.$v[$i].'"';
}
$v = implode(',',$v);
$istruzione .= ' VALUES ('.$v.')';
$query = mysql_query($istruzione) or die (mysql_error());
}else{
return false;
}
}
Quando provo a modificare i valori che estraggo dal db, ottengo un messaggio di successo ("Articolo modificato con successo.") ma non succede proprio nulla... è come se la funzione modifica non avesse nessun effetto sul db.
Avete qualche idea su come risolvere?