Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    problema con eliminazione immagini

    ciao,

    ho questo codice che serve, in un pannello per la gestione di immagini, ad eliminare un immagine selezionata.
    Il problema è che se elimino un immagine, mi vengono eliminate entrambe e non solo quella selezionata.
    come posso risolvere questo problema?
    codice:

    Codice PHP:
    function deleteImage()
    {
        if (isset(
    $_GET['productId']) && (int)$_GET['productId'] > 0) {
            
    $productId = (int)$_GET['productId'];
        } else {
            
    header('Location: index.php');
        }

        
    $deleted _deleteImage($productId);

        
    // update the image and thumbnail name in the database ITALIANO
        
    $sql "UPDATE tbl_project
                SET prj_image = '', prj_thumbnail = ''
                WHERE prj_id = 
    $productId";
        
    dbQuery($sql)or die(mysql_error());


    $deleted_fr _deleteImage_fr($productId);

    // update the image and thumbnail name in the database  FRANCESE
        
    $sql_fr "UPDATE tbl_project_fr
                SET prj_image_fr = '', prj_thumbnail_fr = ''
                WHERE prj_id = 
    $productId";
        
    dbQuery($sql_fr)or die(mysql_error());


        
    header("Location: index.php?view=modify&productId=$productId");

    grazie

  2. #2
    ho migliorato un pò le cose aggiungendo un if

    Codice PHP:
    function deleteImage()
    {
        if (isset(
    $_GET['productId']) && (int)$_GET['productId'] > 0) {
            
    $productId = (int)$_GET['productId'];
        } else {
            
    header('Location: index.php');
        }

    if (
    $deleted _deleteImage($productId)) {  

        
    // update the image and thumbnail name in the database ITALIANO
        
    $sql "UPDATE tbl_project
                SET prj_image = '', prj_thumbnail = ''
                WHERE prj_id = 
    $productId";
        
    dbQuery($sql)or die(mysql_error());
    } else {  

    $deleted_fr _deleteImage_fr($productId);

    // update the image and thumbnail name in the database  FRANCESE
        
    $sql_fr "UPDATE tbl_project_fr
                SET prj_image_fr = '', prj_thumbnail_fr = ''
                WHERE prj_id = 
    $productId";
        
    dbQuery($sql_fr)or die(mysql_error());
    }

        
    header("Location: index.php?view=modify&productId=$productId");

    adesso cosa succede:
    se elimino la 1a immagine, ok funziona, la 2a img resta. mentre se cerco di eliminare la 2a, mi elimina la 1a e la 2a rimane. devo cliccare di nuovo sulla 2a per eliminarla.

  3. #3
    Codice PHP:
    if ($deleted _deleteImage($productId)) 
    Questo è un primo errore, così facendo valorizzi la variabile $deleted e la condizione sarà sempre "vera".

    Poi non ho capito bene quello che vuoi fare, alla funzione arriva semplicemente l'ID di un prodotto, tu parli di 2 immagini, da non cancellare entrambe, spiega meglio come funziona il tutto, cosa passi nella query_string per scegliere cosa cancellare e cosa mantenere?


  4. #4
    ciao,

    ti spiego brevemente.
    ho 2 tabelle: italiano e francese. inserisco i dati ( testo e immagine) l'id del prodotto è uguale per entrambe le tabelle.
    quando vado in modifìca, carico in un form i dati e l'immagine relativa a quel prodotto in entrambe le lingue, con la possibilità di modificare ( sostituire ) o eliminare singolarmente, l'immagine relativa.
    Per quanto riguarda l'inserimento e la sostituzione, funziona tutto, no problem, il problema ce l'ho quando voglio eliminare l'immagine relativa a un prodotto di una determita lingua.
    ci sono 2 funzioni ( una per lingua )che controllano la eliminazione:

    Codice PHP:
    function _deleteImage($productId)
    {
        
    // we will return the status
        // whether the image deleted successfully

        //***** ITALIANO ********
        
    $deleted false;

        
    $sql "SELECT prj_image, prj_thumbnail
               FROM tbl_project
                WHERE prj_id = 
    $productId";
        
    $result dbQuery($sql) or die('Cannot delete product image. ' mysql_error());

        if (
    dbNumRows($result)) {
            
    $row dbFetchAssoc($result);
            
    extract($row);

            if (
    $prj_image && $prj_thumbnail) {
                
    // remove the image file
                
    $deleted = @unlink(SRV_ROOT "images/product/$prj_image");
                
    $deleted = @unlink(SRV_ROOT "images/product/$prj_thumbnail");
            }
        }
        return 
    $deleted;
    }
    //     ************************ FRANCESE ****************
    function _deleteImage_fr($productId)
    {

    $deleted_fr false;

    $sql_fr "SELECT prj_image_fr, prj_thumbnail_fr
                FROM tbl_project_fr
                WHERE prj_id = 
    $productId";
        
    $result_fr dbQuery($sql_fr) or die('Cannot delete product image. ' mysql_error());

        if (
    dbNumRows($result_fr)) {
            
    $row_fr dbFetchAssoc($result_fr);
            
    extract($row_fr);

            if (
    $prj_image_fr && $prj_thumbnail_fr) {
                
    // remove the image file
                
    $deleted_fr = @unlink(SRV_ROOT "images/product/$prj_image_fr");
                
    $deleted_fr = @unlink(SRV_ROOT "images/product/$prj_thumbnail_fr");
            }
        }

        return 
    $deleted_fr;


  5. #5
    Ok, ma la funzione deleteImage() come fa a sapere quale immagine delle 2 vuoi cancellare se gli arriva solo l'ID del prodotto?

  6. #6
    ma se non sbaglio, nelle funzioni

    _deleteImage($productId)
    _deleteImage_fr($productId)

    ho le query di selezione della tabella, per cui so già dove andare a pescare la img giusta.
    il problema è come smistare le richieste di eliminazione da l'una o l'altra tabella

  7. #7
    Si ho capito che hai 2 funzioni che eliminano una un immagine ed una l'altra, ma cosa pretenti che il tuo script abbia intelligenza propria e decida di testa sua?

    Tu hai queste 2 immagini, queste 2 immagini avranno un link che riporta allo script di cancellazione, ovviamente il link non può essere identico per entrambe, altrimenti lo script non può fare differenza tra una e l'altra, quindi il link dovrà essere simile a questo
    codice:
    http://www.sito.it/index.php?view=delete&productId=60&lang=it
    http://www.sito.it/index.php?view=de...tId=60&lang=fr
    Quindi ti ripeto, la funzione deleteImage (non _deleteImage...) coem fa a sapere se deve cancellare l'immagine italiana o francese?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.