cancellare una immagine dal database

  • Creatore Discussione Creatore Discussione maxxjo
  • Data di inizio Data di inizio

maxxjo

Utente Attivo
27 Apr 2013
56
0
0
Ciao!
ho creato un form.php dove vado a fare l'upload delle mie foto sul database, con una pagina di richiamo in php che mi mostra le foto inserire, fino a qui tutto ok.
Adesso vorrei creare una pagina php dove posso cancellare le foto che ho inserito sul database, potete darmi un aiuto?

Il mio database ha le seguenti tabelle:
nome database:gallery
nome tabelle: tabella_files

id_file
nome_file
tipo_file
dati_file
 
ciao
intanto dipende da quante foto hai, se sono poche potresti semplicemente fare così
PHP:
<?php
//dati di connessione al db
if(isset($_GET['id']) && is_numeric($_GET['id'])){
	$id=$_GET['id'];
	$imm=$_GET['imm'];
	//elimino dal db
	$query=mysql_query("DELETE FROM tabella_files WHERE id_file=$id");
	//e elimino fisicamente il file immagine
	unlink($imm);
	//e torni all'elenco
	echo "eliminato file $imm<br />"
	echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}
$query=mysql_query("SELECT * FROM tabella_files ORDER BY nome_file");
//eventuale verifica se ci sono immagini
$path="cartella/";//il percorso se necessario
while($riga=mysql_fetch_array($query)){
	$id=$riga['id_file'];
	$imm=$path.$riga['nome_file'];//il nome è completo? es pinco.png?
	//hai anche di ogni immagine le tumb?
	//mostri l'immagine
	echo "<a href=\"?id=$id&imm=$imm\"><img src=\"$imm\"></a><br />";
	//trattandosi di eliminazione ti conviene mettere un confirm
}
?>
se sono molte alla prossima
 
info su come azzerare l'ID

Ho risolto facendo questo..
L'unica cosa che dovrei fare adesso e quello di azzerare l'id quando riparto ad inserire delle nuove foto, date che richiamo le foto su di una pagina tramite id con il numero partendo da 1.

PHP:
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 * FROM tabella_files";

	// 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>Nome</th>
			<th>&nbsp;</th>
		</tr>';

	while ($row = mysql_fetch_assoc($result))
	{
	
// in questa stringa devi inserire il titolo per visualizzare il nome da cancellare
$nome = htmlentities($row['nome_file']);

		// 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>$nome</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 tabella_files WHERE id_file IN (id_file)";

	// 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);
}
 
Ultima modifica di un moderatore:
ciao
se l'id, come penso, è una chiave primaria autoincrement non ti conviene farlo e tra l'altro non serve.

p.s.
racchiudi il codice tra gli appositi tag (seconda riga formattazione post, ultime 3 iconcine nell'ordine CODE, HTML, PHP)

dimenticavo:
e non elimini anche l'immagine?
 
Ultima modifica:

Discussioni simili