eliminare un record grazie a PHP

  • Creatore Discussione Creatore Discussione Fabio90
  • Data di inizio Data di inizio

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
Salve ragazzi,
nella mia modesta area di amministrazione estraggo il nome delle immagini dal database per poi visualizzarle con il tag img in questo modo:
PHP:
<?php   
			$result = mysql_query("SELECT * FROM img_home")or die(mysql_error()); 
    				if(mysql_num_rows($result)>0){ 
        				while ($row = mysql_fetch_array($result)) { 
               	?>  <img src="../img/<?php echo $row ['nome_foto'] ?>" alt="<?php echo $row ['nome_img'] ?>" />	<br/>
                <?php 
					if(!isset($_POST['submit'])) { 
               echo"<p><input type='button' name='elimina' value='elimina' ></p>";
					} else {
					mysql_query("DELETE * FROM img_home WHERE id = $ID")or die(mysql_error());	
					}
				
        }
	} 
	?>

Il punto è che per ogni immagine vorrei aggiungere un bottone elimina per rimuovere l'immagine e il relativo record dal database. Ho provato a buttar giù qualche riga di codice ma inutilmente. Vi ringrazio dell'aiuto
 
ciao
io farei cosi, tutto in una stessa pagina
PHP:
<?php
if(isset($_GET['id'])){
	$id_del=$_GET['id'];
	if(is_int($id_del)){
		$q="DELETE FROM img_home WHERE id=$id_del";//verifica come si chiama il campo dell'id dell'immagine
		if(mysql_query($q)){
			$avviso="eliminata l'immagine con id= $id_del<br>";
		}else{
			$avviso="non è stato possibile eliminare l'immagine con id= $id_del<br />";
		}
		echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	}
}

//.... 
$result = mysql_query("SELECT * FROM img_home")or die(mysql_error()); 
if(mysql_num_rows($result)>0){ 
	while ($row = mysql_fetch_array($result)) {
 		echo "<img src=\".../img/".{$row ['nome_foto']}."\" alt=\"".{$row ['nome_img']}."\" /> ";
		echo "<a href=\"?id=".{$row ['id_foto']}."\ onclick=\"return(confirm('stai eliminando  ".{addslashes($row ['nome_foto'])}." CONFERMA'))>DEL</a><br />";//verifica come si chiama il campo dell'id dell'immagine
    } 
}
//....
?>
ti ho messo l'alert confirm perche si deve essere sicuri quando si elimina
prova e guarda se funzia, posso essermi dimenticato di qualche apice

p.s.
nll'conffirm ho messo addslashes perche se il nome contine degli apostrofi (apici) js fa casino
poi con i css puoi abbellire DEL
inoltre cerca di evitare di entrare/uscire da php
 
Intanto grazie per la cortesia cmq si ho dei problemi con questi due echo.. Potrei risolverli uscendo dal php però aspetto un tuo suggerimento visto che mi sconsigliavi di entrare ed uscire :)
Ho notato inoltre che ce un campo id_foto che non ho inserito nel DB. Non è sufficiente l'ID generico?


PHP:
 echo "<img src=\"../img/".{$row ['nome_foto']}."\" alt=\"".{$row ['nome_img']}."\" /> ";
        echo "<a href=\"?id=".{$row ['id_foto']}."\ onclick=\"return(confirm('stai eliminando  ".{addslashes($row ['nome_foto'])}." CONFERMA'))>DEL</a><br />";//verifica come si chiama il campo dell'id dell'immagine
 
ciao
che tipo di problemi? comunque verifico forse ho saltato o messo in più qualche apice
guarda che i nomi (come le etichette del vino) contano poco, l'importante è il contenuto.
io l'ho chiamato id_foto perchè non sapevo che l'avevi chiamato tu, se l'hai chiamato semplicemente id metti id, l'importante è che sia l'indicativo univoco del record
 
ciao
mi ero dimenticato questo
echo "<a href=\"?id=".{$row['id_foto']}."\" onclick=\"return(confirm('stai eliminando ".{addslashes($row['nome_foto'])}." CONFERMA'))>DEL</a><br />";

ora "dovrebbe" funziare
 
ok perfetto! cmq mi da ancora problemi di apici..
PHP:
echo "<img src=\"../img/".{$row ['nome_foto']}."\" alt=\"".{$row ['nome_img']}."\" /> ";
echo "<a href=\"?id=".{$row['ID']}."\" onclick=\"return(confirm('stai eliminando ".{addslashes($row['nome_foto'])}." CONFERMA'))>DEL</a><br />";
 
ciao
strano non ne vedo.
prova a sostituire i \" con apici semplici '
pero se noti anche quello che hai scrttto non da errori (i colori sono giusti)
 
ho risolto così!
PHP:
while ($row = mysql_fetch_array($result)) {
	?> 
    <img src="../img/<?php echo $row ['nome_foto'] ?>" alt="<?php echo $row ['nome_img'] ?>" />	
    
	<?php 
echo "<a href='?id=".$row['ID']." onclick='return(confirm(\'stai eliminando ".addslashes($row['nome_foto'])." CONFERMA'))>cancella</a><br />";  //verifica come si chiama il campo dell'id dell'immagine  

    }

cmq quando clicco su cancella l'URL alla fine si aggiorna cosi senza cancellar nulla: ?id=1 onclick=
 
ciao
intanto mancano i ; dopo le istruzioni php è c'è uno \ in più prima dopo confirm( e prima di 'stai... e (mea culpa) mancava un apice dopo CONFERMA))
poi prova a scriverla così
PHP:
<?php
//......
while ($row = mysql_fetch_array($result)) {
?> 
<img src="http://forum.mrwebmaster.it/img/<?php echo $row ['nome_foto']; ?>" alt="<?php echo $row ['nome_img']; ?>" />    
    
<a href="?id=<?php echo $row['ID']; ?>" onclick='return(confirm('stai eliminando <?php echo $row ['nome_img']; ?> CONFERMA'))'>cancella</a><br />  
<?php 
}
//.....
?>
inoltre si il campo si chiama ID
correggi la
PHP:
<?php
//....
$q="DELETE FROM img_home WHERE id=$id_del";
//....
?>
in
PHP:
<?php
//....
$q="DELETE FROM img_home WHERE ID=$id_del";
//....
?>

ricorda i nomi dei campi devono essere riportati uguali comprese maiscole/minuscole

edit
mi sono dimenticato l'addslshes nell'alert
 
Ultima modifica:
l'ID l'avevo già messo maiuscolo :)

PHP:
while ($row = mysql_fetch_array($result)) {
?> 
<img src="../img/<?php echo $row ['nome_foto']; ?>" alt="<?php echo $row ['nome_img']; ?>" />    
    
<a href="?id=<?php echo $row['ID']; ?>" onclick='return(confirm('stai eliminando <?php echo $row ['nome_img']; ?> CONFERMA'))'>cancella</a><br />  
<?php

adesso con questa modifica l'url si aggiorna così ?id=1 è scomparso l'onclick però non cancella il record...
Riuscirò a farcela! :hammer:
 
ciao
metti un var_dump per vedere se e come il get viene trasmesso

PHP:
<?php
if(isset($_GET['id'])){
    var_dump($_GET['id']);
	$id_del=$_GET['id'];
	/*
	se il var_dump ti da il numero del record che hai cliccato
	e non elimina ancora prova a mettere
	$id_del=0+$_GET['id'];
	oppure
	$id_del=(int)($_GET['id']);
	*/
	if(is_int($id_del)){
        $q="DELETE FROM img_home WHERE id='$id_del'";
//.....
?>
coumunque verifica di aver scritto tutto bene perchè e lo stesso sistema che uso io
 
grazie a tutti del supporto! ho risolto e posto il codice se potesse tornar utile ad altri

PHP:
<?php

if(isset($_GET['id'])){
    $id_del=(int) $_GET['id'];
    
        $q="DELETE FROM img_home WHERE id= ".$id_del;//verifica come si chiama il campo dell'id dell'immagine
        if(mysql_query($q)){
            $avviso="eliminata l'immagine con id= $id_del<br>";
        }else{
            $avviso="non è stato possibile eliminare l'immagine con id= '$id_del'<br />";
        }
        echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
		
		header('Location: homepage.php ');
		
		
    
}

//Estrazione dati e generazione tabella 
$result = mysql_query("SELECT * FROM img_home")or die(mysql_error()); 
if(mysql_num_rows($result)>0){ 
    
    
    while ($row = mysql_fetch_array($result)) {
?> 
<img src="../img/<?php echo $row ['nome_foto']; ?>" alt="<?php echo $row ['nome_img']; ?>" />    
    
<a href="homepage.php?id=<?php echo $row['id']; ?>" onClick="return(confirm('stai eliminando <?php echo $row ['nome_img']; ?> CONFERMA'))">cancella</a><br />   
<?php 
}

} 
?>

Sbagliavo nell'ultimo ancoraggio e potevo saperlo solo io :D
 

Discussioni simili