/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste