Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di d4ve
    Registrato dal
    May 2006
    Messaggi
    50

    Eliminare file in una tabella mysql con php

    Buonasera a tutti!

    Ho fatto un piccolo script che mi visualizza i file presenti in una tabella e mi permette di eliminarli.
    O almeno, dovrebbe permettermelo, ma se clicco sul link ELIMINA, non succede nulla.

    Dove sbaglio?

    Il codice è questo:


    Codice PHP:
    <?php
    $conn 
    mysql_connect("localhost""user""pwd") OR
          die(
    "Impossibile connettersi al database!");

    mysql_select_db("namedb"$conn);

    $risultato mysql_query("Select * from upload_files"$conn);

    //controlla che sia stato effettuato il post della pagina

    if ($_POST){

    if (isset(
    $_GET['id_file'])){

    elimina_messaggio($id_file);

    }

    }

    function 
    elimina_messaggio($id_file) {

    $delete mysql_query("DELETE FROM upload_files WHERE id_file=$id_file");

    if (!
    $delete) {

    die(
    "Errore nell'eliminazione del file!");

    }

    }

    //elenco dei file
    print "<table><th>ID</th><th>nome file</th><th>tipo file</th><th>descrizione</th><th>ELIMINA</th>";

    while(
    $riga mysql_fetch_array($risultato))  {

    print 
    "<tr>";
    print 
    "<td> " $riga['id_file'] . "</td>";
    print 
    "<td> " $riga['nome_file'] . "</td>";
    print 
    "<td> " $riga['tipo_file'] . "</td>";
    print 
    "<td> " $riga['description'] . "</td>";




    //link per l'eliminazione del record

    $link $SERVER['PHP_SELF'].'?id_file=' $riga['id_file'];

    print 
    "<td><a href=\"$link\">ELIMINA</a></td>";
    print 
    "</tr>";

    }

    //fine tabella
    print "</table>";


    ?>

    Grazie di nuovo!
    nel tempo libero, respiro...

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ti appare il messaggio "Errore nell'eliminazione del file"?
    Il campo upload_files contiene effettivamente un file oppure è un campo varchar che contiene il path che indica dove il file è salvato?

    Nel secondo caso prova così
    Codice PHP:
    $delete mysql_query("DELETE FROM upload_files WHERE id_file='" $id_file "'"); 
    ma ovviamente se il file è in una cartella del server non verrà rimosso, questo eliminerà solo l'informazione nel db, per eliminare effettivamente il file dovrai usare la funzione unlink().

  3. #3
    Utente di HTML.it L'avatar di d4ve
    Registrato dal
    May 2006
    Messaggi
    50
    No appunto, non mi appare nessun messaggio.
    Clicco sul link ma nada, nulla accade.

    I file sono contenuti effettivamente nel db, non hanno una path specifica.
    La tabella upload_files contiene 4 campi.. id_file, nome_file, tipo_file, description.

    Cos'altro può essere che non va?
    Forse è necessario un submit al posto di un semplice link?


    Grazie per l'aiuto!
    nel tempo libero, respiro...

  4. #4
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    cosa c'entra il
    Codice PHP:
    if ($_POST){ 
    se poi utilizzi GET?

  5. #5
    Utente di HTML.it L'avatar di d4ve
    Registrato dal
    May 2006
    Messaggi
    50
    Controlla che sia stato fatto il GET al POST.. no?

    Non sono espertissimo ahimè..
    nel tempo libero, respiro...

  6. #6
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    cosa intendi per "sia stato fatto il GET al POST"?

  7. #7
    Originariamente inviato da brodik
    cosa intendi per "sia stato fatto il GET al POST"?
    Anche io sono curioso
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  8. #8
    Originariamente inviato da d4ve
    Controlla che sia stato fatto il GET al POST.. no?
    curioso 'sto thread...

    comunque sia:

    if ($_POST){

    e' sempre TRUE perche' $_POST e' sempre settato

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Utente di HTML.it L'avatar di d4ve
    Registrato dal
    May 2006
    Messaggi
    50
    ehm, ho detto una castroneria vero?

    ok, evito di farmi ulteriori trip con GET e POST.

    Qual'è quindi la via giusta per far eseguire quella query al link?
    nel tempo libero, respiro...

  10. #10
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    prova così

    Codice PHP:
    <?php
    $conn 
    mysql_connect("localhost""user""pwd") OR
          die(
    "Impossibile connettersi al database!");
    mysql_select_db("namedb"$conn);


    //controlla che sia stato effettuato il post della pagina

    if(isset($_GET['id_file'])){
        echo 
    elimina_messaggio($_GET['id_file'],$conn);
        }

    function 
    elimina_messaggio($id_file,$conn) {
        
    //controllo solo che sia un numero intero
        
    if((int)$id_file != $id_file) return "$id_file non sembra essere un id valido";
        
        
    $delete mysql_query("DELETE FROM upload_files WHERE id_file=$id_file");
        
        return 
    mysql_affected_rows($conn)." records sono stati cancellati";
        }

    //elenco dei file
    print "<table><th>ID</th><th>nome file</th><th>tipo file</th><th>descrizione</th><th>ELIMINA</th>";

    $risultato mysql_query("Select * from upload_files"$conn);

    while(
    $riga mysql_fetch_array($risultato))  {

        print 
    "<tr>";
        print 
    "<td> " $riga['id_file'] . "</td>";
        print 
    "<td> " $riga['nome_file'] . "</td>";
        print 
    "<td> " $riga['tipo_file'] . "</td>";
        print 
    "<td> " $riga['description'] . "</td>";
        
        
    //link per l'eliminazione del record
        
    $link $SERVER['PHP_SELF'].'?id_file=' $riga['id_file'];
        
        print 
    "<td><a href=\"$link\">ELIMINA</a></td>";
        print 
    "</tr>";
        
        }

    //fine tabella
    print "</table>";


    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

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.