• User Attivo

    Problema con pagina di edit ( non aggiorna il db )

    Buona sera dopo una lunga assenza sono tornato a visitare il forum, ho un problema con una pagina in php che dovrebbe permettermi di modificare il contenuto di una tabella, mi visualizza il messaggio che l'aggiornamento è andato a buon fine ma in realtà non è così, vi posto il codice

    Pagina php con il form per l'update

    
        <form  action="edit_presentazione.php"  method="post"> 
        Titolo: <input type="text" name="presentazione_titolo" size="30"><br /> 
        Testo:<br /><textarea name="presentazione_testo" id="presentazione_testo" cols="30" rows="10"></textarea><br /> 
         <input name="id_presentazione" type="hidden" value="$id_presentazione" /> 
         <br /><input type="submit" name="edit" id="edit" value="Save Changes"> 
         </form>
    
    

    edit_presentazione.php

    
    <?php require_once("../config/connessione.php"); 
     
    include "session.php"; 
    //controlliamo l'invio dei dati 
    if (isset($_POST['edit'])) { 
     
        //raccogliamo i dati inviati tramite modulo 
        $titolo = addslashes($_POST['presentazione_titolo']); 
        $testo = addslashes($_POST['presentazione_testo']); 
        $id = (int)$_POST['presentazione_id']; 
     
     
     
    $update_presentazione= @mysql_query ("UPDATE $tabella_presentazione SET 
    presentazione_titolo = '$titolo', 
    presentazione_testo = '$testo' 
    WHERE presentazione_id='$id'") or die (mysql_error()); 
     
     
        //includiamo il file per la generazione del feed rss 
     
        if ($result != false) { 
            print "<p>Edittato</p>"; 
        } 
     
     
     
    } 
    else 
        print "<p>Non Modificato</p>"; 
     
        //eseguiamo la query di aggiornamento 
     
     
     
    ?>
    
    

    Come detto la pagina stampa il messaggio di conferma, ma in realtà non aggiorna il conenuto del db e non visualizza nemmeno titolo e testo all'interno del form, e da ieri che nn trovo soluzione...


  • User Attivo

    Come passi l'$id_presentazione alla pagina del form?

    Mettiamo che la tua pagina si chiami modifica.php, dovresti contattarla così: modifica.php?id=123
    e prima del form in modifica.php inserire un riga di php come questa:

    [php]$id_presentazione = $_GET['id'];[/php]

    Inoltre nel tuo form, dove metti

    [php]value="$id_presentazione"[/php]

    dovresti metterlo in un echo

    [php]value="<? echo "$id_presentazione"; ?>"[/php]

    Ciao.


  • User Attivo

    Ciao e grazie per aver risposto, l'id viene recuperato da un'altra pagina correttamente ora posto il codice completo delle 2 pagine

    presentazione.php

    
    
        <h1>Admin news</h1>
    <h2>Inserimento news</h2>
    
    
        <form action="adm_presentazione.php" method="post">
        Titolo: <input type="text" name="presentazione_titolo" size="30"><br />
        Testo:<br /><textarea name="presentazione_testo" id="presentazione_testo" cols="30" rows="10"></textarea><br />
         <br /><input type="submit" name="submit" value="Inserisci\">
         </form>
    <?php
        //lista delle news disponibili
        echo "<h2>Lista news</h2>\n";
    
        //contiamo i record
        $conto = @mysql_query ("SELECT COUNT(*)  FROM $tabella_presentazione") or die (mysql_error());
        $tot = @mysql_fetch_array ($conto) or die (mysql_error());
        $sommma = $tot['conta'];
    
        //stabiliamo una notifica da visualizzare
        //se i record sono pari a zero
    if ($sommma=='0')
    {
        echo "Nessuna news inserita.";
    }else{
    
        //visualizziamo i banner se presenti
        $query = @mysql_query("SELECT * FROM $tabella_presentazione ORDER BY presentazione_id DESC") or die (mysql_error());
    while($fetch = @mysql_fetch_array($query))
    {
        $presentazione_id_list = stripslashes($fetch['presentazione_id']);
        $presentazione_titolo_list = stripslashes($fetch['presentazione_titolo']);
        $presentazione_testo_list = stripslashes($fetch['presentazione_testo']);
    
        //modifichiamo la data nel formato europeo dd mm yyyy
    
        echo "<h2>" .$presentazione_titolo_list. "</h2>";
        echo "<h2>" .$presentazione_testo_list. "</h2>";
        echo "<h2>" .$presentazione_data_list. "</h2>";
    
        //link al file di modifica
        echo "<a href=\"mod_presentazione.php?id_presentazione=" .$presentazione_id_list. "\">Modifica</a>";
    
        //link al file di cancellazione
        echo " :: <a href=\"delete.php?id_presentazione=" .$presentazione_id_list. "&action=del_presentazione\">Cancella</a><br /><br />";
    }
    }
    
        //chiudiamo la connessione
    
    
    
    ?>
    
    

    mod_presentazione.php

    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
    <head>
    </head>
    <body>
    
    
    
        <h1>Admin news</h1>
    <h2>Modifica della presentazione</h2>
    
    
        <form  action="edit_presentazione.php"  method="post">
        Titolo: <input type="text" name="presentazione_titolo" size="30"><br />
        Testo:<br /><textarea name="presentazione_testo" id="presentazione_testo" cols="30" rows="10"></textarea><br />
         <input name="id"  type="hidden" value="<?php echo"$presentazione_id_list";?>" />
         <br /><input type="submit" name="edit" id="edit" value="Save Changes">
         </form>
    
    </div>
    
    
    
    </div><!--Fine del div wrapper-->
    </body>
    </html>
    
    

    Ho fatto i cambiamenti indicati ma non aggiorna ancola il contenuto del db


  • User

    Ciao, ci sono degli errori nel codice della query update.
    dove hai scritto:

    [PHP]
    $update_presentazione= @mysql_query ("UPDATE $tabella_presentazione SET
    presentazione_titolo = '$titolo',
    presentazione_testo = '$testo'
    WHERE presentazione_id='$id'") or die (mysql_error());
    [/PHP]

    Correggi così:
    [PHP]
    $update_presentazione= mysql_query ("UPDATE tabella_presentazione SET
    presentazione_titolo = '$titolo',
    presentazione_testo = '$testo'
    WHERE presentazione_id=$id") or die (mysql_error());
    [/PHP]

    Togli la chiocciola dalla funzione mysql_query per vedere se da errori, poi davanti al nome della tabella (verifica che sia corretto) c'era il simbolo del dollaro, va tolto. Inoltre alla fine $id non va tra virgolette perchè è un campo numerico (verifica che sia un intero nel db).


  • User Attivo

    Ciao l'uso del carattere $ è corretto perchè il nome della tabella reale è contenuto nella fariabile $tabella_presentazione, effettivamente la querry di update aveva un errore nella linea 4 quella che includeva il file sessione.php, quello è sistemato manca solo il form per l'edit della presentazione.

    Che da questo errore

    
    mysql_fetch_array() expects parameter 1 to be resource null given in **C:\xampp\htdocs\Sito_personale\amministrazione\mod_presentazione.php**  on line **63**
    [code]
    
    Codice della pagina mod_presentazione ( dalla linea 62 alla 70 )
    
    [code]
    <?php
    $id_presentazione=$_GET['presentazione_id']; // RECUPERA VARIABILE ID DA PAGINA PRECEDENTE
    $query=mysql_query("SELECT * FROM $tabella_presentazione where presentazione_id='".$id_presentazione["presentazione_id"]."'") or die(mysql_error())or die (mysql_error());
    $row = mysql_fetch_array($result) or die(mysql_error());
    ?>
    <div id="content">
        <h1>Admin news</h1>
    <h2>Modifica della presentazione</h2>
    
    
        <form  action="edit_presentazione.php"  method="post">
        Titolo: <input type="text" name="presentazione_titolo" size="30" <?php echo $row['presentazione_titolo']; ?><br />
        Testo:<br /><textarea name="presentazione_testo" id="presentazione_testo" cols="30" rows="10"><?php echo $row['presentazione_tetso']; ?></textarea><br />
         <input name="id"  type="hidden" value="<?php echo $row['presentazione_id'];?>" />
         <br /><input type="submit" name="edit" id="edit" value="Save Changes">
         </form>
    
    </div>
    
    

  • User

    Ok.
    C'è un errore, il risultato estratto dalla query lo metti nella variabile $query ma poi il fetch_array lo fai su $result, mentre dovresti farlo su $query.

    Correggi così:

    [PHP]
    $result=mysql_query("SELECT * FROM $tabella_presentazione where presentazione_id='".$id_presentazione["presentazione_id"]."'") or die(mysql_error())or die (mysql_error());
    $row = mysql_fetch_array($result) or die(mysql_error());
    [/PHP]

    E poi l'ID presentazione vedo che lo metti tra virgolette, nel DB è un campo stringa?


  • User Attivo

    Ciao sistemato ora nn c'è più l'errore ma non elabora l'update e non visualizza nel form il contenuto dei campi come titolo e testo relativi all'id passato come parametro...
    Cmq l'id no non è una stringa


  • User

    ok non essendo stringa la variabile ID va senza virgolette.
    Non ti da nessun errore?

    Postami il codice che do un'occhiata :fumato: