upload immagini

Ciao a tutti,

l'articolo http://www.phpnews.it/content/view/213/80/  mi è stato utilissimo.

Volevo solo chiedere una cosa facendo riferimento al codeice riportato sull'articolo...se un utente non inserisce direttamente la foto tramite lo sfoglia è possibile fare in modo che la foto venga presa da una cartella presente nel server???

Come devo modificare lo script considerando questa condizione????

grazie a tutti!!!

 :bye:

inviato 11 anni fa
stellina
X 0 X

Prova così (non l'ho testato):

<?php  
// connessione e selezione del database
mysql_connect('localhost', 'utente_db', 'password_db')
  or die('Connessione non riuscita: ' . mysql_error());

if(!mysql_select_db('nome_database'))
   die('Selezione database fallita!');

$nome_file = 'mia_foto.jpg';
$cartella_immagini = 'C:\immagini';
$tipo_file = 'jpg';

// leggo il contenuto del file
$dati_file = file_get_contents($cartella_immagini . '\\' . $nome_file);

// preparo il contenuto del file per la query
$dati_file = addslashes($dati_file);

// query per inserire il file nel DB
$query = "INSERT INTO tabella_files SET
             nome_file = '$nome_file_vero',
             tipo_file = '$tipo_file',
             dati_file = '$dati_file'";

mysql_query($query)
  OR die('Query non valida: ' . mysql_error());
?>

Prendi questo script come spunto da adattare alle tue esigenze

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

adesso vedo di prendere spunto ma come faccio a dirgli: "se non c'è la foto (se non viene scelta la foto tramite sfoglia) allora prendi mia_foto.jpg" ???

risposto 11 anni fa
stellina
X 0 X

Lo script che ti ho proposto prende direttamente il file dal disco. Per fare quello che dici devi invece partire dallo script dell'articolo e giocare sul controllo per la verifica del file inviato

 if(!isset($_FILES['file_inviato']) OR $_FILES['file_inviato']['error'] != UPLOAD_ERR_OK)

        mostra_form("errore nell'invio del file. Riprova");

invece di mostrare nuovamente il form di upload dovresti impostare le variabili $nome_file_temporaneo, $nome_file_vero e $tipo_file con dei dati che puntino ad un file su disco.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Innanzitutto complimenti per l'articolo, in seconda battuta mi sorge una domanda.

Esiste un motivo pratico per  effettuare l'upload del file sul server e metterlo nel DB anzichè salvarlo in una cartella ?

A prima vista vedo solo svantaggi ... forse mi sfugge qualche cosa  :)

risposto 11 anni fa
Lokki
X 0 X

Una immagine in un DB può essere visualizzata solo se lo script ha deciso di estrarla. Quindi solo se si hanno i permessi per vederla...

Si tratta quindi di un sistema molto più affidabile e configurabile per distribuire immagini ad utenti con diversi diritti di accesso.

Ovviamente se non si sfruttano queste possibilità allora è meglio la classica cartella con le immagini.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

sto cercando una soluzione

risposto 11 anni fa
stellina
modificato 11 anni fa
X 0 X

e che è sta cosa?  :o

Le query oltre a scriverle bisogna eseguirle e se si tratta di una select bisogna poi estrarre (fetch) i risultati!

Quindi per ogni query devi usare la funzione mysql_query per eseguirle, poi sempre per ciascuna devi fare la fecth dei risultati, ad esempio con la funzione mysql_fecth_array

$risultato = mysql_query("SELECT nome_file FROM tabella_files2 WHERE id_file=1");

$riga = mysql_fecth_array($risultato);

$nome_file_temporaneo = $riga['nome_file'];

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

se cancelli i precedenti messaggi, i miei sembrano il delirio di un matto  :uglystupid:

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

scusa per prima ha fatto un pò di casino  :-[

cmq riporto qui sotto il codice...sono vicina alla soluzione ma non sono ancora riuscita ad ottenere il risutato sperato.

if(trim($_FILES["fileinviato1"]["tmp_name"]) == "") {

//se non è stato inserito alcun file
//seleziono un altro file presente in un'altra tabella del db
   
$risultato = mysql_query("SELECT nome_file FROM tabella_files2 WHERE id_file=1");
$riga = mysql_fetch_array($risultato);
$nome_file_temporaneo1 = $riga['nome_file'];

   
$risultato2 = mysql_query("SELECT nome_file FROM tabella_files2 WHERE id_file=1");
$riga2 = mysql_fetch_array($risultato2);
$nome_file_vero1 = $riga2['nome_file'];


$risultato3 = mysql_query("SELECT tipo_file FROM tabella_files2 WHERE id_file=1");
$riga3 = mysql_fetch_array($risultato3);
$tipo_file1= $riga3['tipo_file'];


$risultato4 = mysql_query("SELECT dati_file FROM tabella_files2 WHERE id_file=1");
$riga4 = mysql_fetch_array($risultato4);
$dati_file1= $riga3['dati_file'];
 

//passo i dati ottenuti alla query      
    $query1 = "INSERT INTO tabella_files SET 
                    nome_file = '$nome_file_vero1', 
                    tipo_file = '$tipo_file1', 
                    dati_file = '$dati_file1'"; 

      
         
}

inserisce il nome e il tipo di file nel db ma quando gli chiedo di visualizzarlo al posto della foto c'è una x.

cosa posso fare???

 :-\

risposto 11 anni fa
stellina
X 0 X

prova a mettere un

$dati_file1 = addslashes($dati_file1);

prima della query:

$query1 = "INSERT INTO tabella_files SET ....

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

niente da fare..tutto come prima.  :'(

risposto 11 anni fa
stellina
X 0 X

se ho ben capito quindi la query viene lanciata, i dati del file vengono inseriti ma manca solo l'immagine?

Verifica il contenuto della tabella del database, magari con phpMyAdmin. Controlla che realmente l'immagine sia l'unica cosa che manca.

Inoltre nel codice che hai riportato l'ultima query (la INSERT) non viene eseguita. Ho pensato che la realtiva mysql_query era riportata succssivamente nel tuo codice. E' così?

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

grazie ai tuoi consigli ce l'ho fatta!!!  O0

 :-*

risposto 11 anni fa
stellina
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda