|
| Kan ikke overføre session-objekt til ny Fra : Simon Justesen |
Dato : 06-09-06 09:37 |
|
Jeg er ved at udvikle en shoppingkurv vha. AJAX ( www.xajaxproject.org)
og wfcart (Webforce cart).
Varene bliver fint tilføjet kurven og der dukker et link op, som
brugeren kan klikke på for at komme videre. Men sessionen-bliver ikke
overført. Jeg har prøvet at tilføje mit session id til det link der
sender brugeren til næste side, men det fungerer ikke.
Jeg kan godt tilføje enkeltelementer, så jeg tror det er linjen
if (in_array($items['vareid'], $_SESSION['session_varer'],1) == false)
der ikke fungerer som forventet (se nedenstående kode)
$cart og $_SESSION['session_varer'] burde indeholde det samme.
Det hele virker fint uden ajax, så det er muligvis der problemet ligger.
Har i forvejen postet om problemet på xajax's forum
Kode function Tilfoej_vare($vareid, $antal, $varepris, $varenavn, $placeid)
{
// init variabler
$_SESSION['kurv'] = '';
$cart = '';
$cart &= $_SESSION['kurv'];
if(!is_object($cart)) $cart = new wfCart();
$sessionparam = session_name() . '=' . session_id();
global $user;
global $conf;
$vareid = trim($vareid);
$antal = trim($antal);
$varepris = trim($varepris);
$varenavn = trim($varenavn);
$placeid = trim($placeid);
$objResponse = new xajaxResponse('ISO-8859-1');
ob_start();
$_SESSION['session_varer'][] = array("vareid" => $vareid,
"antal" => $antal, "varepris" => $varepris, "varenavn" => $varenavn,
"placeid" => $placeid);
$table_contents = $user->visProduktliste();
foreach($_SESSION['session_varer'] as $items)
{
if (in_array($items['vareid'],
$_SESSION['session_varer'],1) == false)
{
$cart->add_item($items['vareid'], $items['antal'],
$items['varepris'], $items['varenavn'], $items['placeid']);
// $objResponse->addAlert(print_r($cart,true));
}
else
{
$cart->edit_item($items['vareid'], $items['antal']);
}
}
if ($cart->total < $conf['portograense'])
{
$forsendelsespris =
number_format("$conf[forsendelsespris]","2",",",".");
$_SESSION['forsendelsespris'] = $forsendelsespris;
}
else
{
$forsendelsespris = 0;
$forsendelsespris = number_format("$forsendelsespris","2",",",".");
$_SESSION['forsendelsespris'] = 0;
}
$ialt = $cart->total + $forsendelsespris;
$ialt = number_format("$ialt","2",",",".");
$pris_total = number_format($cart->total,"2",",",".");
ob_end_clean();
// Send input tilbage til brugerens computer
$objResponse->addAssign('produkttabel','innerHTML',$table_contents);
$objResponse->addAssign('total','innerHTML',$pris_total);
$objResponse->addAssign('forsendelsespris','innerHTML',$forsendelsespris);
foreach ($cart->get_contents() as $tmp_items)
{
$antalplacement[] = $tmp_items['placement'];
$antalarray[] = $tmp_items['qty'];
$objResponse->addAssign('antal'.$tmp_items['placement'],'value',
$tmp_items['qty']);
$_SESSION['ialt_antal'] = array_sum($antalarray);
}
$objResponse->addAssign('taeller','innerHTML',
$_SESSION['ialt_antal']);
$objResponse->addAssign('ialt','innerHTML', $ialt);
$objResponse->addAssign('nextscreen','innerHTML','<a
href="bestilling.php" onclick="document.form.vare.submit()"
style="text-align: right; font-size: 10pt; font-weight: bold; color:
#000000;">Videre til næste trin</a>');
return $objResponse;
}
$xajax = new xajax();
$xajax->debugOn(); // Uncomment this line to turn debugging on
$xajax->setCharEncoding('ISO-8859-1');
$xajax->decodeUTF8InputOn();
$xajax->registerFunction("Tilfoej_vare");
$xajax->processRequests();
$_SESSION['ialt_antal'] = 0;
?> |
Hjæælp og på forhånd tak :)
Med venlig hilsen
Simon
| |
Simon Justesen (06-09-2006)
| Kommentar Fra : Simon Justesen |
Dato : 06-09-06 13:42 |
|
Simon Justesen wrote:
> Jeg er ved at udvikle en shoppingkurv vha. AJAX ( www.xajaxproject.org)
> og wfcart (Webforce cart).
>
> Varene bliver fint tilføjet kurven og der dukker et link op, som
> brugeren kan klikke på for at komme videre. Men sessionen-bliver ikke
> overført. Jeg har prøvet at tilføje mit session id til det link der
> sender brugeren til næste side, men det fungerer ikke.
>
> Jeg kan godt tilføje enkeltelementer, så jeg tror det er linjen
> if (in_array($items['vareid'], $_SESSION['session_varer'],1) == false)
> der ikke fungerer som forventet (se nedenstående kode)
>
> $cart og $_SESSION['session_varer'] burde indeholde det samme.
>
> Det hele virker fint uden ajax, så det er muligvis der problemet ligger.
> Har i forvejen postet om problemet på xajax's forum
>
> Kode > function Tilfoej_vare($vareid, $antal, $varepris, $varenavn, $placeid)
> {
> // init variabler
> $_SESSION['kurv'] = '';
> $cart = '';
>
> $cart &= $_SESSION['kurv'];
> if(!is_object($cart)) $cart = new wfCart();
>
> $sessionparam = session_name() . '=' . session_id();
>
> global $user;
> global $conf;
>
> $vareid = trim($vareid);
> $antal = trim($antal);
> $varepris = trim($varepris);
> $varenavn = trim($varenavn);
> $placeid = trim($placeid);
>
> $objResponse = new xajaxResponse('ISO-8859-1');
>
> ob_start();
>
> $_SESSION['session_varer'][] = array("vareid" => $vareid,
> "antal" => $antal, "varepris" => $varepris, "varenavn" => $varenavn,
> "placeid" => $placeid);
>
> $table_contents = $user->visProduktliste();
>
> foreach($_SESSION['session_varer'] as $items)
> {
> if (in_array($items['vareid'], $_SESSION['session_varer'],1)
> == false)
> {
> $cart->add_item($items['vareid'], $items['antal'],
> $items['varepris'], $items['varenavn'], $items['placeid']);
> // $objResponse->addAlert(print_r($cart,true));
> }
> else
> {
> $cart->edit_item($items['vareid'], $items['antal']);
> }
> }
>
>
> if ($cart->total < $conf['portograense'])
> {
> $forsendelsespris =
> number_format("$conf[forsendelsespris]","2",",",".");
> $_SESSION['forsendelsespris'] = $forsendelsespris;
> }
> else
> {
> $forsendelsespris = 0;
> $forsendelsespris = number_format("$forsendelsespris","2",",",".");
> $_SESSION['forsendelsespris'] = 0;
> }
>
> $ialt = $cart->total + $forsendelsespris;
> $ialt = number_format("$ialt","2",",",".");
> $pris_total = number_format($cart->total,"2",",",".");
>
> ob_end_clean();
>
>
> // Send input tilbage til brugerens computer
> $objResponse->addAssign('produkttabel','innerHTML',$table_contents);
> $objResponse->addAssign('total','innerHTML',$pris_total);
>
> $objResponse->addAssign('forsendelsespris','innerHTML',$forsendelsespris);
>
> foreach ($cart->get_contents() as $tmp_items)
> {
> $antalplacement[] = $tmp_items['placement'];
> $antalarray[] = $tmp_items['qty'];
>
>
> $objResponse->addAssign('antal'.$tmp_items['placement'],'value',
> $tmp_items['qty']);
>
> $_SESSION['ialt_antal'] = array_sum($antalarray);
> }
> $objResponse->addAssign('taeller','innerHTML',
> $_SESSION['ialt_antal']);
> $objResponse->addAssign('ialt','innerHTML', $ialt);
> $objResponse->addAssign('nextscreen','innerHTML','<a
> href="bestilling.php" onclick="document.form.vare.submit()"
> style="text-align: right; font-size: 10pt; font-weight: bold; color:
> #000000;">Videre til næste trin</a>');
>
> return $objResponse;
> }
>
> $xajax = new xajax();
> $xajax->debugOn(); // Uncomment this line to turn debugging on
> $xajax->setCharEncoding('ISO-8859-1');
> $xajax->decodeUTF8InputOn();
> $xajax->registerFunction("Tilfoej_vare");
> $xajax->processRequests();
>
> $_SESSION['ialt_antal'] = 0;
>
> ?>
> |
>
> Hjæælp og på forhånd tak :)
>
> Med venlig hilsen
> Simon
problem løst :)
Jeg glemte at opdatere session-objektet efter $cart->add_item()
$_SESSION['kurv'] = $cart;
Simon
| |
|
|