Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    143

    Funzione UPDATE per Blog (da HTML.it)

    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?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    143
    E' consentito un piccolo up?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.