Hallo,
ich habe ein Problem mit phpShop. Ich habe Felder hinzugefügt. Die Übergabe durch den Warenkorb bis hin zur Datenbank gibt keine Probleme, solange es normale Felder (Textfeld, PopUp) sind.
Ist es aber ein PopUp mit Mehrfachauswahl habe ich Probleme beim übergeben. Er übergibt mir nur "Array" als Wert nicht die selektierten Werte. Ich habe es geschafft, den Array zu splitten und die Werte im Warenkorb anzuzeige mit foreach(). Aber bei der update-funktion verliere ich die Infos in dem Array. Es handelt sich um das Feld "collections". Hier sind die Funktionen. Vielleicht kann mir einer sagen, wie ich das lösen kann.
Es wäre mir schon hilfreich, wenn mir einer sagen würde, an welcher Stelle der Funktionen ich ansetzen muss, damit auch das Feld collections als Array durchgeht.
*************************************************************************/
class ps_cart {
var $classname="ps_cart";
ich habe ein Problem mit phpShop. Ich habe Felder hinzugefügt. Die Übergabe durch den Warenkorb bis hin zur Datenbank gibt keine Probleme, solange es normale Felder (Textfeld, PopUp) sind.
Ist es aber ein PopUp mit Mehrfachauswahl habe ich Probleme beim übergeben. Er übergibt mir nur "Array" als Wert nicht die selektierten Werte. Ich habe es geschafft, den Array zu splitten und die Werte im Warenkorb anzuzeige mit foreach(). Aber bei der update-funktion verliere ich die Infos in dem Array. Es handelt sich um das Feld "collections". Hier sind die Funktionen. Vielleicht kann mir einer sagen, wie ich das lösen kann.
Es wäre mir schon hilfreich, wenn mir einer sagen würde, an welcher Stelle der Funktionen ich ansetzen muss, damit auch das Feld collections als Array durchgeht.
*************************************************************************/
class ps_cart {
var $classname="ps_cart";
PHP-Code:
/**************************************************************************
** name: add()
** created by: brett odonnell
** description: updates the quantity of all product_ids in the cart
** parameters:
** returns:
***************************************************************************/
function add(&$d) {
global $cart;
$db = new ps_DB;
$return=True;
$d["error"]="";
if(is_array($d["products"])){
for ($i=0;$i<count($d["products"]);$i++) {
if(!$this->add_item($d["products"][$i]["product_id"],
$d["products"][$i]["quantity"],
$d["products"][$i]["schrift"],
$d["products"][$i]["text"],
$d["products"][$i]["collections"])){
$d["error"] = $this->error;
$return=False;
}
}
}
else{
if(!$this->add_item($d["product_id"],
$d["quantity"],
$d["schrift"],
$d["text"],
$d["collections"])){
$d["error"] = $this->error;
$return=False;
}
}
return $return;
}
/**************************************************************************
** name: add_item()
** created by: brett odonnell
** description: adds an item to the shopping cart
** parameters:
** returns:
***************************************************************************/
function add_item($product_id,$quantity,$schrift,$text,$collections) {
global $cart;
$return=True;
$db = new ps_DB;
$this->error ="";
if(!$quantity){
$quantity=1;
}
// Check for negative quantity
if ($quantity < 1) {
$this->error = "(qty:$quantity) - To delete an item please click the 'Delete' link.";
return False;
}
if (!ereg("^[0-9]*$", $quantity)) {
$this->error .= "Please enter a valid quantity for this item.<br>";
$return=False;
}
//If the product publish is No then it will not display the item even if you
//enter or change the product_id in the URL bar.
$q = "SELECT product_name,product_publish FROM product WHERE product_id='$product_id'";
$db->query($q);
$db->next_record();
// if the product isn't publishable, don't allow the add or update
if ('N' == $db->f("product_publish") ) {
// set your "not available" error message here
$d["error"] = "We're sorry but ".$db->f("product_name")." is not available at this time.";
// when in ps_cart->update, you probably want to uncomment
// the line below to remove the product from the cart
//$this->delete($d);
return False;
} //end if prodcut_publish
// Check to see if checking stock quantity
if (CHECK_STOCK) {
$q = "SELECT product_in_stock ";
$q .= "FROM product where product_id=";
$q .= $product_id;
$db->query($q);
$db->next_record();
$product_in_stock = $db->f("product_in_stock");
if ($quantity > $product_in_stock) {
$this->error .= "Quantity selected exceeds available stock. - ";
$this->error .= "Currently have $product_in_stock items available.";
$return=False;
}
}
// If no quantity sent them assume 1
if ($quantity == "")
$quantity = 1;
// Check to see if we already have it
if(!$return){ return FALSE; }else{
$updated = 0;
// Check for duplicate and do not add to current quantity
for ($i=0;$i<$cart["idx"];$i++) {
if ($cart[$i]["product_id"] == $product_id) {
$updated = 1;
}
}
// If we did not update then add the item
if (!$updated) {
$cart[$cart["idx"]]["product_id"] = $product_id;
$cart[$cart["idx"]]["quantity"] = $quantity;
$cart[$cart["idx"]]["schrift"] = $schrift;
$cart[$cart["idx"]]["text"] = nl2br($text);
$cart[$cart["idx"]]["collections"] = $collections;
$cart["idx"]++;
}
}
return True;
}
/**************************************************************************
** name: update()
** created by: brett odonnell
** description: updates the quantity of all product_ids in the cart
** parameters:
** returns:
***************************************************************************/
function update(&$d) {
global $cart;
$db = new ps_DB;
for ($i=0;$i<$cart["idx"];$i++) {
if(!$this->update_item($i, $d["quantity"][$i], $d["schrift"][$i], $d["text"][$i], $d["collections"][$i])){
$d["error"] = $this->error;
return False;
}
}
}
/**************************************************************************
** name: update_item()
** created by: pablo
** description: updates the entire shopping cart
** parameters:
** returns:
***************************************************************************/
function update_item($idx, $quantity, $schrift, $text, $collections) {
global $cart;
$db = new ps_DB;
// Check for negative quantity
if ($quantity < 1) {
$this->error = "(IDX:$idx|QTY:$quantity) To delete an item please click the 'Delete' link.";
return False;
}
if (!ereg("^[0-9]*$", $quantity)) {
$this->error = "Please enter a valid quantity for this item.";
return False;
}
$product_id=$cart[$idx]["product_id"];
// Check to see if checking stock quantity
if (CHECK_STOCK) {
$q = "SELECT product_in_stock ";
$q .= "FROM product where product_id=";
$q .= $product_id;
$db->query($q);
$db->next_record();
$product_in_stock = $db->f("product_in_stock");
if ($quantity > $product_in_stock) {
$this->error = "Quantity selected exceeds available stock.<BR>";
$this->error .= "Currently have $product_in_stock items available.";
return False;
}
}
//If the product publish is No then it will not display the item even if you
//enter or change the product_id in the URL bar.
$q = "SELECT product_name,product_publish FROM product WHERE product_id='$product_id'";
$db->query($q);
$db->next_record();
// if the product isn't publishable, don't allow the add or update
if ('N' == $db->f("product_publish") ) {
// set your "not available" error message here
$d["error"] = "We're sorry but ".$db->f("product_name")." is not available at this time.";
// when in ps_cart->update, you probably want to uncomment
// the line below to remove the product from the cart
$this->delete($d);
return False;
} //end if prodcut_publish
if (!isset($idx)) {
$this->error = "No IDX was selected.";
return False;
}
$cart[$idx]["quantity"] = $quantity;
$cart[$idx]["schrift"] = $schrift;
$cart[$idx]["text"] = $text;
$cart[$idx]["collections"] = $collections;
return True;
}
Kommentar