Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [php-mysql] Modifica

  1. #1

    [php-mysql] Modifica

    Salve a tutti!
    Ora spiego il problema.
    Ho due tabelle, una che contiene i dati di un utente registrato e una con dei testi.
    La tabella degli utenti ha questi capi: id; nick; mail; pw;tmppsw; scadtime; gruppo; stato.
    Mentre la tabella dei tasti è composta cosi: id; titolo; categoria, corpo; firma, private.

    Ora nella pagina privata ogni utente vede i propri testi elencati.

    La mia domanda è questa, voglio dare la possibilità di modificare un testo già presente nel db mettendo un bottone modifica sotto ogni testo visualizato, come faccio per selezionere dal db il testo che mi interessa??

    Non intendo dire come si fa la SELECT o per meglio dire UPDATE ma quale parametro passare affinchè mi faccia aggiornare solo un certo testo invece che un'altro...

    Magari è banale ma non solo riuscito a venirne fuori.
    Grazie
    Lordras

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    E' semplicissimo, ogni testo DOVREBBE avere un identificativo ed è sufficiente associare quell'identificativo al pulsante relativo sulla pagina.
    Da quello che hai postato però non si capisce se la tua tabella ce l'ha, perché quell'id potrebbe essere quello dell'utente. Se è così aggiungilo.

  3. #3
    Si la tabella dei testi ha un id.
    dinque il codice dovrebbe essere questo anche se non ne sono proprio sicuro...

    <form method="post" action="form_modifica.php">
    <input type="submit" name="modifica" value="1"/></form>"


    dove value è l'id del testo.

    Grazie mille
    Lordras

  4. #4
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Non proprio. Trattandosi di una gestione utenti molto probabilmente farai anche uso di sessioni. Quindi potresti memorizzare in una sessione l'ID che identifica il testo e passarlo alla query insieme al testo da modificare. Altrimenti puoi usare un campo nascosto nel form per passare l'ID del testo da modificare.

    Quando estrai i dati per le modifiche, con l'uso delle sessioni, avari una cosa tipo

    codice:
    $_SESSION['id_testo'] = $row['id'];
    
    //form...
    <textarea name="testo">$row['testo']</textarea>
    dove $row['id'] e $row['testo'] rappresentano i dati estratti relativi al testo. Per l'aggiornamento poi dovrai passare $_SESSION['id_testo'] alla query per specificare a quale testo fare riferimento per la modifica.

    codice:
    UPDATE tabella SET testo = $_POST['testo'] WHERE id = $_SESSION['id_testo']
    Se non disponi delle sessioni allora puoi usare un campo hidden per memorizzare l'ID del testo.

    codice:
    //form...
    
    <input type="hidden" name="id" value="$row['testo']" />
    <textarea name="testo">$row['testo']</textarea>
    Per l'aggiornamento vale lo stesso discorso di prima.

  5. #5
    Grazie mille Neida, si uso le sessioni (anche se devo approfondire il loro uso...) comunque per chiarezza posto qualche pezzo di codice (quello attuale):

    Pagine privata dell'utente dove visualizza la lista dei testi che ha inserito:
    Codice PHP:
    //inizializzo la sessione
    session_start();
    if (!isset(
    $_SESSION["Username"]))
    {
    header('location:access_deny.php');
    }
     include(
    "config.php");
     
    $nick $_SESSION["Username"];

    //Connessione al db ometto il codice
    //Estraggo i dati dal db
       
    $sql "SELECT id, titolo, corpo, firma, categoria, private FROM  $TableName WHERE firma='$nick'";
    // di seguito visualizzo il risultato della query
    while ($riga mysql_fetch_assoc($risultato)) {
           
    //Con urldecode decodifico i dati inseriti con urlencode
           //Con nl2br trasformo gli invii inseriti nel testo in "a capo"
          
           
    echo "<h5>"; echo nl2br(urldecode($riga["id"])); echo nl2br(urldecode($riga["titolo"])); echo "</h5>";
           echo 
    "

    "
    ; echo nl2br(urldecode($riga["corpo"])); echo "

    "
    ;
           echo 
    "Categoria: ".nl2br(urldecode($riga["categoria"])).""; echo "
    "
    ;
           echo 
    "Stato: ".nl2br(urldecode($riga["private"])).""; echo "</p>";
    // Qui metto un bottone modifica che mi manda alla pagina form_modifica.php
           
    echo"<form method=\"post\" action=\"form_modifica.php\"/>
           <input type=\"submit\" name=\"Submit\" value=\""
    ; echo "Modifica"; echo "\"/>";
           echo
    "</form>";
           echo
    "<div id='firma' class='testo'>";
            echo 
    nl2br(urldecode($riga["firma"])); echo "</div>

    "
    ;       
       }
       
    mysql_free_result($risultato); 
    form_modifica.php
    Codice PHP:
    <?php
    session_start
    ();
    if (!isset(
    $_SESSION["Username"]))
    {
    header('location:access_deny.php');
    }
     include(
    "config.php");
     
    $nick $_SESSION["Username"];
     
     
    //Connessione al db ometto il codice
     //Estraggo i dati dal db
       
    $sql "SELECT id, titolo, corpo, firma, categoria, private FROM  $TableName WHERE firma='$nick'";

       
    $risultato mysql_query($sql);

       if (!
    $risultato) {
           echo 
    "Fallimento nell'esecuzione della query ($sql) dal DB: " mysql_error();
           exit;
       }

       if (
    mysql_num_rows($risultato) == 0) {
           echo 
    "Non hai inserito ancora nessuna poesia";
           echo 
    "
     <a href=\"
    $p_u/form.php\">Inserisci una poesia ora...</a>";
           
    /* exit; */
       
    }

       
    // Finché esiste una riga di dati, si pone questa riga in $riga come un array associativo
       // Nota: Se ci si aspetta solo una riga, non è necessario usare un ciclo
       // Nota: Se si mette extract($riga); all'interno del seguente ciclo,
       //  si creeranno $titolo, $corpo, and $firma
       
       // Estrazione dati dall'array $risultato
       
    while ($riga mysql_fetch_assoc($risultato)) {
           
    //Con urldecode decodifico i dati inseriti con urlencode
           //Con nl2br trasformo gli invii inseriti nel testo in "a capo"
          
           
    echo "<h5>"; echo nl2br(urldecode($riga["id"])); echo"<form method=\"post\" action=\"update_db.php\"/>
           <input type=\"text\" name=\"titolo\" value=\""
    ; echo nl2br(urldecode($riga["titolo"])); echo "\"/>"
           echo 
    "</h5>";
           echo
    "<form method=\"post\" action=\"update_db.php\"/>
           <textarea cols=\"130\" rows=\"10\" name=\"corpo\">"
    ; echo $riga["corpo"]; echo"</textarea>"
           echo 
    "

    "
    ;
           echo 
    "Categoria: ".nl2br(urldecode($riga["categoria"])).""; echo "
    Modifica la tua categoria "
    ;
           echo
    "<form method=\"post\" action=\"update_db.php\">
                <select name=\"categoria\">
                    <option selected=\"selected\">Divertenti</option>
                    <option>Romantiche</option>
                    <option>Sensuali</option>
                    <option>Fantasy</option>
                    <option>Varie</option>
                </select>"
    ;
            echo 
    "

    "
    ;
           echo 
    "Stato: ".nl2br(urldecode($riga["private"]))."";echo "
    Modifica lo stato del tuo testo "
    ;
           echo 
    "<select name=\"private\">
                    <option selected=\"selected\">Pubblica</option>
                    <option>Privata</option>
                </select>"
    ;
                echo
    "
    <input type=\"submit\" name=\"Submit\" value=\"Invia nuovi dati\">        
        <input type=\"reset\" value=\"cancella i dati immessi\">
        </form>"
    ;
           echo 
    "<div id='firma' class='testo'>";
            echo 
    nl2br(urldecode($riga["firma"])); echo "</div>

    "
    ;       
       }
       
    mysql_free_result($risultato);?>
    update_db.php file che aggiorna la tabella dei testi
    Codice PHP:
    //inizializzo la sessione
    <?php
    session_start
    ();
    $_SESSION['id_testo'] = $_POST['id']; //lo ho aggiunto dopo il consiglio di neida
    if (!isset($_SESSION["Username"]))
    {
    header('location:access_deny.php');
    }
    //connessione al db ometto il codice
    //istruzione SQL di inserimento dati
    $MyVarSQL "UPDATE $TableName SET titolo = $_POST['titolo'] WHERE id = $id;";
    $MyQuery mysql_query($MyVarSQL,$conn//LINEA 41
    or die ("Query di selezione fallita Query di selezione fallita UPDATE MyVarSQL
    "
    );

    $MyVarSQL "UPDATE $TableName SET corpo = $_POST['corpo'] WHERE id = $id;";
    $MyQuery mysql_query($MyVarSQL,$conn)
    or die (
    "Query di selezione fallita Query di selezione fallita UPDATE MyVarSQL
    "
    );
    ..... 
    //devo fare cosi per tutti i campi o ce un sistema migliore
    Il file update_db.php è da mettere a posto ma lo ho postato lo stesso per dare un'idea della situazione.
    Ora faccio un pò di prove sulla base di quello che mi avete suggerito e poi posto i risultati, o speriamo di no, altri problemi....

    Comunque attualmente ricevo qst errore dalla pagina update.php:
    Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/catodene/public_html/dellantonio/update_db.php on line 41

    Al momento ho un po di confusione... ma ci devo lavorare un po su.
    Grazie di tutto
    Lordras

  6. #6
    Ho risolto in questo modo:

    Pagina privata utente
    Codice PHP:
    //sessione
    session_start();
    if (!isset(
    $_SESSION["Username"]))
    {
    header('location:access_deny.php');
    }
     include(
    "config.php");
     
    $nick $_SESSION["Username"];
    ...
    //questa la select
    ...$sql "SELECT id, titolo, corpo, firma, categoria, private FROM  $TableName WHERE firma='$nick'";...
     while (
    $riga mysql_fetch_assoc($risultato)) {
              echo 
    "<h5>";
            echo 
    nl2br(urldecode($riga["id"])); echo nl2br(urldecode($riga["titolo"])); echo "</h5>";
            echo 
    "

    "
    ; echo nl2br(urldecode($riga["corpo"])); echo "

    "
    ;
            echo 
    "Categoria: ".nl2br(urldecode($riga["categoria"])).""; echo "
    "
    ;
            echo 
    "Stato: ".nl2br(urldecode($riga["private"])).""; echo "</p>";
            
    $id nl2br(urldecode($riga["id"]));
            echo
    "<form method=\"post\" action=\"form_modifica.php\"/><input type=\"submit\" name=\"Submit\" value=\""; echo "Modifica"
            echo 
    "\"/>";echo"</form>";
            echo
    "<form method=\"post\" action=\"delete_db.php\"/><input type=\"submit\" name=\"Cancella\" value=\""; echo "Cancella"
            echo 
    "\"/>";echo"</form>";
            echo
    "<div id='firma' class='testo'>";
            echo 
    nl2br(urldecode($riga["firma"]));
            echo 
    "</div>

    "
    ;... 
    form_modifica.php
    Codice PHP:
    session_start();
    $_SESSION['id_testo'] = $_POST['id'];
    if (!isset(
    $_SESSION["Username"]))
    {
    header('location:access_deny.php');
    }
    include(
    "config.php");
    $nick $_SESSION["Username"];...
     
    //Estraggo i dati da ldb
       
    $sql "SELECT id, titolo, corpo, firma, categoria, private FROM  $TableName WHERE id ='$id'";

       
    $risultato mysql_query($sql);
    //definisco id del testo e spedisco il tutto a update_db.php
    echo "<h5><form method=\"post\" action=\"update_db.php\"/>
           <input type=\"hidden\" name=\"id\" value=\""
    ; echo nl2br(urldecode($riga["id"])); echo "\"/>";
    echo
    "
    <input type=\"submit\" name=\"Submit\" value=\"Invia nuovi dati\">        
        <input type=\"reset\" value=\"cancella i dati immessi\">
        </form>"
    ;.... 
    update_db.php
    Codice PHP:
    session_start();
    $_SESSION['id_testo'] = $_POST['id'];
    if (!isset(
    $_SESSION["Username"]))
    {
    header('location:access_deny.php');
    }
    include(
    "config.php");....
    //collegamento tra form html variabile _post per invio dati al DB
    $id$_SESSION['id_testo'];
    $titolo$_POST['titolo'];
    $corpo$_POST['corpo'];
    $firma$_SESSION["Username"];
    $categoria$_POST['categoria'];
    $private$_POST['private'];

    // istruzione SQL di modifica dati
    $sql "UPDATE $TableName SET categoria = '$categoria', titolo = '$titolo', corpo = '$corpo' , private = '$private' WHERE id = '$id' LIMIT 1; ";
    $MyQuery mysql_query($sql,$conn).... 
    Grazie dell'aiuto.
    A presto.
    Lordras

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.