- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problemi galleria
-
Problemi galleria
Ciao a tutti, ho alcuni problemi con la creazione di una galleria di immagini, lo script funziona bene tranne per la creazione delle sotto cartelle che proprio non riesco a far funzionare e nella rinominazione delle foto, attualmente la foto viene rinominata nello stesso nome originale della foto ma, io invece vorrei rinominare le foto nello stesso numero progressivo dell'id della tabella del database, vi posto tutto il codice :
<?php
if(isset($_POST['Submit'])){
// faccio un po' di inclusioni...
require 'config.php';
require 'function.php';// crea cartella
$path_img = "../foto servizzi/".$id_path["$id"];//ricava l'id per nominare la cartella
mkdir($path_img);//crea la cartella id numero1,2,3,...
mkdir($path_img."/hotel");//crea la sottocartella foto
mkdir($path_img."/thumb");//crea la sottocartella thumb
stampa_msg("Operazione eseguita con successo");//controllo esito// Creo una array con i formati accettati
$tipi_consentiti = array("image/gif","image/jpeg","image/png");// verifico che il formato del file sia tra quelli accettati
if (in_array($_FILES['imagefile']['type'], $tipi_consentiti)){
// copio il file nella cartella delle immagini
copy ($_FILES['imagefile']['tmp_name'], $path_img . $_FILES['imagefile']['name']);// recupero i dati dal form $idhotel = addslashes($_POST['idhotel']); $descrizione = addslashes($_POST['descrizione']); $nome = addslashes($_FILES['imagefile']['name']); $path = $path_img . stripslashes($nome); $tipo = addslashes($_FILES['imagefile']['type']); // creo la miniatura makeThumb($path_img,$path,$nome,$tipo); // aggiorno il database $query = "INSERT INTO images (idhotel,descrizione,nome,tipo) VALUES('$idhotel','$descrizione','$nome','$tipo')"; $res = mysql_query($query) or die (mysql_error()); mysql_close($connessione); echo '<script language=javascript>document.location.href="javascript: history.go(-1)"</script>';
}else{
// stampo un messaggio di errore nel caso in cui il file sia di un formato non consentito
echo "<div align=center>Impossibile eseguire l'upload - DEVI INSERIRE TUTTI I CAMPI.</div>";}
}
$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo ("<BR><BR><center><a href='$url'>TORNA INDIETRO</a></center>");
?>Grazie
-
ragazzi ho fatto alcune modifiche nel codice, adesso nel database la foto viene numerata in base all'id progressivo della tabella ma la foto rimane sempre con lo stesso nome, vi posto il nuovo codice:
[PHP]
<?phprequire 'config.php';
require 'function.php';// crea cartella
$path_img = "../foto hotel/";// Creo una array con i formati accettati
$tipi_consentiti = array("image/gif","image/jpeg","image/png");// verifico che il formato del file sia tra quelli accettati
if (in_array($_FILES['imagefile']['type'], $tipi_consentiti)){
// copio il file nella cartella delle immagini
copy ($_FILES['imagefile']['tmp_name'], $path_img . $_FILES['imagefile']['name']);// recupero i dati dal form appena caricata $idhotel = addslashes($_POST['idhotel']); $descrizione = addslashes($_POST['descrizione']); $nome = addslashes($_FILES['imagefile']['name']); $path = $path_img . stripslashes($nome); $tipo = addslashes($_FILES['imagefile']['type']); // creo la miniatura makeThumb($path_img,$path,$nome,$tipo); // aggiorno il database $query = "INSERT INTO images (idhotel,descrizione,nome,tipo) VALUES('$idhotel','$descrizione','$nome','$tipo')"; $res = mysql_query($query,$connessione) or die (mysql_error($connessione)); //recupera l'id dall'immagine $last_id = mysql_insert_id(); // salva immagine con id associato della tabella $image_id = $last_id; imagejpeg($tipo, $path_img . '/' . $image_id . '.jpg'); imagedestroy($nome); $query2 = "UPDATE images SET nome = '" . $image_id. "' WHERE id = '" . $last_id ."' "; $res = mysql_query($query2,$connessione) or die (mysql_error($connessione)); list($path_img,$path,$nome,$tipo) = getimagesize($path_img . '/' . $image_id . '.jpg'); if ($_POST['Submit']) { // make sure the requested image is valid if (isset($_POST['id']) && ctype_digit($_POST['id']) && file_exists($path_img . '/' . $_POST['id'] . '.jpg')) { $tipo = imagecreatefromjpeg($path_img . '/' . $_POST['id'] . '.jpg'); } } echo '<script language=javascript>document.location.href="javascript: history.go(-1)"</script>';
}else{
// stampo un messaggio di errore nel caso in cui il file sia di un formato non consentito
echo "<div align=center>Impossibile eseguire l'upload - DEVI INSERIRE TUTTI I CAMPI.</div>";}
$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo ("<BR><BR><center><a href='$url'>TORNA INDIETRO</a></center>");
?>
[/PHP]
Qualcuno riesce a capire dove sto sbagliando?
Grazie in anticipo
-
allora ragazzi finalmete ho risolto il problema della rinominazione delle foto, adesso le foto prendono il nome dell'id della tabella, adesso preo' non riesco a cancellarle questo e' il codice:
[PHP]<?php
include 'config.php';if(!isset($_GET['id']))
{
exit('Nella pagina '.$_SERVER['PHP_SELF'].' non arrivato nessun id');
}$query = "SELECT * FROM images WHERE id='".intval($_GET['id'])."' LIMIT 1";
$risultato = mysql_query($query,$connessione) or die('Query select fallifa per il seguente motivo: '.mysql_error($connessione));
if (mysql_num_rows($risultato)===1)
{$row = mysql_fetch_array($risultato);
$foto_da_cancellare = "../foto hotel/". stripslashes($row['nome']); if(file_exists($foto_da_cancellare)) { unlink($foto_da_cancellare) or die ('problemi nella cancellazione della foto'); } else { exit('il file '.$foto_da_cancellare.' non esiste!'); } mysql_query("DELETE FROM images WHERE id='".intval($_GET['id'])."' LIMIT 1") or die('Query delete fallifa per il seguente motivo: '.mysql_error()); }
echo"
<BR><BR>
<center>
<span class=gensmall>Cancellazione avvenuta con successo.</span>
</center>";
$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo ("<BR><BR><center><a href='$url'>TORNA INDIETRO</a></center>");
?> [/PHP]le foto adesso vengono rinominate cosi': 1.jpg e via dicendo, il problema e che la query riporta questo problema:
il file ../foto hotel/1 non esiste!
qualche idea ragazzi'
Grazie