Delete foto in database e cartella

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
Salve a tutti

ho trovato in giro uno script per cancellare le foto sia dal database che dalla cartella

la galleria che ho nel database e' strutturata cosi

actor_id_fk relazionato con actor_id della tabella actor

gallery_id e' incrementale, quindi un actor ha molte foto

gallery.png

con questo comando sql trovo tutte le foto dell'actor nella tabella gallery

SQL:
SELECT * FROM gallery WHERE actor_id_fk = 40
gallery2.png


e con questo cancello

SQL:
DELETE FROM gallery WHERE gallery.gallery_id = 880
lo script qui sotto non funziona, non trova l'id e la path delle foto

inoltre la variabile $nome per formare il percorso e' presa dalla tabella actor
 
Ultima modifica:

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
piccoli progressi, sono riuscito a cancellare l'immagine nel database associata all'id,
resta il problema come cancellarla dalla cartella :(



dovrei prelevare il campo nome associato alla variabile $nome che si trova nella tabella separata actor
senza questo non viene ricostruito il path e non trova il file

PHP:
$createDeletePath = "../image_upload/actor/uploads/$nome ($actor_id)/".$getIamgeName;
PHP:
 $imgWithPath = "../image_upload/actor/uploads/$nome ($actor_id)/".$row['photo'];
suggerimenti? :rolleyes:
 
Ultima modifica:

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
ciao Tommy,
unlink e' nel codice,
il problema che devo prelevare un campo da un'altra tabella, senza di quello non funziona
adesso ricevo questo perche' non trova il percorso

Warning: unlink(../image_upload/actor/uploads/ (40)/Alex_72efd9d45f9efb3257880f4cb714fcbf.jpg): No such file or directory in E:\OpenServer\domains\localhost\cinema\crud\gallery_delete.php on line 32

manca la variabile $nome per ricostruire il percorso, cosi

Alex (40)/Alex_72efd9d45f9efb3257880f4cb714fcbf.jpg

ci vorrebbe un'altra query, ma non so come fare, ricevo errore

SQL:
$sql = "select * from actor WHERE actor_id=". $actor_id;
e li si trova questo

$nome= $row ['nome'];
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
non capisco, neanche questa funziona, non riesce a caricare la variabile $nome :rolleyes:

PHP:
$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;
    
    $nome= $row ['nome'];
PHP:
$createDeletePath = "../image_upload/actor/uploads/$nome ($actor_id)/".$getIamgeName;
 

Tommy03

Utente Attivo
6 Giu 2018
508
50
28
17
Bassano del Grappa (VI)
Mi sa che ti manca il
PHP:
while($row=mysqli_fetch_assoc($sql)){
$nome=$row['nome'];
}
$sql = " select * from actor a inner join gallery g on g.actor_id_fk = a.actor_id where a.actor_id=". $actor_id; $nome= $row ['nome'];
PHP:
$sql = mysqli_query($conn, "
select *
from
actor a
inner join
gallery g
on
g.actor_id_fk = a.actor_id
where
a.actor_id='$actor_id'");
   
while($row=mysqli_fetch_assoc($sql)){
$nome=$row['nome'];
}
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
ciao marino,
non va

dopo la query e' presente questo

PHP:
$rs = mysqli_query($conn, $sql);
se inserisco il codice sopra ricevo errore


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);
   
    $nome= $getRow ['nome'];
   
   
    if(isset($_GET['id']))
    {
       
        $selectSql = "
       
        select * from gallery WHERE actor_id_fk = ".$_GET['id'];
        $rsSelect = mysqli_query($conn,$selectSql);
        $getRow = mysqli_fetch_assoc($rsSelect);
       
       
       
        $getIamgeName = $getRow['photo'];
       
       
       
       
        $createDeletePath = "../image_upload/actor/uploads/$nome ($actor_id)/".$getIamgeName;

codice completo

 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
ciao Tommy,
se metto il fetch assoc dopo mysqli_query ricevo errore, questo perche' dopo if(isset($_GET['id'])) e' presente un altro fetch assoc

Codice:
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, string given in E:\OpenServer\domains\localhost\cinema\crud\gallery_delete.php on line 29

Warning: unlink(../image_upload/actor/uploads/ (40)/): No such file or directory in E:\OpenServer\domains\localhost\cinema\crud\gallery_delete.php on line 50
questo

PHP:
$getRow = mysqli_fetch_assoc($rsSelect);
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
modificato cosi, ma non funziona

PHP:
$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($sql)){
$nome=$row['nome'];
}
  
  
    if(isset($_GET['id']))
line 29 e'

Codice:
while($row=mysqli_fetch_assoc($sql)){
sshot-1.png


inoltre se clicco su Delete image ricevo un altro errore

line 122 e' un altro fetch assoc che stranamente funziona e visualizzo l'immagine

Codice:
while($row = mysqli_fetch_assoc($rs))
sshot-2.png
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
Devi metterci $rs non $sql...

se metto $rs e vado sulla pagina ecco cosa succede

sshot-3.png


non visualizzo il preview ed inoltre una immagine e' stata cancellata dal database

vado un'altra volta ed e' sparita l'altra immagine nel database

praticamente cancella a ogni apertura :mad:
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
cinema.php e' la scheda attori da li apro lo script
gallery_delete.php

il funzionamento dello script dovrebbe essere semplice, cancella le foto selezionate dal database e poi dalla cartella
invece e' diventato complicato :rolleyes:
 

Tommy03

Utente Attivo
6 Giu 2018
508
50
28
17
Bassano del Grappa (VI)
Io continuo a vedere questo
PHP:
$rs = mysqli_query($conn, $sql);
    
    while($row=mysqli_fetch_assoc($sql)){
$nome=$row['nome'];
}
Non può funzionare se non metti $rs al posto di $sql....
 

Alex_70

Utente Attivo
13 Nov 2018
371
14
18
HELL
Io continuo a vedere questo
PHP:
$rs = mysqli_query($conn, $sql);
 
    while($row=mysqli_fetch_assoc($sql)){
$nome=$row['nome'];
}
Non può funzionare se non metti $rs al posto di $sql....
ho messo $rs e cancella le immagini automaticamente ad ogni apertura della pagina :p

comportamento strano

edit: cancella automaticamente sia dal database che nella cartella, il menu' di scelta viene saltato :rolleyes:
 
Autore Discussioni simili Forum Risposte Data
giancadeejay PHP 14
1 MS Access 16
D MySQL 1
I PHP 6
L PHP 0