Visualizzazione dei risultati da 1 a 6 su 6

Discussione: delete multiplo

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    55

    delete multiplo

    ciao!
    mi serve un piccolo consiglio.

    ecco il codice:
    Codice PHP:
    //questo codice credo che lo sappia interpretare chiunque : )
    <a href="' . $_SERVER['PHP_SELF'] . '?cancella=' . $id . ';path=' . $path . '">
    Cancella
    </a

    Codice PHP:
    // se l'utente ha clikkato su: "Cancella" lo script cancellerà l'immagine "fisica" che sta sul server e il suo relativo record
    if(isset($_GET['cancella'])){ 
    $id $_GET['cancella']; 
    $path $_GET['path']; 
    unlink($path); 
    $delete = @mysql_query("DELETE FROM nomeTabella WHERE id = '$id'"); 

    Il problema è che clikkando su "Cancella", lo script cancella solo l'immagine dal server. Mentre per eliminare anche il record dal database devo clikkare una seconda volta..
    Quindi.. come posso fare perchè con un solo click su "Cancella" si elimini sia l'immmagine che sta sul server che il suo relativo record?

    In sostanza..
    come posso fare che questa istruzione:
    Codice PHP:
    unlink($path); 
    e questa:
    Codice PHP:
    $delete = @mysql_query("DELETE FROM nomeTabella WHERE id = '$id'"); 
    vengano eseguite insieme (clikkando una sola volta su "Cancella")?
    Mi potete aiutare per favore?

    p.s. se qualcuno prende in esame il mio problema sono disponibile a dare tutti i chiarimenti possibili

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    Non capisco perchè hai assegnato a $delete la query e soprattutto, perchè hai messo una chiocciola davanti.

    io per cominciare riscriverei quella riga per vedere se si verificano errori nella query:
    Codice PHP:
    // se l'utente ha clikkato su: "Cancella" lo script cancellerà l'immagine "fisica" che sta sul server e il suo relativo record

    if(isset($_GET['cancella'])){
    $id $_GET['cancella'];
    $path $_GET['path'];
    unlink($path);
    $delete = @mysql_query("DELETE FROM nomeTabella WHERE id = '$id'");


    Inoltre starei molto attento a cancellare file tramite una query string!
    Uno potrebbe cancellare potenzialmente qualsiasi file sul tuo server!
    Secondo me faresti meglio a immagazzinare il nome del file nella tabella, quindi fare una cosa di questo tipo:
    Codice PHP:
    if(isset($_GET['cancella'])){
    $id=mysql_real_escape_string($_GET['cancella']); //fa un escape per evitare injection
    $risorsa=mysql_query("SELECT nomefile FROM nomeTabella WHERE id = '$id'");
    $dati=mysql_fetch_assoc($risorsa);
    unlink($dati['nomefile']);
    mysql_query("DELETE FROM nomeTabella WHERE id = '$id'");


  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    555
    Codice PHP:
    // se l'utente ha clikkato su: "Cancella" lo script cancellerà l'immagine "fisica" che sta sul server e il suo relativo record 
    if(isset($_GET['cancella'])){ 
    $id $_GET['cancella']; 
    $path $_GET['path']; 
    unlink($path); 
    $delete "DELETE FROM nomeTabella WHERE id = '$id'" ;

    mysql_query($delete,$connessionealtuodb); 

    prova

  4. #4
    Ti consiglio vivamente di ascoltare il consiglio di Walessio...

    Inoltre starei molto attento a cancellare file tramite una query string!
    Uno potrebbe cancellare potenzialmente qualsiasi file sul tuo server!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    55
    Grazie a tutti quelli che hanno risposto!


    Originariamente inviato da Walessio
    Non capisco perchè hai assegnato a $delete la query e soprattutto, perchè hai messo una chiocciola davanti.
    La chiocciola in effetti non c'entrava nulla visto che dopo non ho fatto il controllo sulla query..

    ..Ho seguito tutti i tuoi utilissimi consigli, Walessio!

    Originariamente inviato da Walessio
    Inoltre starei molto attento a cancellare file tramite una query string!
    Uno potrebbe cancellare potenzialmente qualsiasi file sul tuo server!
    Secondo me faresti meglio a immagazzinare il nome del file nella tabella, quindi fare una cosa di questo tipo:
    Codice PHP:
    if(isset($_GET['cancella'])){
    $id=mysql_real_escape_string($_GET['cancella']); //fa un escape per evitare injection

    $risorsa=mysql_query("SELECT nomefile FROM nomeTabella WHERE id = '$id'");
    $dati=mysql_fetch_assoc($risorsa);
    unlink($dati['nomefile']);
    mysql_query("DELETE FROM nomeTabella WHERE id = '$id'");

    Però purtroppo il problema è rimasto..

    Cliccando una volta su "Cancella", elimina l'immagine. Poi al secondo clic, cancella il record dal database.
    Invece dovrebbe fare entrambe le cose al primo clic..

    tutto questo codice:
    Codice PHP:
    $id=mysql_real_escape_string($_GET['cancella']); //fa un escape per evitare injection 
    $risorsa=mysql_query("SELECT nomefile FROM nomeTabella WHERE id = '$id'"); 
    $dati=mysql_fetch_assoc($risorsa); 
    unlink($dati['nomefile']); 
    mysql_query("DELETE FROM nomeTabella WHERE id = '$id'"); 
    Dovrebbe eseguirlo in una volta sola..

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    55
    Perfetto, ho risolto!

    Mi dispiace ma non ho capito quale fosse il problema. Probabilmente al posto di fare una query per ricavare il nome dell'immagine, lo spedivo tramite l'URL e lo prendevo con il $_GET.

    Cmq ecco il codice finale:

    Codice PHP:
    if(isset($_GET['cancella'])){

    $id mysql_real_escape_string($_GET['cancella']); 

    $query mysql_query("SELECT nomeFile FROM nomeTabella WHERE id = '$id'"); 

    $path mysql_fetch_assoc($query); 

    unlink($path['path']); 

    mysql_query("DELETE FROM nomeTabella WHERE id = '$id'"); 


    Grazie di nuovo Walessio. Anche perchè grazie al tuo intervento ho imparato delle nuove istruzioni php

    Alla prossima..

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.