Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    70

    valore null --- campo file

    ciao a tutti,
    ho creato un campo file per caricare una foto sul sito personale. nella pagina di rinvio mi crea il percorso che inserisce nel db e fa l'upload della foto nella cartella "foto".

    nel form

    <td bgcolor="#0033CC"><input name="userfile" type="file"></td>

    nella pagina di elaborazione

    <?
    $id_doc=$_REQUEST['id_amico'];
    $nome= $_REQUEST['nome'];

    $file_temp= $_FILES['userfile']['tmp_name'];
    //file temporaneo che contiene l'immagine caricata

    $nome1 = $_FILES['userfile']['name'];

    $percorso="foto/";
    //cartella sul server dove verrà spostata la foto

    $foto = $percorso.$nome1 ;

    if (move_uploaded_file($file_temp, $percorso . $nome1))
    {
    print "foto caricata";
    }
    else
    {
    print "Si sono verificati dei problemi durante l'Upload";
    }



    $query2="UPDATE amici SET nome='$nome', foto='$foto'
    WHERE id_amico='$id_amico'";

    if(mysql_query($query2))
    {
    echo "Modificato" .$query2;
    } else {
    echo mysql_error();
    exit();
    }
    ?>


    mi viene un dubbio però......
    se il percorso è già presente, cliccando sfoglia lui mi sovrascribve il nuovo percorso....
    ma se io non seleziono con sfoglia un nuovo percorso, in teoria mi elabora il campo vuoto in bianco, quindi mi cancella l'eventuale percorso già esistente della foto. ad esemopio se cambio solo il campo nome.

    soluzioni???? grazie

  2. #2
    Beh, mettici un controllo sul nome del file caricato. Se è diverso da "" farai un update che altera solo il nome dell'amico.

    PS ma il campo id_amico è numerico o VARCHAR ? perché se è un numero, come il nome sembra indicare, stai usando la sintassi sbagliata, non ci vogliono ' ' attorno

  3. #3
    di norma è così: crea un nuovo record tutto bianco con solo il campo percorso file scritto...se vuoi sovrascrivere il file ti basta fare un controllo che faccia un UPDATE invece id un INSERT

  4. #4
    Penso che shira intendesse, che quando fa l'upload di un file con lo stesso nome, vada a sovrascrivere quello precedente

  5. #5
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Originariamente inviato da artorius
    Beh, mettici un controllo sul nome del file caricato. Se è diverso da "" farai un update che altera solo il nome dell'amico.

    PS ma il campo id_amico è numerico o VARCHAR ? perché se è un numero, come il nome sembra indicare, stai usando la sintassi sbagliata, non ci vogliono ' ' attorno
    non è una sintassi sbagliata.. sbagliato è ciò che produce errore

    i numeri (e SOLO i numeri) possono avere e non avere i singoli apici

    @shira:
    o fai un controllo sul nome del file oppure controlli con is_file() se il file temporaneo esite...

    Codice PHP:
    if (is_file($_FILES['userfile']['tmp_name']) && filesize($_FILES['userfile']['tmp_name']) !== false)
    {
    // il file è corretto e esegue il codice con le eventuali query

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    70
    grazie per avermi risposto....

    dimenticavo di dire che sono alle prime armi....forse si era notato.....

    cercherò di essere più chiaro....

    se accedo alla pagina di modifica della scheda amico trovo

    nome
    foto >>sfoglia<<<
    invia

    cosa succede?

    se io non seleziono alcuna foto, non appena invio la pagina, nel campo che ho nel database che si chiama "percorso" foto/esempio_foto1.jpg, mi cancella ovviamnete il campo perchè non gli arriva il valore del campo file vuoto. come faccio ad evitare questo?

    la soluzione di dottwatson non so coordinarla con il mio script causa inesperienza. potreste insegnarmi come si fa con il codice che vi ho postato??
    grazie

  7. #7
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Codice PHP:
    <?
    $id_doc
    =$_REQUEST['id_amico'];
    $nome$_REQUEST['nome'];


    if (
    is_file($_FILES['userfile']['tmp_name']) && filesize($_FILES['userfile']['tmp_name']) !== false)
      {
      
    $file_temp$_FILES['userfile']['tmp_name'];
      
    $nome1 $_FILES['userfile']['name'];
      
    $percorso="foto/";
      
    //cartella sul server dove verrà spostata la foto
      
    $foto $percorso.$nome1 ;

      if (
    move_uploaded_file($file_temp$percorso $nome1))
        {
        
    mysql_query("UPDATE amici SET foto='$foto' WHERE id_amico='$id_amico'") or die (mysql_error());
        echo 
    "record con id $id_amico modificato con foto $foto
    "
    ;  
        }
      else
        {
        print 
    "Si sono verificati dei problemi durante l'Upload";
        }
      }

    mysql_query("UPDATE amici SET nome='$nome' WHERE id_amico='$id_amico'") or die (mysql_error());
    echo 
    "record con id $id_amico modificato 
    "
    ;
    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  8. #8
    sai che al posto di filesize($_FILES['userfile']['tmp_name']) puoi usare $_FILES['userfile']['size'] > 0 ed $_FILES['userfile']['error'] != 0(NO error) e 4(Nessun file caricato, quando lasci il campo vuoto)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.