• User

    Modificare un record già inserito

    Salve a tutti, ho un problema e lo sottopongo alla Vostra esperienza.
    Devo modificare un record, nessun problema con il cambio del singolo campo, ma diventa un problema se la scelta deve essere fatta su più campi dello stesso record (casuali) compresa l'imagine.
    Per meglio spiegarmi:
    Dalla lettura della tabella scelgo il record riportandomi nel link i valori
    record.php?id=$id&password=$password
    questo mi porta al form di modifica per il record indicato
    Questo il codice del FORM
    <div align='center'>
    <TABLE cellSpacing=0 cellPadding=0 width=70% height=70% border=0>
    <tr><td>
    <h3 align='center'>REDAZIONE SPORTIVA<br>
    MODULO INSERIMENTO ARTICOLO</h3>
    <hr>
    <table width='41%' border='0' align='center' height='337'>
    <?php
    echo " Autore $autore Numero Articolo $id Password Utente $password "; ?>
    <form enctype='multipart/form-data' action='insert_mod_art.php' method='post'>

            <tr>
              <td width='31%'><b>TITOLO</b>:</td>
              <td width='69%'>
                <textarea rows='2' name='titolo' cols='50'></textarea>
              </td>  </tr>
    

    <tr>
    <td width='31%'><b>SOTTO TITOLO</b>:</td>
    <td width='69%'><textarea rows='3' name='sub_titolo' cols='50'></textarea>
    </td></tr></tr>
    <tr>
    <td width='31%'>Categoria:</td>
    <td width='69%'>
    <select name='categoria'>
    <option value=0>--------------------------------------------</option>
    <option value=1>Arti marziali</option>
    <option value=2>Atletica</option>
    <option value=3>Automobismo</option>
    <option value=4>A_I_C_S</option>
    <option value=5>Calcio</option>
    <option value=6>Ciclismo</option>
    <option value=7>C O N I</option>
    <option value=8>Panathlon</option>
    <option value=9>Ginnastica</option>
    <option value=10>Nuoto</option>
    <option value=11>Pallacanesto</option>
    <option value=12>Pallamano</option>
    <option value=13>Pallanuoto</option>
    <option value=14>Pallavolo</option>
    <option value=15>Scherma</option>
    <option value=16>Sport Scuola</option>
    <option value=17>Tennis</option>
    <option value=18>Tennis Tavolo</option>
    <option value=19>Altri Sports</option>
    </select> </td> </tr>
    <tr> <td colspan='2'>
    <p><b><font size='4'>Testo dell' Articolo:
    </font></b>
    <p>
    <textarea cols='75' rows='5' name='testo'></textarea>
    </td> </tr>
    <tr>
    <td width='31%'>* <b>URL Immagine</b>:</td>
    <td width='69%'>
    <input type='file' name='userfile' value='Invia file'>
    </td> </tr>
    <tr> <td colspan='2' align='center'>
    <font color='#FF0000'><b>L'immagine non deve superare i 400 x
    400 pixel ed un peso MAX di 80 Kb</b></font></td>
    <tr> <td colspan='2' align='center'>
    <input TYPE = "hidden" name= "id" value = "$id">
    <input type='submit' value= 'OK' name='submit'>
    <input type='reset' value='Cancella' name='reset'>
    </td>
    </form>
    </table><hr> </td> </tr></table></div>

    ======================================================

    Questo il codice della pagina di modifica

    <div align="center">
    <TABLE cellSpacing=0 cellPadding=0 width=700 border=0>
    <tr>
    <td><h3 align="center">Redazione Sportiva</h3><hr><br>
    <?php
    echo "$id e $password <br>";
    include "upload.php";
    if ($cod_err == '1'){
    echo "<table align=center><tr><td> $msg - Torna indietro e controlla i tuoi dati</td></tr>";
    echo "<tr><td align=center><INPUT TYPE=button VALUE=Indietro onClick=history.back() align=center></td></tr></table>";
    exit;
    }
    $cat=array("","Arti Marziali","Atletica","Automobilismo","A_I_C_S","Calcio","Ciclismo","C_O_N_I","Panathlon","Ginnastica","Nuoto","Pallacanestro","Pallamano","Pallanuoto","Pallavolo","Scherma","Sport Scuola","Tennis","Tennis Tavolo","Altri Sports");
    if ((strlen($titolo)<2)||(strlen($sub_titolo)<2)||($categoria==0)||(strlen($testo)<2) ){
    echo "<table align=center><tr><td>I dati inseriti non sono validi! Torna indietro e controlla i tuoi dati</td></tr>";
    echo "<tr><td align=center><INPUT TYPE=button VALUE=Indietro onClick=history.back() align=center></td></tr></table>";
    exit;
    }
    $db=mysql_connect("xx.xxx.xxx.xx", "xxxxxxxxx", "xxxxxxxx");
    $comando="UPDATE redazione SET (titolo = $titolo, categoria = $categoria, sub_titolo = $sub_titolo, testo = $testo WHERE (id ='$id') ";

    mysql_db_query("Sqlxxxxx_2",$comando);

    $ultimo_id='mysql_insert_id(); //valore di foto_id dopo l'inserimento
    echo " <br>Record num - $ultimo_id - $id <br>"; //valore di foto_id dopo l'inserimento
    $file_temp=($_FILES['userfile']['tmp_name']); //file temporaneo che contiene l'immagine caricata
    $percorso="../../public/img_sport/"; //cartella sul server dove verrà spostata la foto
    $nuovo_nome=$percorso.$ultimo_id.".jpg";
    echo "$nuovo_nome"; //nuovo nome dell'immagine
    $inviato=file_exists($file_temp); //verifica se il file è stato caricato sul server
    if ($inviato) {move_uploaded_file($file_temp,$nuovo_nome);
    //header("Location:../index.php"); // sposto l'immagine nella cartella e vado alla pagina di visualizzazione
    } else {
    header("Location:Errore.php"); // vado alla pagina di errore
    }
    echo "$id $password Il messaggio verrà inserito al più presto! Grazie.<p>";
    mysql_close($db);
    echo "<p align=center><a href=../registrazione/control_reg.html>RITORNA AL PANNELLO DI AMMINISTRAZIONE!</a><p>";
    ?>
    <hr></td></tr></table></div>

    =======================================================0

    Questo il problema:
    vorrei poter modificare uno o più campi senza cancellare i valori di quelli non modificati, sostituire l'immagine vecchia con quella nuova.

    Chiedo troppo ???? o devo fare le modifiche singolarmente????

    Vi ringrazio anticipatamente


  • User Attivo

    Puoi usare
    [PHP]mysql_query("UPDATE nometabella SET campo1 = '$campo1', campo2 = '$campo2' WHERE id = '$id' AND password = '$password'");[/PHP]


  • User Attivo

    Ciao.
    Ti devo dire che inviando l'id devi recuperare i valori per assegnarglieli ai campi del form per poi inviarli e processarli in mancanza di ciò non conterrebbero nulla. Se ciò è stato già fatto non ho interpretato bene il tuo post.
    Per quanto riguarda l'immagine hai la possibilità di uploadare semplicemente la nuova, con una semplice funzione, oppure di cancellare la vecchia per mettere la nuova.
    Magari preparo un semplice form completo anche di controlli e te lo posto.
    Ci sentiamo


  • User

    Ciao e prima di tutto grazie per l'attenzione.
    Hai centrato l'argomento in pieno, non tiesco a passare l' id ed anche se non mi restituisce nessun errore non modifica nulla.
    Ti elenco in ordine le cose che non riesco a fare:

    1 passare l' id ( dal link dove individuo il record da modificare arriva fino al form ma non passa nella pagina insert;

    2 modificare solo un campo a mia scelta tra quelli del form (o tutti oppure qulli che non modifico li azzera);

    3 non so se il listato per l'immagine riconoscendo l' id mi sostituisce la foto con lo stesso numero di id.

    Sarei felicissimo se tu potessi sistemarlo, è da quattro giorni che mi ci bisticcio.

    Ti ringrazio ancora
    A.G.


  • User

    Allora, il punto 1 ed il punto 3 li ho risolti autonomamente........
    mi servirebbe un aiutino solo per il punto 2
    Grazie


  • User Attivo

    Ti ricordo che, una volta arrivata la variabile via GET dell'ID, il file elabora tutto in se stesso con action $_SERVER['PHP_SELF'].
    Contiene, credo che vada tutto bene, i controlli necessari ad aggiornare correttamente tutto.
    Copiato ed incollato così genererebbe errori in quanto mancherebbe la tabella relativa alle categorie, cui ho scritto tutto il codice necessario.
    **
    ECCO IL CODICE**

    <div align='center'>
    <h3 align='center'>REDAZIONE SPORTIVA<br>
    MODULO AGGIORNAMENTO ARTICOLO</h3>
    <hr>
    <table width='41%' border='0' align='center' height='337'>
    <?php
    if (isset($_POST['submit'])) // SE VIENE PREMUTO IL TASTO INVIA - submit NOME CAMPO
    {
    if ((!$_POST['titolo']) || ($_POST['titolo'] == "") OR
    (!$_POST['sub_titolo']) || ($_POST['sub_titolo'] == "") OR
    (!$_POST['testo']) || ($_POST['testo'] == ""))
    {
    echo "Compilare i campi obbligatori<br><br><A href="javascript:history.back()">Torna indietro.</A>";
    }
    else
    {
    $X_ID = $_POST['id'];
    $X_TITOLO = $_POST['titolo'];
    $X_SUBTIT = $_POST['sub_titolo'];
    $X_CAT = $_POST['categoria'];
    $X_TESTO = $_POST['testo'];
    $X_IMG = $_POST['img']; // VALORE RESO DAL CONTROLLO

        // NOME CAMPO FORM IMMAGINE
        $img_up_name1 = "userfile";
        $foto_1 = $_FILES[$img_up_name1] ['name']; // NOME DELL'IMMAGINE
        $img_name_dir = "../fotodirnot"; // DIRECTORY DESTINAZIONE ESISTENTE - PREVEDENDO CHE MI RITROVO NELLA PARTE AMMINISTRATIVA
                                         // SCALO DI UNA DIRECTORY DESTINANDO L'IMMAGINE IN fotodirnot
        $img_max_size = 800000; // DIMENSIONE MASSIMA DEL FILE
        
        function funz_uploader1($img_up_name1, $img_max_size, $img_name_dir) 
            {
            $img_size1 = $_FILES[$img_up_name1] ;   // controlla la dimensione dell'immagine
            $nome_img1 = $_FILES[$img_up_name1] ['name'];   // controlla il nome dell'immagine
                
            $img_split1 = explode(".",$nome_img1);     // verifica il tipo di estensione del file, controllando
            $estensione1 = array_pop($img_split1);     // le ultime lettere dopo l'ultimo punto
                
            if (is_uploaded_file($_FILES[$img_up_name1] ['tmp_name'])) // controlla se il file è stato caricato dal form
                {  
                 if ($img_size1 <= $img_max_size) 
                   {
                    // verifica se i file da caricare sono immagini
                    if ($estensione1 == "jpg" OR $estensione1 == "gif" OR $estensione1 == "GIF" OR $estensione1 == "jpeg" OR $estensione1 == "JPEG" OR 
                        $estensione1 == "JPG" OR $estensione1 == "PNG" OR $estensione1 == "png") 
                    {
                    // sposta il file caricato
                    @move_uploaded_file($_FILES[$img_up_name1] ['tmp_name'], "$img_name_dir/$nome_img1")
                    or die ("Impossibile spostare il primo file. <A href=\"javascript:history.back()\">Torna indietro.</A>");
                    $f_1 = 0; //echo "Primo file caricato con successo.<br>";  // se il file è stato caricato
                    }
                    else
                        {
                        $f_1 = 1;
                        //echo "Il primo file non puo' essere caricato sul server.<br>";      // se il file non è stato caricato
                        }
                   }
                   else
                      {
                      $f_1 = 1;
                      //echo "Il primo file è troppo grande per essere caricato.<br>";   // se il file è troppo grande
                      }
                   }
                   else
                      {
                      $f_1 = 1;
                      //echo "Non riesco a caricare il primo file sul server.<br>";     // se non riesce a caricare il file
                      }
                } // CHIUDO FUNZIONE
                
                if ($X_IMG == 1)
                    {
                    // SELEZIONO IL NOME DELL'IMMAGINE ESISTENTE PER CANCELLARLA
                    $SELIMG = "SELECT userfile FROM redazione WHERE id='$X_ID'";
                    $QIMG = mysql_query($SELIMG,$CONN);
                    $OBJIMG = mysql_fetch_object($QIMG);
                    $USERFILE = ($OBJIMG->userfile);
                    $IMG_DIR = "../fotodirnot/" . $USERFILE;
                    if (is_file($IMG_DIR)) // RIPETO IL CONTROLLO FATTO NEL FORM PER ESSERE SICURI SE ESISTE L'IMMAGINE
                        {
                        unlink($IMG_DIR); // CANCELLO L'IMMAGINE
                        }
                    if ($foto_1 != "") // AVVIO LA FUNZIONE SE ARRIVA UN VALORE AL CAMPO userfile
                        {
                        funz_uploader1($img_up_name1, $img_max_size, $img_name_dir); // 1
                        if ($f_1 == 1) 
                            {
                            $foto_1 = ""; 
                            }
                        // INSERIMENTO DATI NEL DATABASE
                        $UPDATE = "UPDATE redazione SET titolo='$X_TITOLO', categoria='$X_CAT', sub_titolo='$X_SUBTIT', testo='$X_TESTO'
                                   userfile='$foto_1' WHERE id='$X_ID'";
                        mysql_query($UPDATE,$CONN) or die (mysql_error());
                        }
                    else
                        {
                        // INSERIMENTO DATI NEL DATABASE
                        $UPDATE = "UPDATE redazione SET titolo='$X_TITOLO', categoria='$X_CAT', sub_titolo='$X_SUBTIT', testo='$X_TESTO'
                                   WHERE id='$X_ID'";
                        mysql_query($UPDATE,$CONN) or die (mysql_error());
                        }
                    }
                else
                    {
                    if ($foto_1 != "") // AVVIO LA FUNZIONE SE ARRIVA UN VALORE AL CAMPO userfile
                        {
                        funz_uploader1($img_up_name1, $img_max_size, $img_name_dir); // 1
                        if ($f_1 == 1) 
                            {
                            $foto_1 = ""; 
                            }
                        // INSERIMENTO DATI NEL DATABASE
                        $UPDATE = "UPDATE redazione SET titolo='$X_TITOLO', categoria='$X_CAT', sub_titolo='$X_SUBTIT', testo='$X_TESTO'
                                   userfile='$foto_1' WHERE id='$X_ID'";
                        mysql_query($UPDATE,$CONN) or die (mysql_error());
                        }
                    else
                        {
                        // INSERIMENTO DATI NEL DATABASE
                        $UPDATE = "UPDATE redazione SET titolo='$X_TITOLO', categoria='$X_CAT', sub_titolo='$X_SUBTIT', testo='$X_TESTO'
                                   WHERE id='$X_ID'";
                        mysql_query($UPDATE,$CONN) or die (mysql_error());
                        }
                    }
                
                echo "AGGIORNAMENTO ESEGUITO CORRETTAMENTE";
        }
    }
    

    else
    {
    $ID = $_REQUEST['id']; // ID NOTIZIA PASSATO TRAMITE LINK
    // MI RICAVO LE INFORMAZIONI DAL DATABASE
    $SEL = "SELECT * FROM redazione WHERE id='$ID'";
    $QUE = mysql_query($SEL,$CONN);
    $OBJ = mysql_fetch_object($QUE);
    $TITOLO = ($OBJ->titolo);
    $SUBTITOLO = ($OBJ->sub_titolo);
    $ID_CAT = ($OBJ->categoria); // CREDO SI TRATTI DI UN CAMPO DEL DATABASE DI TIPO "INT" - NUMERICO
    $TESTO = ($OBJ->testo);
    $USERFILE = ($OBJ->userfile);
    $DIR_IMG = "../fotodirnot/" . $USERFILE; // RESIDENZA E NOME IMMAGINE
    if (is_file($DIR_IMG)) // CONTROLLO CHE ESISTA L'IMMAGINE
    {
    $IMG = 1; // SE ESISTE VALORE UNO
    }
    else
    {
    $IMG = 0; // ALTRIMENTI ZERO
    }
    // QUEST'ULTIMA VARIABILE VA MESSA IN UN CAMPO NASCOSTO

    ?>
    <form enctype='multipart/form-data' action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post'>
    <tr>
    <td width='31%'><b>TITOLO</b>:</td>
    <td width='69%'>
    <textarea rows='2' name='titolo' cols='50'><?php echo $TITOLO; ?></textarea>
    </td> </tr>
    <tr>
    <td width='31%'><b>SOTTO TITOLO</b>:</td>
    <td width='69%'><textarea rows='3' name='sub_titolo' cols='50'><?php echo $SUBTITOLO; ?></textarea>
    </td></tr></tr>
    <tr>
    <td width='31%'>Categoria:</td>
    <td width='69%'>
    <select name='categoria'>
    <?php
    // QUI TI CONSIGLIO DI METTERE LE CATEGORIE IN UNA TABELLA DIFFERENTE IN MODO DA ELENCARLE TUTTE E POTERCI FARE QUALCHE CONTROLLO
    // ES.: TABELLA: categorie - CAMPI: id, INT 11, AUTOINCREMENT - nomecategoria, VARCHAR 100
    $CAT1 = "SELECT * FROM categorie WHERE id='$ID_CAT'"; // QUI SELEZIONO IL NOME DELLA CATEGORIA PER VISUALIZZARLO NELLA OPTION SELECTED
    $QCAT1 = mysql_query($CAT1,$CONN);
    $OBJ_C1 = mysql_fetch_object($QCAT1);
    $NOMECAT = ($OBJ_C1->nomecategoria); // IL NOME DELLA CATEGORIA
    ?>
    <option selected value="<?php echo $ID_CAT; ?>"><?php echo $NOMECAT; ?></option>
    <?php
    $CAT2 = "SELECT * FROM categorie WHERE id!='$ID_CAT' ORDER BY nomecategoria ASC"; // QUI LA SELEZIONE DELLE OPTION CON UN CICLO WHILE ESCLUDENDO LA CATEGORIA IN USO
    $QCAT2 = mysql_query($CAT2,$CONN);
    while(($OBJ_C2 = mysql_fetch_object($QCAT2)))
    {
    $IDX = ($OBJ_C2->id);
    $NOMECAT2 = ($OBJ_C2->nomecategoria); // IL NOME DELLA CATEGORIA
    echo "<option value='$IDX'>$NOMECAT2</option>"; // COME VEDI IL VALORE E' DI TIPO NUMERICO MENTRE SI VISUALIZZA IL NOME
    }
    ?>
    </select> </td> </tr>
    <tr> <td colspan='2'>
    <p><b><font size='4'>Testo dell' Articolo:
    </font></b>
    <p>
    <textarea cols='75' rows='5' name='testo'><?php echo $TESTO; ?></textarea>
    </td> </tr>
    <tr>
    <td width='31%'>* <b>URL Immagine</b>:</td>
    <td width='69%'>
    <input type='file' name='userfile' value='Invia file'>
    </td> </tr>
    <tr> <td colspan='2' align='center'>
    <font color='#FF0000'><b>L'immagine non deve superare i 400 x
    400 pixel ed un peso MAX di 80 Kb</b></font></td>
    <tr> <td colspan='2' align='center'>
    <input type="hidden" name="id" value="<?php echo $ID; ?>">
    <input type="hidden" name="img" value="<?php echo $IMG; ?>">
    <input type='submit' value='aggiorna' name='submit'>
    <input type='reset' value='ripristina' name='reset'>
    </td>
    </form>
    <?php
    }
    ?>
    </table><hr></div>


  • User

    Gentilissimo MIKSLAP non so come ringraziarti, la tua disponibilità è veramente lodevole.
    Sicuramente lo userò, anche se impiegherò qualche giorno per studiarlo, penso avrai capito dal listato che ho postato le qualità delle mie conoscenze, anzi ad essere sincero riesco solo a modificare ma non ho conoscenza di php.
    Sicuramente ti invidio e vorrei qalcuno come te al mio fianco per gestire il mio sito che è ricco di idee, ma povero di programmazione. :mmm:
    Anzi se potessi darti l'url in privato, non vorrei fare inutile pubblicità, mi farebbe molto piacere avere un tuo parere.

    Non so se nel listato che mi hai mandato c'è la possibilità di modificare indifferentemente uno o più campi (cercherò di capirlo nella fase di studio).

    Nuovamente grazie
    A.G.


  • User Attivo

    Da principio.
    1 - Al file in questione non deve arrivare altro che l'ID, via GET, mandato dalla lista cui fai riferimento.
    2 - Devi creare una tabella, nominata categorie con due campi id e nomecategoria, descritti nel mezzo, per poi inserire manualmente le categorie interessate.
    3 - Non devi fare altro che sperimentarlo.
    Ti ricordo che il campo categoria nella tabella **redazione **deve essere di tipo INT in quanto arriva come valore l'id della categoria non il nome (funziona lo stesso ma si sprecano risorse per un confronto futuro).

    .......... e fa tutto quello che desideri tu