• User

    Comando "Modifica"

    Salve a tutti,
    ho creato un pannello admin dove ogni utente tramite la compilazione di una ventina di campi, ha la possibilità di visualizzarli in una pagina visualizza.php
    In questa pagina è possibile tramite il tasto "Cancella" eliminare la stringa di dati inserita.
    Volevo sapere come fare per creare il comando "Modifica" in modo tale da non cancellare tutta la stringa se si volesse modificare solo un campo.
    Vi posto il codice della pagina admin.php in cui si trova lo script della funzione "Cancella".

    Premessa:
    il pannello in questione sfrutta un file di testo utenti.txt per memorizzare i dati inviati dal form, non utilizza un database con tabelle.

    admin.php

    <?php
    $azione=$_GET["action"];
    $riga=$_GET["row"];
    if ($azione=='cancella') {

    $textfile = fopen("utenti.txt", "r"); 
    $textfile_new = fopen("utenti_new.txt", "a"); 
    
        while ($rigafile = fgets($textfile,1024))     { 
                            $campiriga = explode("|", $rigafile); 
                            $idriga = $campiriga[0]; 
                            
                            if ($idriga <> $riga) 
                                        { 
                                        fwrite($textfile_new, $rigafile); 
                                        } 
                                } 
    
                                fclose($textfile); 
                                fclose($textfile_new); 
    
                                unlink("utenti.txt"); 
                                rename("utenti_new.txt","utenti.txt"); 
    
                                echo "Cancellazione eseguita con successo<br>"; 
    
    $text_file = fopen("utenti2.txt", "r"); 
    $text_file_new = fopen("utenti_new2.txt", "a"); 
    
        while ($riga_file = fgets($text_file,1024))     { 
                            $campi_riga = explode("~:~", $riga_file); 
                            $id_riga = $campi_riga[0]; 
                            
                            if ($id_riga <> $riga) 
                                        { 
                                        fwrite($text_file_new, $riga_file); 
                                        } 
                                } 
    
                                fclose($text_file); 
                                fclose($text_file_new); 
    
                                unlink("utenti2.txt"); 
                                rename("utenti_new2.txt","utenti2.txt"); 
    
                                echo "<a href=pannello.php>Torna al pannello</a>"; 
                } 
    

    if ($azione=='modifica'){

    // codice per modificare... AIUTATEMI!!

    }

    ?>

    Grazie a tutti!!


  • User Attivo

    Avresti bisogno di un database per concretizzare e valorizzare meglio il lavoro.


  • User

    E ma non saprei come fare....non son buono con i db.....:x


  • User

    Ok sono riuscito a realizzare il tutto con un database mysql.

    Questo è il codice che utilizzo per il comando cancella:

    <?php

    $IDS = $_GET["id"];

    $con = mysql_connect("localhost","db_user","db_pass");
    if (!$con)
    {
    die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("db_name", $con);
    mysql_query("SET NAMES 'utf8'");

    mysql_query("DELETE FROM appuntamenti where id = $IDS ");

    mysql_close($con);
    ?>

    Appuntamento cancellato con successo <? echo $IDS ?></td>

    Per il comando Modifica come devo fare???
    Grazie


  • User Attivo

    Non devi fare altro che prendere la pagina del form di inserimento dei dati, es.: insert.php, copiarla rinominandola modifica.php.
    Nella pagina in cui cancelli gli appuntamenti (immagino sia un elenco in cui ogni riga ha un link cancella) creare un link modifica per passare la variabile, usata per cancellare, alla pagina modifica.php.
    Dopo aver passato la variabile estrapoli il record dal database ed il gioco è fatto.

    Spero sia stato chiaro altrimenti fatti risentire.
    Ciao.


  • User

    Innanzitutto grazie per la risposta!
    Credo di aver capito la logica comunque, il problema è che non so come fare il codice del comando "edita.php"
    Qualcosa ho fatto ma non mi funziona.
    Questo è il mio codice:

    cancella.php (che funziona perfettamente)
    <?php
    $IDS = $_GET["id"];
    $con = mysql_connect("localhost","db_user","db_pass");
    if (!$con)
    {
    die('Could not connect: ' . mysql_error());
    }
    mysql_select_db("db_name", $con);
    mysql_query("SET NAMES 'utf8'");
    mysql_query("DELETE FROM appuntamenti where id = $IDS ");
    mysql_close($con);
    ?>
    Appuntamento cancellato con successo <? echo $IDS ?></td>

    Nella pagina archivio.php ho la lista dei dati che ci sono nel database e per ogni stringa ho il link al comando cancella come descritto da te qui sopra.

    Ma il codice del comando edita non so come si faccia...:crying:


  • User

    Per il momento sono riuscito a mettere insieme questo:

    edita.php

    <?php

    session_start();

    $db = mysql_connect("localhost","db_user","db_pass");

    mysql_select_db("db_name",$db);

    $ora = $_POST["ora"];

    $sql = "SELECT * FROM appuntamenti WHERE ora = '$ora'";
    $controllo = mysql_query($sql);
    if (!$controllo){

    echo "Errore!";
    

    }
    else {

    $dati = mysql_fetch_object ($controllo);
    
    $_SESSION["id"] = $dati->id;
    
    echo "<html>";
    echo "<body>";
    echo "<form method = \"POST\" action = \"edita2.php\">";
    echo "<h1>Inserisci ID da modificare</h1><br />";
    //echo "ID: <input type = \"text\" name = id>".$dati->ID."><br />";
    echo "Ora: <input type = \"text\" name = ora>".$dati->ora."><br />";
    echo "Data: <input type = \"text\" name = data>".$dati->data."><br />";
    echo "Ragione: <input type = \"text\" name = ragione>".$dati->ragione."><br />";
    echo "<button type = \"submit\">Aggiorna</button>";
    

    }

    ?>

    edita2.php
    <?php

    session_start();
    
    $db = mysql_connect("localhost","db_user","db_pass");
    
    mysql_select_db("db_name",$db);
    
    //$id             =  $_POST["id"];
        $ora     =  $_POST["ora"];
        $data    =  $_POST["data"];
        $ragione     =  $_POST["ragione"];
    
    $id = $_SESSION["id"];
    
    echo $id;
    
    echo $ora."<br>".$data."<br>".$ragione;
    
    $query = "UPDATE appuntamenti SET ora = '$ora', data = '$data', ragione = '$ragione' WHERE id = '$id'";
    
    echo $query;
    
    $result = mysql_query($query,$db);
    

    ?>

    Solo che al posto di aggiornarmi i dati, rimangono identici a prima.


  • User Attivo

    1) Innnanzitutto edita un file, di solito nominato config.php,in cui scrivere il collegamento al database nonchè la connessione. In seguito questo file lo includerai in tutte le pagine in cui serve.
    Es.: <?php
    include("config.php");
    ?>

    2) La sessione $_SESSION["id"] = $dati->id; da dove si recupera?
    Secondo me manca un ciclo **while **per recuperare i dati racchiusi nella query. Possono essere molteplici.

    3) manca la chiusura del form, body e html.


  • User

    @mikslap said:

    1) Innnanzitutto edita un file, di solito nominato config.php,in cui scrivere il collegamento al database nonchè la connessione. In seguito questo file lo includerai in tutte le pagine in cui serve.
    Es.: <?php
    include("config.php");
    ?>

    2) La sessione $_SESSION["id"] = $dati->id; da dove si recupera?
    Secondo me manca un ciclo **while **per recuperare i dati racchiusi nella query. Possono essere molteplici.

    3) manca la chiusura del form, body e html.

    Ma facendo il processo di connessione al database senza per forza fare un include non è la stessa cosa?? (scusa l'ignoranza)
    2) è poprio il punto 2 il problema perchè non so come completare.
    Quando clicco aggiorna mi restituisce:
    UPDATE agenda SET ora = 'Prova1', data = 'Prova2', ragione = 'Prova3' WHERE id = ''