Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    eliminare file dal server

    Salve ho creato uno script per caricare immagini sul server.

    Funziona che viene caricata l'immagine sul server e tutti i dati (link all'immagine compreso) nel db (mysql).

    Ora vorrei procedere alla creazione della pagina di elimina delle immagini (però vorrei dare la possibilità di eliminare + immagini contemporaneamente. Vi riporto il mio script.
    Questa è la pagina dalla quale si scelgono le immagini da eliminare
    Codice PHP:
    $query1 "SELECT * FROM immagini ORDER BY id DESC";

    $results1 mysql_query($query1) or die (mysql_error());
    echo 
    '<form action="elimina_immagini.php" method="post">';
    while (
    $row1 mysql_fetch_array($results1))
    {
    echo 
    "<input type=\"checkbox\" name=\"ID[]\" value=\"$row1[id]\" /> $row1[image] - [b]$row1[name][/b]
    "
    ;

    Questo è la pagina di elaborazione del file di elimina_immagini.php
    Codice PHP:
    foreach ($_POST[ID] as $delete_id)
    {
    $query2 "SELECT * FROM immagini WHERE id=$_POST[id]";
    $results2 mysql_query($query2) or die(mysql_error());
    $row2 mysql_fetch_array($results2);

    unlink($row2['link']);

    $query "DELETE FROM immagini WHERE id='$delete_id'";

    if(
    mysql_query($query))   echo "<p align=\"center\">Eliminazione avvenuta con successo.</p>";
    else    echo 
    "<p align=\"center\">Errore durante l'eliminazione</p>";


    in questo modo però mi elimina solamente il file dal database.. cmq $row2[link] è il percorso all'immgine es www.tuosito.com/immagine.jpg infatti per richiamare un immagine mi basta inserire quella variabile
    La rovina del mondo sara' l'indifferenza. Ma chi se ne frega!!

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    Re: eliminare file dal server

    Originariamente inviato da Chef89
    Salve ho creato uno script per caricare immagini sul server.

    Funziona che viene caricata l'immagine sul server e tutti i dati (link all'immagine compreso) nel db (mysql).

    Ora vorrei procedere alla creazione della pagina di elimina delle immagini (però vorrei dare la possibilità di eliminare + immagini contemporaneamente. Vi riporto il mio script.
    Questa è la pagina dalla quale si scelgono le immagini da eliminare
    Codice PHP:
    $query1 "SELECT * FROM immagini ORDER BY id DESC";

    $results1 mysql_query($query1) or die (mysql_error());
    echo 
    '<form action="elimina_immagini.php" method="post">';
    while (
    $row1 mysql_fetch_array($results1))
    {
    echo 
    "<input type=\"checkbox\" name=\"ID[]\" value=\"$row1[id]\" /> $row1[image] - [b]$row1[name][/b]
    "
    ;

    Questo è la pagina di elaborazione del file di elimina_immagini.php
    Codice PHP:
    foreach ($_POST[ID] as $delete_id)
    {
    $query2 "SELECT * FROM immagini WHERE id=$_POST[id]";
    $results2 mysql_query($query2) or die(mysql_error());
    $row2 mysql_fetch_array($results2);

    unlink($row2['link']);

    $query "DELETE FROM immagini WHERE id='$delete_id'";

    if(
    mysql_query($query))   echo "<p align=\"center\">Eliminazione avvenuta con successo.</p>";
    else    echo 
    "<p align=\"center\">Errore durante l'eliminazione</p>";


    in questo modo però mi elimina solamente il file dal database.. cmq $row2[link] è il percorso all'immgine es www.tuosito.com/immagine.jpg infatti per richiamare un immagine mi basta inserire quella variabile
    devi passargli il percorso sul server, non quello web, usa la funzione basename() per tirarti fuori il nome del file, poi aggiungigli il percorso assoluto tipo:

    $_SERVER['DOCUMENT_ROOT'].'dir_immagini/'.basename($row2['link']);

    ciao

  3. #3
    ciao ho fatto come hai detto te.. ma non funziona mi riporta questo errore.

    Codice PHP:
    Warningunlink(/var/tsite/img/tv/) [function.unlink]: Is a directory in /var/tsite/admin/elimina_immagine.php on line 34

    //linee adiacenti e la linea 34

    if($row2['tipo'] == 'a' OR $row2['tipo'] == 'c')
    {
    unlink($_SERVER['DOCUMENT_ROOT'].'img/telefilms/'.basename($row2['link']));
    }
    else
    {
    unlink($_SERVER['DOCUMENT_ROOT'].'img/tv/'.basename($row2['link']));

    io non vedo cosa ci sia di sbagliato..
    La rovina del mondo sara' l'indifferenza. Ma chi se ne frega!!

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    te lo dice...
    è una directory...

  5. #5
    si ma la directory esiste ed è corretta..

    in pratica lo script dovrebbe vedere dall'immagine selezionata il tipo.. se è di tipo a o c allora utilizzare la directory 1 altrimenti la 2

    non capisco xke mi segni che la directory è sbagliata.. anche perchè il percorso all'immagine è giusto

    cmq ora ho modificato il file nel quale vengono caricate le immagini nel db e ho inserito un campo con il nome del file quindi nel database c'è un campo con il nome_file


    questo è il nuovo codice.. solo che continua a darmi errore di directory
    Codice PHP:
    foreach ($_POST[ID] as $delete_id)
    {
    $query2 "SELECT * FROM tfn_images WHERE id='$_POST[id]'";
    $results2 mysql_query($query2) or die(mysql_error());
    $row2 mysql_fetch_array($results2);
    if(
    $row2['type'] == 'a' OR $row2['type'] == 'c')
    {
    unlink($_SERVER['DOCUMENT_ROOT'].'img/telefilms/'.basename($row2['file_name']));
    }
    else
    {
    unlink($_SERVER['DOCUMENT_ROOT'].'img/tv/'.basename($row2['file_name']));

    La rovina del mondo sara' l'indifferenza. Ma chi se ne frega!!

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    ma tu stai cercando di rimuovere un file o una directory?

    Perchè nel codice precedente sembra che $row2['filename'] sia vuoto.

    Prova a stampare con un echo il percorso al file che stai per rimuovere e vedi se è quello che ti aspetti.

    ciao

  7. #7
    ho provato a fare come hai detto tu ed in effetti mi seleziona solo la directory.. e non ci aggiunge il file

    io devo eliminare i file selezionati dalla pagina precedente.. solo che non riesco.. ho controllato il db nella parte riguardante il nome_file ma li viene riempito il campo con nome_file.ext applicato alla $_SERVER['DOCUMENT_ROOT'].'img/telefilms/'.$row2['nome_file'] non funziona

    cmq il mio script funziona solo in parte.. xke il record dal database viene eliminato.. ma non viene eliminata l'immagine dal server
    La rovina del mondo sara' l'indifferenza. Ma chi se ne frega!!

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da Chef89
    ho provato a fare come hai detto tu ed in effetti mi seleziona solo la directory.. e non ci aggiunge il file

    io devo eliminare i file selezionati dalla pagina precedente.. solo che non riesco.. ho controllato il db nella parte riguardante il nome_file ma li viene riempito il campo con nome_file.ext applicato alla $_SERVER['DOCUMENT_ROOT'].'img/telefilms/'.$row2['nome_file'] non funziona

    cmq il mio script funziona solo in parte.. xke il record dal database viene eliminato.. ma non viene eliminata l'immagine dal server
    Ma scusa se fai un print_r($row2) lo vedi il contenutoo di $row2? se non vedi nulla è un problema di estrazione dei dati da db.

    ciao

  9. #9
    non mi fa vedere niente..

    questo di seguito è il codice della pagina con il form.. dalla quale si scelgono le immagini che si vogliono eliminare tramite checkbox

    Codice PHP:
    $query1 "SELECT * FROM tfn_images ORDER BY id DESC LIMIT $offset$rowsPerPage";

    $results1 mysql_query($query1) or die (mysql_error());
    echo 
    '<form action="elimina_immagini.php" method="post">';
    while (
    $row1 mysql_fetch_array($results1))
    {

    $width 150;
      
      
    $div $row1['width'] / $width;
      
    $nh $row1['height'] / $div;

    echo 
    "<input type=\"checkbox\" name=\"ID[]\" value=\"$row1[id]\" /><img src=\"../$row1[link]\" width=\"$width\" height=\"$nh\"> - [b]$row1[nome][/b]

    "
    ;
    }
    echo 
    '




    <input type="submit" value="Elimina" />
    </form>'

    questa qui invece dovrebbe essere la pagina di eliminazione dei dati. In pratica dovrebbe passare l'id da quel form di modo che con la pagina di elaborazione posso eliminare l'immagine giusta identificata dall'id. Solo che ho 2 directory dove vengono salvate le immagini. La prima è quella dove vengono salvate tutte le immagini dei telefilm e degli attori, mentre l'altra dove vengono salvate tutte le immagini provenienti dalla televisione, quindi ho dovuto dare una tipologia alle immagini se il tipo è A o C allora deve usare la prima directory altrimenti la seconda:

    Codice PHP:
    foreach ($_POST[ID] as $delete_id)
    {
    $query2 "SELECT * FROM immagini WHERE id='$_POST[id]'";
    $results2 mysql_query($query2) or die(mysql_error());
    $row2 mysql_fetch_array($results2);
    if(
    $row2['tipo'] == 'a' OR $row2['tipo'] == 'c')
    {
    unlink($_SERVER['DOCUMENT_ROOT'].'img/telefilms/'.$row2['nome_file']);}
    else
    {
    unlink($_SERVER['DOCUMENT_ROOT'].'img/tv/'.$row2['nome_file']);}
    }


    $query "DELETE FROM immagini WHERE id='$delete_id'";

    if(
    mysql_query($query))
    {
    echo 
    "<p align=\"center\">Eliminazione avvenuta con successo.</p>";
    }
    else   {echo 
    "<p align=\"center\">Errore durante l'eliminazione</p>"; }



    con questo codice avviene perfettamente l'eliminazione del record nel database ma mi da un errore nella directory e quindi l'immagine continua ad essere caricata sul server, invece che eliminata definitivamente
    La rovina del mondo sara' l'indifferenza. Ma chi se ne frega!!

  10. #10
    mancano le virgolette quando richiami il valore della variabile $_POST

    Codice PHP:
    foreach ($_POST['ID'] as $delete_id
    le variabile in php sono case sensitive. Hai scritto prima ID maiuscolo e poi in minuscolo nella query.
    Quando richiami la query ti consiglio di associare il valore di $_POST in un'altra variabile giusto per semplificarti la vita con le virgole e virgolette

    Codice PHP:
    $id=$_POST['id'];
    $query2 "SELECT * FROM immagini WHERE id='$id'" 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.