Home / Programmazione / PHP / Eliminare le immagini con PHP e MySQL
Mattepuffo

Eliminare le immagini con PHP e MySQL

Eliminare le immagini con PHP e MySQL

Ultima parte della serie.

L'articolo predente lo trovate qua.

Eravamo rimasti a come ordinare le foto della galleria.

Adesso vediamo come eliminarle.

Prima di tutto creiamo la funzione per l'eliminazione (usando PDO):

function delImg($nome) {
global $config;
try {
$prepare = $config->getPdo()->prepare("DELETE FROM gallery WHERE nome=?");
$prepare->execute(array(
$nome
));
} catch (Exception $e) {
die($e->getMessage());
}
}

La funzione è molto semplice e prevede una classica istruzione di DELETE.

 

A questo punto postiamo la pagina completa di tutte le funzioni

<?php
if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['photo'])) {
foreach ($_POST['photo'] as $order => $id) {
updateImg($order, $id);
}
}

if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['elimina_img'])) {
$check = $_POST['check'];
foreach ($check as $delete) {
delImg(substr($delete, 11));
if (unlink($delete)) {
echo 'Immagine cancellata<br/>';
} else {
echo 'Errore<br/>';
}
}
}

if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['upload_img'])) {
$maxSize = 512000; //byte => 550KB
$acceptType = array(
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'png' => 'image/png'
);
$cartella = "../gallery/";

for ($i = 0; $i < count($_FILES['file']['name']); $i++) {
if ($_FILES['file']['name'][$i] != "") {
$nome_upload = uniqid('gallery_') . strrchr($_FILES['file']['name'][$i], '.');
$destinazione = $cartella . $nome_upload;
if ($_FILES['file']['size'][$i] <= $maxSize) {
if (in_array($_FILES['file']['type'][$i], $acceptType)) {
if (move_uploaded_file($_FILES['file']['tmp_name'][$i], $destinazione)) {
$_SESSION['lastimg']++;
insertImg($nome_upload, $_SESSION['lastimg']);
echo "File " . $i . " caricato<br/>";
} else {
echo "Errore nell'upload<br/>";
}
} else {
echo 'Tipo file non valido<br/>';
}
} else {
echo 'File troppo grande<br/>';
}
} elseif ($_POST['upload_img']) {
echo 'Non ci sono file da inserire<br/>';
}
}
}
?>
<form action="" method="post" enctype="multipart/form-data" name="form_upload">
<table>
<tr>
<td>
<input type="file" name="file[]" /> <br />
<input type="file" name="file[]" /> <br />
<input type="file" name="file[]" /> <br />
<input type="file" name="file[]" /> <br />
<input type="file" name="file[]" /> <br />
</td>
</tr>
<tr>
<td>
<input type="submit" value="Upload" name="upload_img" />
</td>
</tr>
</table>
</form>
<hr style="width: 200px; margin-left: 0;"/>
<a href="javascript:selectAll();">Seleziona tutto</a>
<form action="" method="post" enctype="multipart/form-data" name="modulo" onsubmit="return deleteImages();">
<ul id="gallery">
<?php
$dirname = "../gallery/";
foreach (showImg() as $file) {
echo '<li id="photo_' . $file['id'] . '"><input type="checkbox" name="check[]" value="' . $dirname . $file['nome'] . '" /><img src="' . $dirname . $file['nome'] . '" width="100" heigth="100" alt="" /></li>';
}
?>
</ul>
<input type="submit" value="Elimina" name="elimina_img" />
</form>

Nella parte alta abbiamo le parte di codice che richiamano le varie funzioni; sotto abbiamo due form.

Il primo serve per fare l'upload; nel secondo visualizziamo le immagini, le selezioniamo e la cancelliamo.

A noi nello specifico ci interessano queste due parti:

<?php
if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['elimina_img'])) {
$check = $_POST['check'];
foreach ($check as $delete) {
delImg(substr($delete, 11));
if (unlink($delete)) {
echo 'Immagine cancellata<br/>';
} else {
echo 'Errore<br/>';
}
}
}

.......

<a href="javascript:selectAll();">Seleziona tutto</a>
<form action="" method="post" enctype="multipart/form-data" name="modulo" onsubmit="return deleteImages();">
<ul id="gallery">
<?php
$dirname = "../gallery/";
foreach (showImg() as $file) {
echo '<li id="photo_' . $file['id'] . '"><input type="checkbox" name="check[]" value="' . $dirname . $file['nome'] . '" /><img src="' . $dirname . $file['nome'] . '" width="100" heigth="100" alt="" /></li>';
}
?>
</ul>
<input type="submit" value="Elimina" name="elimina_img" />
</form>

La prima parte controlla tutte le immagini "ceccate", e per ognuna richiama la funziona delImg passandogli come parametro il nome delle immagini.

Una volta cancellate dal db le cancella anche fisicamente dalla directory.


E questo è quanto.

Con questi tre articoli potete praticamente tutto con la vostra galleria.

Ovviamente ci sono delle migliorie da fare, ma a me funziona e anche velocemente.

Vi consiglio di leggere gli articoli in sequenza; ricordatevi inoltre che ci sta anche una parte in jQuery/jQuery UI che non ho postato, ma che trovate nella seconda parte.

Spero vi possa essere utile!.