Home PHP Eliminare le immagini con PHP e MySQL - parte 3
Eliminare le immagini con PHP e MySQL - parte 3
Programmazione & Co.
Lunedì 12 Settembre 2011 09:28

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!.

Ultimo aggiornamento Domenica 23 Ottobre 2011 10:36