confrontare 2 dati nella tabella

ciao,

Ho dei prodotti da inserire nel carrello.

se il prodotto presente nel carrello è di tipo 'N' ( campo ENUM della tabella ) e il prodotto che sto per inserire è di tipo 'S' "fai qualcosa". e viceversa

però il problema è che i prodotti vengono inseriti nella stesso modo cioè

funzione.php =>carrello.php

$cartContent = getCartContent();
$numItem = count($cartContent);
if ($numItem > 0 ) {

$subTotal = 0;
for ($i = 0; $i < $numItem; $i++) {
    extract($cartContent[$i]);

//etc...resto del codice

quindi come faccio a confrontare 2 dati presenti in una tabella del DB se un prodotto è già inserito e l'altro lo sto per inserire?

grazie!!

inviato 10 anni fa
iTek
iTek
1
X 0 X

prima di inserire il nuovo prodotto estrai dal carrello tutti quelli presenti e fai i dovuti confronti...

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

niente, non so come inserire i controlli. :'(

li dovrei inserire nella funzione addToCart:

<?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');
   }

   // 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);

   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());
   }

   // an extra job for us here is to remove abandoned carts.
   // right now the best option is to call this function here
   deleteAbandonedCart();


header('home.php?page=cart&action=view');
}

all'altezza della query dove nei commenti c'è scritto:

// check if the product is already

// in cart table for this session

ho modificato il codice così:

<?php
$sid = session_id();

   // check if the product is already
   // in cart table for this session
   $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 AND ct_session_id = '$sid'";
   $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";
  } elseif ($abbonamento == 'S' && $_GET['pd'] =='S') {
           echo "il prodotto che stai per inserire è dello stesso tipo presente nel carrello, cioè è un abbonamento";
  } 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";
  } 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";
  }elseif (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());
   }
}

ma non funziona! il carrello mi appare sempre vuoto....

risposto 10 anni fa
iTek
iTek
1
X 0 X

aspetta, ho fatto un errore.

ecco il codice modificato:

<?php
// current session id
   $sid = session_id();

   // check if the product is already
   // in cart table for this session
   $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 AND ct_session_id = '$sid'";
   $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;
  }
    }
  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());
   }

ho chiuso il while prima e almeno mi carica il prodotto nel carrello.

adesso succede che se io inserisco un prodotto e poi ne inserisco un altro dello stesso tipo, funziona, mi dice che sto inserendo un prodotto dello stesso tipo, ma se inserisco un prodotto diverso, me lo inserisce senza darmi nessun avviso....

risposto 10 anni fa
iTek
iTek
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili