Visualizzazione dei risultati da 1 a 10 su 10

Discussione: modifica in campo file

  1. #1

    modifica in campo file

    Buongiorno a tutti,
    ho un problema che non riesco a risolvere, vorrei fare questa operazione, ho una tabella utenti con i seguenti campi
    id
    nome
    testo
    foto
    curriculum

    ora quando vado a richiamare i valori inseriti nel db per la modifica uso questa query

    $query = "SELECT * FROM utenti WHERE id = '".$_GET['id']."'";
    $result = mysql_query ($query, $db);
    $row = mysql_fetch_array ($result);

    $id = $row['id'];
    $nome = $row['nome'];
    $testo = $row['testo'];
    $foto = $row['foto'];
    $cv = $row['curriculum'];

    echo"
    <form method=\"post\" action=\"editutenti.php?id=$id\" enctype=\"multipart/form-data\" name=\"input_form\">
    ....
    <input type=\"text\" name=\"nome\" value=\"$nome\" />
    <textarea cols=\"70\" rows=\"3\" wrap=\"VIRTUAL\" name=\"testo\" >$teso</textarea>
    <input type=\"file\" name=\"foto\" value=\"$foto\" />
    .....
    <input type=\"submit\" value=\"Modifica\">
    ...

    quello che vorrei fare con il campo foto è richiamare il valore contenuto nel db utenti nel campo foto che è un campo testo, e se voglio modificare la foto poterlo fare allegandone una nuova oppure mantenere quella corrente e modificare solo il campo nome o testo per esempio.

    ma quando vado a fare la modifica se non allego nulla mi cancella il valore foto salvato nel db
    la query per la modifica che uso è questa

    $query = "UPDATE utenti SET nome = '$_POST[nome]', testo = '$_POST[testo]', foto= '" . $_FILES["foto"]["name"] . "', ..... WHERE id = '$_POST[id]'";

    poi faccio l'upload del file immagine con un altro script

    come posso evitare che non mi cancelli il valore salvato nel campo foto se voglio modificare solo gli altri campi?

  2. #2
    Puoi provare ad eseguire questa query, in base al campo da modificare, per ogni value di input che risulta diverso a quello presente nel database:

    codice:
    UPDATE nome_tabella SET nome = nuovo_valore WHERE ...
    P.S.: Nel tuo form non vedo dichiarato l'input id che richiami con $_POST[id] , nel where della query, guardando l'action del form, forse intendevi scrivere $_GET[id]?

  3. #3
    si non l'ho trascritto prima, lo passo tramite hidden
    la query di modifica funziona per gli altri campi l'unico è il campo file che se non carico nulla mi cancella quello che c'è se invece carico un nuovo file funziona e sostituisce il vecchio


    echo"
    <form method=\"post\" action=\"editutenti.php?id=$id\" enctype=\"multipart/form-data\" name=\"input_form\">
    ....
    <input type=\"hidden\" name=\"id\" value=\"$id\">
    <input type=\"text\" name=\"nome\" value=\"$nome\" />
    <textarea cols=\"70\" rows=\"3\" wrap=\"VIRTUAL\" name=\"testo\" >$teso</textarea>
    <input type=\"file\" name=\"foto\" value=\"$foto\" />
    .....
    <input type=\"submit\" value=\"Modifica\">
    ...

    credo che il problema sia quì ma non so come modificarlo
    foto= '" . $_FILES["foto"]["name"] . "' per mantenere lo stesso valore

    $query = "UPDATE utenti SET nome = '$_POST[nome]', testo = '$_POST[testo]', foto= '" . $_FILES["foto"]["name"] . "', ..... WHERE id = '$_POST[id]'";

  4. #4
    Pensavo che
    inserendo $foto nel
    <input type=\"file\" name=\"foto\" value=\"$foto\" />
    come per il resto dei campi del form, anche questo potesse riportare le informazioni precedenti nella pagina di modifica.
    Non capisco perchè non funziona, è possibile che non esista un modo per evitare ogni volta di riandare a selezionare l'allegato? se uno volesse solo entrare per modificare solo il campo del nome si vedrebbe costretto a rimettere anche il percorso dell'allegato...

  5. #5
    Beh... puoi impostare una condizione: se l'array $_FILES è vuoto, allora non fai l'update del campo della foto, altrimenti recuperi le informazioni del file e le salvi nel DB.

    Io di solito lavoro con $_FILES['nome_variabile_input']['error'].
    Se l'errore ha valore 0 allora il file è stato caricato senza intoppi e procedo all'update, altrimenti non faccio operazioni.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  6. #6
    ciao grazie del consiglio ho provato a fare così e funziona
    ma io ho 2 campi file la foto e il curriculum, come posso fare in queso caso?

    if ($_FILES['foto']['error'] == 0)
    {
    //mi connetto a mysql
    $db = mysql_connect($db_host, $db_user, $db_password) or die ("Connessione al database non riuscita");
    mysql_select_db($db_name, $db) or die ("Selezione del database non riuscita");

    $query = "UPDATE utenti SET nome = '$_POST[nome]', testo = '$_POST[testo]', foto= '" . $_FILES["foto"]["name"] . "', cv= '" . $_FILES["cv"]["name"] . "', WHERE id = '$_POST[id]'";

    if (mysql_query($query, $db)) {

    echo "
    utente ID $_POST[id] modificato con successo!";

    }} else {

    //mi connetto a mysql
    $db = mysql_connect($db_host, $db_user, $db_password) or die ("Connessione al database non riuscita");
    mysql_select_db($db_name, $db) or die ("Selezione del database non riuscita");

    $query = "UPDATE utenti SET nome = '$_POST[nome]', testo = '$_POST[testo]', cv= '" . $_FILES["cv"]["name"] . "', WHERE id = '$_POST[id]'";

    if (mysql_query($query, $db)) {

    echo "
    utente ID $_POST[id] modificato con successo!";
    }
    else {

    echo "Errore durante la modifica";
    }

  7. #7
    I due campi FILE avranno due ID e NAME diversi, spero!
    Ti basta fare così:
    Codice PHP:
    /* 
    QUESTO È QUELLO CHE HAI NELLA FORM (più o meno)

    <input type="file" id="nome_variabile_input_UNO" id="nome_variabile_input_UNO" />
    <input type="file" id="nome_variabile_input_DUE" id="nome_variabile_input_DUE" />
    */

    if ($_FILES['nome_variabile_input_UNO']['error'] == 0) {
       
    // blocco di codice
    } else { 
       
    // altro blocco di codice
    }


    if (
    $_FILES['nome_variabile_input_DUE']['error'] == 0) {
       
    // blocco di codice
    } else { 
       
    // altro blocco di codice

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  8. #8
    Se per curriculum poi intendi un file di tipo testuale, allora avrai 3 campi file: due per le immagini (foto della persona suppongo), una per il file di testo.

    Nell'array $_FILES c'è anche l'attributo TYPE per intercettare il tipo MIME del file.
    Puoi anche usare per capire che tipo di file stanno caricando nel tuo sito, bloccare l'invio di tipi di file non accettati dal sistema e cose simili.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  9. #9
    no si tratta di un campo file è un allegato in questo caso come risolvo?

  10. #10
    Originariamente inviato da paolino.marchi
    no si tratta di un campo file è un allegato in questo caso come risolvo?
    Non ho capito cosa intendi!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.