Eliminare immagini da directory / *dal database fatto!

Marco Bonanno

Utente Attivo
3 Lug 2012
32
0
6
Ciao ragazzi, ho certato da tutte le parti ma non riesco ad integrare nel codice la funzione che cancella le immagini anche dalla directory. Spiego meglio.

Uno script mi carica le immagini in due directory, una in miniatura, e una originale /uploads/original - /uploads/thumbs oltre che caricarle nel database.

Sono riuscito bene o male a creare un file delete.php che mostra il contenuto nel database ed affiancare la funzione delete, funziona perfettamente. Purtroppo non è sufficiente, avrei bisogno che cancellasse le immagini dalle due directory.


Posto il codice di DELETE.php

PHP:
<?php
$con = mysql_connect("localhost","*******","******");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("**********************", $con);

if($_POST)
{
	$ids = isset($_POST['id']) ? $_POST['id'] : array();
	elimina_record($ids);
}
elseif(isset($_GET['id']))
{
	elimina_record(array($_GET['id']));
}
else
	mostra_lista();

function mostra_lista()
{
	// mostro un eventuale messaggio
	if(isset($_GET['msg']))
		echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';

	// preparo la query
	$query = "SELECT id,name,filename FROM image";

	// invio la query
	$result = mysql_query($query);

	// controllo l'esito
	if (!$result) {
		die("Errore nella query $query: " . mysql_error());
	}

	echo '
	<form name="form1" method="post" action="">
	<table border="1">
		<tr>
			<th>&nbsp;</th>
			<th>ID</th>
			<th>&nbsp;</th>
		</tr>';

	while ($row = mysql_fetch_assoc($result))
	{
		$name = htmlentities($row['name']);
		$id = htmlentities($row['id']);
		$filename = htmlentities($row['filename']);



		// preparo il link per la modifica dei dati del record
		$link = $_SERVER['PHP_SELF'].'?id=' . $row['id'];

		echo "<tr>
				<td><input name=\"id[]\" type=\"checkbox\" value=\"$row[id]\" /></td>
				<td>$id</td>
				<td><a href=\"$link\">elimina</a></td>
			</tr>";
	}

	echo '</table>
		<br />
		<input type="submit" name="Submit" value="Elimina record selezionati" />
		</form>';

	// libero la memoria di PHP occupata dai record estratti con la SELECT
	mysql_free_result($result);

	// chiudo la connessione a MySQL
	mysql_close();
}

function elimina_record($ids)
{
	// verifico che almeno un id sia stato selezionato
	if(count($ids) < 1)
	{
		$messaggio = urlencode("Nessun record selezionato!");
		header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
		exit;
	}

	// per precauzione converto gli ID in interi
	$ids = array_map('intval',$ids);

	// creo una lista di ID per la query
	$ids = implode(',',$ids);

	// preparo la query
	$query = "DELETE FROM image WHERE id IN ($ids)";

	// invio la query
	$result = mysql_query($query);

	// controllo l'esito
	if (!$result) {
		die("Errore nella query $query: " . mysql_error());
	}

	// conto il numero di record cancellati
	$num_record = mysql_affected_rows();

	// chiudo la connessione a MySQL
	mysql_close();

	$messaggio = urlencode("Numero record cancellati: $num_record");
	header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
}
?>



Non riesco proprio come muovermi, non sono espertissimo, sono riuscito ad assemblare il codice infatti prendendolo da varie fonti, preferirei quindi mi aiutaste un po più con il cucchiaino :)

Probabilmente dovrebbe essere utilizzata la funzione unlink, ma non so come e dove inserire.
Grazie, se ci fosse bisogno di altri file sono a disposizione.

Grazie mille davvero a chi mi vorrà aiutare :)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
devi trasmettere anche i nomi dei file alla funzione elimina_record come l'array degli id
PHP:
<?php
function elimina_record($ids, $files){
    // verifico che almeno un id sia stato selezionato
    if(count($ids) < 1){
        $messaggio = urlencode("Nessun record selezionato!");
        header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
        exit;
    }
    // per precauzione converto gli ID in interi
    $ids = array_map('intval',$ids);
    // ... le query....
	/*
	ora non so come chiami le miniature, stesso nome delle immagini grandi?
	ne quale sia il percorso esatto, quindi ti schematizzo
	*/
	$cart_1="/uploads/original/";
	$cart_2="/uploads/thumbs/";
	foreach($files as $file){
		$f_1=$cart_1.$file;
		$f_2=$cart_2.$file;
		//comunque per sicurezza ti conviene verificare che i file esistano in modo da non bloccare lo script
		unlink($f_1);
		unlink($f_2);
	}
    //...
} 
?>
 

Marco Bonanno

Utente Attivo
3 Lug 2012
32
0
6
Ciao e grazie per la risposta, sei stato gentilissimo. Ho cambiato il nome di file in filename, che dovrebbe essere il nome con cui vengono salvati le immagini nelle directory, ma nulla.

Ti posto quindi il codice completo della funzione che effettua l'upload:

PHP:
session_start();
$_SESSION['id']="1";
$id=$_SESSION['id'];
include 'config.php';  //assume you have connected to database already.
$folder = 'uploads/';
$name = date('YmdHis');
$filename = md5($_SERVER['REMOTE_ADDR'].rand()).'.jpg';
$original = $folder.$filename;

// The JPEG snapshot is sent as raw input:
$input = file_get_contents('php://input');

if(md5($input) == '7d4df9cc423720b7f1f3d672b89362be'){
	// Blank image. We don't need this one.
	exit;
}

$result = file_put_contents($original, $input);
if (!$result) {
	echo '{
		"error"		: 1,
		"message"	: "Failed save the image. Make sure you chmod the uploads folder and its subfolders to 777."
	}';
	exit;
}

$info = getimagesize($original);
if($info['mime'] != 'image/jpeg'){
	unlink($original);
	exit;
}

// Moving the temporary file to the originals folder:
rename($original,'uploads/original/'.$filename);
$original = 'uploads/original/'.$filename;

// Using the GD library to resize 
// the image into a thumbnail:

$origImage	= imagecreatefromjpeg($original);
$newImage	= imagecreatetruecolor(154,110);
imagecopyresampled($newImage,$origImage,0,0,0,0,154,110,520,370); 

imagejpeg($newImage,'uploads/thumbs/'.$filename);

echo '{"status":1,"message":"Success!","filename":"'.$filename.'"}';


    $sql="INSERT INTO image VALUES ('','$name','$filename')";
    $result=mysqli_query($con,$sql);
    $value=mysqli_insert_id($con);
    $_SESSION["myvalue"]=$value;
 
Discussioni simili
Autore Titolo Forum Risposte Data
F Dreamweaver: eliminare spaziatura immagini Webdesign e Grafica 3
S Come Eliminare Le Scritte Sull'immagini Di Internet Webdesign e Grafica 1
S [VB 17]: Eliminare doppioni in listbox Visual Basic 1
spider81man Eliminare primo ed ultimo carattere di una colonna MySQL 0
G Eliminare l'effetto refresh di una pagina internet PHP 8
M eliminare padding logo sito HTML e CSS 2
A eliminare caratteri speciali mettendo uno spazio PHP 0
A eliminare caratteri diacritici con codice ascii PHP 4
MarcoGrazia Eliminare in automatico i caratteri spuri all'inizio e alla fine di una stringa Snippet PHP 0
L Eliminare estensione .html HTML e CSS 9
L [RISOLTO] Eliminare una discussione creata PHP 3
S Eliminare spazio iniziale PHP 2
S [PHP] Eliminare doppioni array e rinumerare le posizioni PHP 2
maxnegri Eliminare url index.php con variabili e reindirizzare alla home del sito PHP 7
D [ASP] Eliminare gli zeri che nn servono Classic ASP 1
K Come eliminare attributi regex per validazione con javascript Javascript 0
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
P [HTML] Eliminare doppio menu in wordpress WordPress 2
P [WordPress] Eliminare scritta Categories da post WordPress 4
C [PHP] eliminare elemento da un array multidimensionale PHP 9
L Mi trovo nell'impossibilità di eliminare un record nella tabella Database 1
A [WordPress] Eliminare riga codice HTML WordPress 6
loois come eliminare una discussione fata in questo forum ? Discussioni Varie 1
trattorino [PHP] Eliminare piu frasi PHP 1
C [PHP] RISOLTO - Eliminare elementi duplicati da array multidimensionale PHP 1
L [HTML] versione mobile eliminare stile menu da nav HTML e CSS 0
T Come eliminare canonical url da blogger SEO e Posizionamento 0
dany81 [Photoshop] Eliminare più sfondo possibile... Photoshop 3
Monital [PHP] Eliminare la Barra di caricamento file alla fine dell'esecuzione PHP 11
asevenx [PHP] Eliminare record automaticamente dopo una certa data PHP 12
L Eliminare suono da iframe HTML e CSS 3
G Eliminare scrollbar laterale di visuallightbox jQuery 0
H Eliminare div creato da javascript Javascript 1
9 eliminare righe di una tabella con form html PHP 6
M Eliminare un cookie PHP 1
elpirata Eliminare dati selezionati da una form di select PHP 6
Marco_88 Eliminare una colonna da una LEFT JOIN MySQL 4
A come eliminare i suggerimenti della barra degli indirizzi su google chrome? Windows e Software 3
K eliminare il carriage return Javascript 4
S Problema nell'eliminare un'immagine PHP 2
felino Eliminare stringa compresa tra due tags PHP 4
Creatt Eliminare macchine in centos Linux e Software 2
filippino Eliminare lo sfondo di una foto Photoshop 1
D [VB.NET] Eliminare Cartella e sottocartelle TRAMITE FTP .NET Framework 1
D Eliminare voce da campo db Classic ASP 5
filippino Eliminare le barre scorrimento HTML e CSS 1
A come eliminare Awesomehp Sicurezza e Virus 1
L eliminare un prodotto dal carrello tramite l'id della sessione PHP 1
felino Array: eliminare gli elementi che soddisfano una condizione PHP 5
A Eliminare bordo blu al click di un'immagine mappata HTML e CSS 3

Discussioni simili