• User

    controllo dati che non funziona

    ciao,

    nel DB ho 2 tipi di prodotti:

    • prodotti normali
    • abbonamenti

    per questioni di spese di spedizione devo fare in modo che se all'interno del carrello ho un prodotto normale, non si può aggiungere un abbonamento e viceversa.
    per distinguere un prodotto da un abbonamento ho aggiunto un campo ENUM nella tabella prodotti, in cui se è un prodotto normale viene identificato come 'N' (default), mentre se è un abbonamento viene indentificato con un 'S'.

    Nella funzione addToCart() che è quella che gestisce l'inserimento, ho aggiunto il codice per provare a fare un controllo che però non funziona bene.
    mi visualizza il messaggio solo se inserisco 2 prodotti (o abbonamenti) uguali. altrimenti il controllo non funziona.

    funzione completa:
    [php]function addToCart()
    {

        // make sure the product id exist
    if (isset($_GET['p']) && (int)$_GET['p'] > 0) {
        $productId = (int)$_GET['p'];
    } else {
        header('Location:home.php');
    }
    
    // does the product exist ?
    $sql = "SELECT pd_id, pd_qty
            FROM tbl_product
             WHERE pd_id = $productId";
               $result = dbQuery($sql);
    
    if (dbNumRows($result) != 1) {
        // the product doesn't exist
        header('Location: home.php?page=cart');
    }
    

    // INIZIO CODICE PER IL CONTROLLO
    $sql = "SELECT ct.pd_id, pd.pd_id, abbonamento
    FROM tbl_cart ct, tbl_product pd
    WHERE ct.pd_id = pd.pd_id
    AND pd.pd_id =$productId";
    $result = dbQuery($sql);
    while ($row = dbFetchAssoc($result)) {
    extract($row);

          if ($abbonamento == 'N' && $_GET['pd'] =='N') {
            echo "il prodotto che stai per inserire è dello stesso tipo presente nel carrello, cioè NON è un abbonamento"; exit;
    

    } elseif ($abbonamento == 'S' && $_GET['pd'] =='S') {
    echo "il prodotto che stai per inserire è dello stesso tipo presente nel carrello, cioè è un abbonamento";exit;
    } elseif ($abbonamento == 'N' && $_GET['pd'] =='S') {
    echo "il prodotto che stai per inserire non è dello stesso tipo. Nel carrello hai un prodotto normale, il tuo è un abbonamento";exit;
    } elseif ($abbonamento == 'S' && $_GET['pd'] =='N') {
    echo "il prodotto che stai per inserire non è dello stesso tipo. Nel carrello hai un abbonamento, il tuo è un prodotto normale";exit;
    }
    }
    // FINE CODICE PER IN CONTROLLO

    // current session id
    $sid = session_id();
    
    // check if the product is already
    // in cart table for this session
    $sql = "SELECT pd_id
            FROM tbl_cart
            WHERE pd_id = $productId AND ct_session_id = '$sid'";
    $result = dbQuery($sql)or die(mysql_error());;
    
    if (dbNumRows($result) == 0) {
        // put the product in cart table
        $sql = "INSERT INTO tbl_cart (pd_id, ct_qty, ct_session_id, lang_name, ct_date)
                VALUES ($productId, 1, '$sid', '{$_POST["lingua"]}', NOW())";
        $result = dbQuery($sql)or die(mysql_error());
    } else {
        // update product quantity in cart table
        $sql = "UPDATE tbl_cart
                SET ct_qty = ct_qty + 1
                WHERE ct_session_id = '$sid' AND pd_id = $productId";
    
        $result = dbQuery($sql)or die(mysql_error());
    }
    

    }[/php]
    cosa c'è che non va?:x sono ad un passo dal suicidio!:x


  • User

    ho risolto...mannaggia! io mi accanivo sul resto mentre l'errore era nella query
    :vai: