Cia ragazzi, ho realizzato uno script in php che mi permette di selezionare un archivio ZIP contentente immagini e foto tramite lo sfoglia, di uploadarlo e scompattarlo in una cartella FTP il cui nome viene impostato direttamente dall'utente tramite il campo "Titolo". Cliccando su "Vai allo step successivo", il sistema ti fa l'elenco di tutte le fotografie caricate con tanto di nome ed anteprima. Se il tutto è corretto, basterà cliccare sul bottone "termina il caricamento" ed i nomi delle foto verranno anche scritte sul DB mysql. Ora lo script funziona perfettamente e non mi genera nessun errore di sistema od altro. Il problema è che nel database mi salva solamente il nome dell'ultima fotografia presente in lista tralasciando tutte le altre. Sto impazzendo perchè non riesco a capire qual è l'errore. Vi prego di darmi, se potete, una mano perchè sono disperato!
Vi posto di seguito il codice PHP completo.
Codice PHP:
<?php
session_start();
if(isset($_SESSION['accesso']))
{
$nomepagina = "Area di amministrazione";
include("../includes/connessione.php");
include("includes/header.php");
?>
<body>
<div id="grande">
<?php include("includes/intestazione.php"); ?>
<div id="principale">
<!--INIZIO TABELLA-->
<br /><h2>Gestione delle gallerie fotografiche</h2><br /><br />
<table width="800" border="0" cellspacing="3" cellpadding="5" align="center">
<tr>
<td style="background:#CCC; padding:15px;">
<center>
<input type="button" value="Torna nell'area riservata" name="torna" onClick="window.location.href='area_riservata.php';" />
<input type="button" value="Torna all'elenco delle foto" name="torna2" onClick="window.location.href='gestione_foto.php';" />
</center>
</td>
</tr>
</table>
<br /><br />
<?php
$connessione=mysql_connect($dbhost,$dbusername,$dbpassword);
mysql_select_db($dbnome,$connessione);
if(isset($_POST['invia']))
{
// Definisco le variabili e faccio un replace per caratteri speciali
$uploaddir = "includes/upload/fotografie/";
$uploadfile = $uploaddir . $_FILES['nome']['name'];
$nomez=$_FILES['nome']['name'];
$nomez=str_replace(".zip","",$nomez);
$categoria = $_POST['categoria'];
$titolo = $_POST['titolo'];
$titolo = str_replace("'", "´", $titolo);
// Valido i campi
if(empty($titolo) || empty($categoria)) {
echo("<script>alert('Alcuni campi obbligatori non sono stati compilati');</script>");
}
else{
// Controllo che non ci siano stati errori nell'upload (codice = 0)
if (move_uploaded_file($_FILES['nome']['tmp_name'], $uploadfile)) {
// Se tutto è andato bene carico i risultati nel database
$conn = "INSERT INTO album SET titolo = '$titolo', categoria = '$categoria'";
mysql_query($conn) OR die('Query non valida: ' . mysql_error());
$id_album=mysql_insert_id();
echo ('<script language="JavaScript" type="text/javascript">alert("Primo passaggio completato con successo!"); window.location="inserisci_foto.php?ricalcolo=nuovo&id_album='. $id_album .'&categoria='. $categoria .'&titolo='. $titolo .'"</script>"');
} else {
echo ("<script language='JavaScript' type='text/javascript'>alert('Errore nel caricamento delle fotografie. Controlla che non ci siano problemi nel file ZIP.');</script>");
}
include('librerie/pclzip.lib.php');
$archive = new PclZip("$uploadfile");
if ($archive->extract(PCLZIP_OPT_PATH, "includes/upload/fotografie/$titolo",PCLZIP_OPT_REMOVE_PATH, '') == 1) {
//die("Error : ".$archive->errorInfo(true));
echo ("<script language='JavaScript' type='text/javascript'>alert('Errore nella decompressione. Contattare Sito Smile');</script>");
}
}
}
?>
<center>Inserisci una nuova galleria fotografica:</center><br /><br />
<?php if (!$_GET['ricalcolo']=="nuovo"){ ?>
<form action="" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000"/>
<table width="800" border="0" cellspacing="3" cellpadding="5" align="center" style="border:1px solid #666">
<tr>
<td style="border:1px solid #666;"><b>Categoria delle foto:</b></td>
<td style="border:1px solid #666;">
<select name="categoria" style="width:286px;">
<option value="0">[Selezione una categoria]</option>
<?php
$conn = "SELECT * FROM categorie order by titolo";
$risultato = mysql_query($conn) or die('Errore nella query SQL');
while(list($id_categoria, $titolo) = mysql_fetch_array($risultato))
{
?>
<option value="<?php echo $id_categoria ?>" <?php echo $selezione ?>><?php echo $titolo ?></option>
<?php
}
?>
</select>
</td>
</tr>
<tr>
<td style="background:#CCC; border:1px solid #666;"><b>File ZIP contenente le foto:</b></td>
<td style="background:#CCC; border:1px solid #666;"><input type="file" name="nome" size="30"></td>
</tr>
<tr>
<td style="background:#CCC; border:1px solid #666;"><b>Titolo cartella: (scrivere tutto attaccato)</b></td>
<td style="background:#CCC; border:1px solid #666;"><input type="text" name="titolo" size="30" value="<?php echo $titolo ?>"></td>
</tr>
<tr>
<td colspan="2" align="center" style="border:1px solid #666;"><input type="submit" name="invia" value="Vai allo step successivo"> <input type="reset" name="resetta" value="Resetta i dati"></td>
</tr>
</table>
</form>
<br /><br />
<?php
}
if($_GET['ricalcolo']=="nuovo"){
$conn = "SELECT * FROM album WHERE id_album=" .$_GET['id_album'];
$risultato = mysql_query($conn) or die('Errore nella query SQL');
while(list($id_album, $categoria, $titolo) = mysql_fetch_array($risultato))
{
function dir_list($directory = FALSE)
{
$dirs= array();
$files = array();
if ($handle = opendir("./" . $directory))
{
while ($file = readdir($handle))
{
if (is_dir("./{$directory}/{$file}"))
{
if ($file != "." & $file != "..") $dirs[] = $file;
}
else
{
if ($file != "." & $file != "..") $files[] = $file;
}
}
}
closedir($handle);
reset($dirs);
sort($dirs);
reset($dirs);
reset($files);
sort($files);
reset($files);
if($dirs == 1) {
echo "<strong>Cartelle:</strong>\n<ul>";
while(list($key, $value) = each($dirs))
{
$d++;
echo "<li><a href=\"{$value}\">{$value}/</a>\n";
}
echo "</ul>\n";
}
echo "<form action='' method='post' enctype='multipart/form-data'>
<strong>Immagini caricate nel server:</strong>\n<ul>";
while(list($key, $value) = each($files))
{
$f++;
echo "<td><img src='{$directory}/{$value}' height='60' width='60' style='border:1px solid #000;' align='absimiddle'></td><td> <input type='text' size='60' value='{$value}' name='file_' id='file' readonly style='border:0; height: 40px; background:none;'><br></td>";
}
echo "</ul>\n";
if (!$d) $d = "0";
if (!$f) $f = "0";
/*echo "Sono presenti <strong>{$f}</strong> immagini per questa serata.</strong>\n";*/
echo"<br><table width='86%' align='center'><tr><td style='background:#CCC; border:0' align='center'><br><input type='submit' value='Concludi il caricamento foto' name='invia2'><br><br></td></tr></table>
</form>";
}
dir_list("includes/upload/fotografie/$titolo");
if(isset($_POST['invia2']))
{
//Definizione variabili
$file = $_POST['file'];
$categoria = $_GET["categoria"];
$titolo = $_GET["titolo"];
$album = $_GET["id_album"];
// Se tutto è andato bene carico i risultati nel database
$conn = "INSERT INTO fotografie SET nome = '$file', titolo = '$titolo', categoria = '$categoria', album = '$album'";
mysql_query($conn)
OR die('Query non valida: ' . mysql_error());
$id = $_GET['id_foto'];
echo ("<script language='JavaScript' type='text/javascript'>alert('Caricamento foto completato con successo!'); window.location='gestione_foto.php'</script>");
}
}
}
?>
</div>
<?php include("includes/footer.php"); ?>
</div>
</body>
</html>
<?php
}else {
?>
<script language="JavaScript" type="text/javascript">
alert("Accesso non consentito. Rieffettua il login")
window.location = "index.php"
</script>
<?php
}
?>
Grazie dell'eventuale aiuto
Segnalibri