Hi,
habe hier bei einem Kunden in der 2.1.2.10 ein problem mit der includes/cart_actions.php
Legt man zB das Produkt Nr. 1045 in den Warenkorb, erscheint es dort nicht, statt dessen erscheint das Produkt mit der ID 1.
Grund liegt in der besagten Datei im switch bei 'add product' zeile 140:
(...)
} elseif ($_POST['cart_quantity'] !=''){
$_SESSION['cart']->add_cart((int)$_POST['products_id'], $_SESSION['cart']->get_quantity($_POST['products_id']) + $_POST['cart_quantity'], $_SESSION['cart']->get_attributes_from_id ($_POST['products_id']));//FIX-WISHLIST ATTRIBUTES call get_attributes_from_id()
$_SESSION['wishList']->remove($_POST['products_id']);//FIX LÖSCHEN (int) WEG
} else {
$pids = count($_POST['products_id']);
for($i = 0; $i < $pids; $i++){
if ($i == 0) {
$t_ids = $_POST['id'];
} else {
$t_ids = array();
}
$_SESSION['cart']->add_cart((int)$_POST['products_id'][$i], $_SESSION['cart']->get_quantity(xtc_get_uprid($_POST['products_id'][$i], $t_ids)) + xtc_remove_non_numeric($_POST['products_qty']), $t_ids);
}
}
Alles anzeigen
hier wird bei mir keine $_POST['cart_quantity'] übermittelt, sondern nur $_POST['products_qty'], dadurch springt er in den else block rein. da $_POST['products_id'] aber kein array ist, wird die pid trotz int cast wie ein ganz normaler string behalndelt: bei einem Produkct wird also das Zeichen an Index 0 ausgegeben --> die 1. Somit landet Produkt Nr 1 im Warenkorb.
Hab das jetzt mit nem is_array check
} else {
if(is_array($_POST['products_id'])){
$pids = count($_POST['products_id']);
for($i = 0; $i < $pids; $i++){
if ($i == 0) {
$t_ids = $_POST['id'];
} else {
$t_ids = array();
}
$_SESSION['cart']->add_cart((int)$_POST['products_id'][$i], $_SESSION['cart']->get_quantity(xtc_get_uprid($_POST['products_id'][$i], $t_ids)) + xtc_remove_non_numeric($_POST['products_qty']), $t_ids);
}
}else{
$_SESSION['cart']->add_cart((int)$_POST['products_id'], $_SESSION['cart']->get_quantity($_POST['products_id']) + $_POST['products_qty'], $_SESSION['cart']->get_attributes_from_id ($_POST['products_id']));//FIX-WISHLIST ATTRIBUTES call get_attributes_from_id()
$_SESSION['wishList']->remove($_POST['products_id']);//FIX LÖSCHEN (int) WEG
}
}
Alles anzeigen
gelöst. Da ich aber ehrlich gesagt nicht weiß, wann man überhaupt einen array von Produkten bestellen kann und eventuell auch andere das Problem haben, dachte ich "post es mal hier rein", vlt kann mir jemand was dazu sagen, der die größeren Zusammenhänge des Warenkorbes kennt (ich kenn das skript ja nicht wirklich gut und kann nur doof die Stelle finden, die mir Ärger macht, es fixen und hoffen, daß es nicht irgendwo anders negative Auswirkungen hat)
Dank und Gruß
SaHiB