PDA

View Full Version : [PHP] Upload file e anteprima degli stessi nella medesima pagina


stefano861
30-11-2013, 23:39
Ciao a tutti, vorrei creare una pagina php contenete delle immagini. Questa pagina deve anche consentire agli utenti di inserire delle nuove immagini.
Ho creato il form e funziona perchè effettivamente mi carica le nuove immagini nella cartella corretta.
Il problema è che al caricamento della pagina mi visualizza il form ma non le altre immagini già presenti, queste me le visualizza solo quando inserisco una nuova foto.
La struttura dei miei file è:

file index.php:
stampo il form in html
richiamo una funzione php che mi controlla l'inserimento delle immagini. Se non c'è selezionata nessuna immagine nel form, mi stampa una stringa, altrimenti carica l'immagine
richiamo una funzione che mi mostra tutte le immagini presenti nella cartella

Come detto sopra, al caricamento della pagina, vedo il form e basta (non vedo le altre immagini presenti nella cartella). Quando invio una nuova foto vengono visualizzate tutte le immagini.

Quindi, in pratica, è come se il form mi "bloccasse" la visualizzazione di tutte le immagini.

Guardando su internet ho trovato molti esempi di upload ma divisi in due pagine differenti (una per la visualizzazione di tutte le immagini e una per l'upload) mentre io vorrei che venisse fatto tutto nella stessa pagina..

E' possibile farlo? Se si, come?

Grazie mille! :)

stefano861
01-12-2013, 16:58
Aggiungo il mio codice così magari è più chiaro..

Nel file photogallery.php

<form method="POST" enctype="multipart/form-data" action="photogallery.php">
<input type="hidden" name="action" value="upload"/>
<label>Immagine da caricare:</label>
<input type="file" name="image"/><br/>
<input type="submit" name="invia" value="Invia"/>
</form>


<?php
verificaImmagine();
visualizzaImmagini();
?>


Nel file funzioni.php

function verificaImmagine() {
if(!isset($_FILES["image"]))
die("Errore\n");
$tmp_nome = $_FILES["image"]["tmp_name"];
$type = $_FILES["image"]["type"];
$nome = $_FILES["image"]["name"];
if(move_uploaded_file($tmp_nome, CARTELLA_IMG . "/" . $nome))
echo "Inserimento effettuato";
else
echo "Errore";
}


function visualizzaImmagini() {
$connect = dbConnect();
// ... codice che permette la visualizzazione delle immagini presenti nella cartella ...
mysql_close($conn);
}

_mRkZ_
01-12-2013, 18:22
if(!isset($_FILES["image"]))
die("Errore\n");


Qui lanci un die() se nessun file è stato selezionato per l'upload :)
Avendo inserito la funzione che ti visualizza le immagini (visualizzaImmagini) dopo la funzione che ti esegue l'upload (verificaImmagine), quando non selezioni alcuna immagine da inviare viene lanciato die() e le immagini non vengono visualizzate.

cenarius_88
01-12-2013, 18:40
La funzione die interrompe tutto... prova così


function verificaImmagine() {
if(!isset($_FILES["image"]))
echo("Errore\n");
else{
$tmp_nome = $_FILES["image"]["tmp_name"];
$type = $_FILES["image"]["type"];
$nome = $_FILES["image"]["name"];
if(move_uploaded_file($tmp_nome, CARTELLA_IMG . "/" . $nome))
echo "Inserimento effettuato";
else
echo "Errore";
}
}

stefano861
01-12-2013, 19:58
Perfetto, funziona! Grazie ad entrambi :)