Delete foto in database e cartella

  • Creatore Discussione Creatore Discussione Alex_70
  • Data di inizio Data di inizio
PHP:
header("location:gallery_delete.php?id=$actor_id&success=true");
sempre il solito...

ottimo, funziona, o quasi..

Test su 2 foto

sshot-1.png


cancello la prima, quella sotto di Dylan Dog,

il messaggio mi avvisa che e' stata cancellata

sshot-2.png


cancello la seconda, e ....sorpresa .... nessun avviso, strano

sshot-3.png
 
Testato con 4 foto, funziona perfettamente (a parte l'avviso mancante per l'ultima immagine cancellata)

Che dire, GRAZIE TANTE Tomm03 :), senza di te questo script non veniva mai risolto, comunque ti meriti una cena, e tante birre ;).

Se un giorno passerai dalle mie parti sei il benvenuto :)
 
a parte l'avviso mancante per l'ultima immagine cancellata
<?php if(isset($_GET['success']) && $_GET['success'] == 'true') { ?> <div class="alert alert-success"> <?php echo "Images has been deleted sucessfully"; ?> </div> <?php } ?>
Penso sia perché questa parte che dovrebbe dare l'avviso si trova dentro al while e quando cancelli l'ultima foto il while non parte più dato che non c'è più niente
per risolvere dovresti togliere questa parte dell'avviso e metterla fuori al while.. dipende dalle tue esigenze dove metterla precisamente
ciaoo
 
se metto fuori dal while la penultima la visualizzo con la class bootstrap e l'ultima come semplice testo

tu cosa consigli?
 
PHP:
<!DOCTYPE html>
<html>
<head>
<title>PHP remove uploaded file from folder and database</title>

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" >

<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" >
</head>



<body>
    <div class="container">
        <h3 class="text-center">Delete Images</h3>
        
        <div class="row">
        
        <?php 
        if(isset($errorMsg))
{
?>
            <div class="alert alert-danger">
                <?php 
                    echo $errorMsg;
unset($errorMsg);
?>
            </div>
        <?php 
        }
?>
        
        <?php 
        if(isset($_GET['success']) && $_GET['success'] == 'true')
{
?>
            <div class="alert alert-success">
                <?php 
                    echo "Images has been deleted sucessfully";
?>
            </div>
        <?php 
        }
?>
 
<?php 
   
require_once("cineteca.include");

if(!$conn)
{
die(mysqli_error());
}

$actor_id = $_GET["id"];



$sql = "
select *
FROM
actor a
INNER JOIN
gallery g
on
g.actor_id_fk = a.actor_id
WHERE
a.actor_id=". $actor_id;



$rs = mysqli_query($conn, $sql);

while($row = mysqli_fetch_assoc($rs))
{

$nome= $row ['nome'];

$getIamgeName = $row['photo'];


if(isset($_GET['deleteid']))
{
$selectSql = "

select * from gallery WHERE gallery_id= ".$_GET['deleteid'];
$rsSelect = mysqli_query($conn,$selectSql);
while($getRow = mysqli_fetch_assoc($rsSelect)){
$idok=$getRow['photo'];
}

$createDeletePath = "../image_upload/actor/uploads/$nome ($actor_id)/".$idok;



if(unlink($createDeletePath))
{
$deleteSql = "delete from gallery where gallery_id = ".$_GET['deleteid'];
$rsDelete = mysqli_query($conn, $deleteSql);

if($rsDelete)
{
header("location:gallery_delete.php?id=$actor_id&success=true");

exit();
}
}
else
{
$errorMsg = "Unable to delete Image";
}
}


?>
      
        
    <?php 
       

$imgWithPath = "../image_upload/actor/uploads/$nome ($actor_id)/".$row['photo'];
?>    
            
                
            <div class="col-md-12 text-center" style="margin-top:10px">
                <img src="<?php echo $imgWithPath ?>" width="100">
                <a href="?id=<?php echo $actor_id;?>&deleteid=<?php echo $row["gallery_id"]?>" class="btn btn-primary">Delete image</a>
            </div>
            
            
    <?php        
       
}
?>
    </div>
    </div>
    
    
<script src="../js/bootstrap.min.js"></script>    
</body>
</html>
Io proverei cosi (non sono sicuro che funzioni)
 
e infatti, non funziona bene :D, cancella i file dal database e dalla cartella ma l'avviso no

Warning: Cannot modify header information - headers already sent by (output started at E:\OpenServer\domains\localhost\cinema\crud\gallery_delete.php:21) in E:\OpenServer\domains\localhost\cinema\crud\gallery_delete.php on line 105

line 105

PHP:
header("location:gallery_delete.php?id=$actor_id&success=true");
 
Ah giusto beh allora non so, riprendo il codice precedente e scegli il posto dove spostare i codici del messaggio fuori dal while
 
questo e' un pezzo di codice di marino51,

i messaggi dentro il codice php

PHP:
if( empty(aggiornaDB("conta_id")) )
        {
            $set['azione'] = "";
            $message = "ERRORE : non ho trovato nessun elemento con l&acute; ID indicato";
            return;
        }


e questo il segnaposto dove visualizzare

PHP:
<?= $message; ?>

solo che si inserisce il tutto dentro php forse poi si perde bootstrap
 
PHP:
<?php
  
require_once("cineteca.include");

if(!$conn)
{
die(mysqli_error());
}

$actor_id = $_GET["id"];



$sql = "
select *
FROM
actor a
INNER JOIN
gallery g
on
g.actor_id_fk = a.actor_id
WHERE
a.actor_id=". $actor_id;



$rs = mysqli_query($conn, $sql);

while($row = mysqli_fetch_assoc($rs))
{

$nome= $row ['nome'];

$getIamgeName = $row['photo'];


if(isset($_GET['deleteid']))
{
$selectSql = "

select * from gallery WHERE gallery_id= ".$_GET['deleteid'];
$rsSelect = mysqli_query($conn,$selectSql);
while($getRow = mysqli_fetch_assoc($rsSelect)){
$idok=$getRow['photo'];
}

$createDeletePath = "../image_upload/actor/uploads/$nome ($actor_id)/".$idok;



if(unlink($createDeletePath))
{
$deleteSql = "delete from gallery where gallery_id = ".$_GET['deleteid'];
$rsDelete = mysqli_query($conn, $deleteSql);

if($rsDelete)
{
header("location:gallery_delete.php?id=$actor_id&success=true");

exit();
}
}
else
{
$errorMsg = "Unable to delete Image";
}
}


?>
<!DOCTYPE html>
<html>
<head>
<title>PHP remove uploaded file from folder and database</title>

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" >

<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" >
</head>



<body>
    <div class="container">
        <h3 class="text-center">Delete Images</h3>
       
        <div class="row">
       
        <?php
        if(isset($errorMsg))
{
?>
            <div class="alert alert-danger">
                <?php
                    echo $errorMsg;
unset($errorMsg);
?>
            </div>
        <?php
        }
?>
       
       
    <?php
      

$imgWithPath = "../image_upload/actor/uploads/$nome ($actor_id)/".$row['photo'];
?>   
           
               
            <div class="col-md-12 text-center" style="margin-top:10px">
                <img src="<?php echo $imgWithPath ?>" width="100">
                <a href="?id=<?php echo $actor_id;?>&deleteid=<?php echo $row["gallery_id"]?>" class="btn btn-primary">Delete image</a>
            </div>
           
           
    <?php       
      
}
?>
    <?php
        if(isset($_GET['success']) && $_GET['success'] == 'true')
{
?>
            <div class="alert alert-success">
                <?php
                    echo "Images has been deleted sucessfully";
?>
            </div>
        <?php
        }
?>     
    </div>
    </div>
   
   
<script src="../js/bootstrap.min.js"></script>   
</body>
</html>
Se ti va bene che il messaggio di successo ci sia, ma sotto alle immagini, cosi dovrebbe andare
 
Buongiorno a tutti e buona domenica :)

Ciao Tommy03 :)


ho testato l'ultimo script, funziona perfettamente con warning fino alla penultima foto e poi niente,

quindi comportamento uguale all'altro anche se e' cambiato il codice con questo alla fine

PHP:
<?php
        if(isset($_GET['success']) && $_GET['success'] == 'true')
{
?>
            <div class="alert alert-success">
                <?php
                    echo "Images has been deleted sucessfully";
?>
            </div>
        <?php
        }
?>
 

Discussioni simili