Het lukt me om nu artikelen toe te voegen aan een sesie. Alleen wil ik graag dat hij laat zien hoeveel artikelen (dus niet een totaal aantal) - maar aantal regels er in de sessie staan! Kan iemand me vertellen hoe dat moet?


<?php 
session_start(); 
$sessionid = session_id(); 
// Toevoegen 
if ( isset($_GET['verzenden'] ) && ereg('^[1-9][0-9]*$', $_GET['aantal'])) { 
$_SESSION['winkelwagen'][$_GET['ID']] = $_GET['aantal']; 
} 
// Laat lijst zien 
 ?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Naamloos document</title> 
</head> 

<body> 
<br /><br /> 

Dit is uw id: <?php echo $sessionid ?><br /> 
Dit is het product:<br /> 
<?php 
if ( isset($_SESSION['winkelwagen'] ) ) { 
foreach ( $_SESSION['winkelwagen'] as $key=>$val ) { 
echo "$val x $key<br />"; 
} 
} 
?> 
<br /> 
<a href="a_sessie.php">Terug</a><br /> 
<br /> 

<form action="<?php echo $_SERVER["PHP_SELF"] ?>"> 
Producten <input type="text" name="ID" /><br /> 
Aantal <input type="text" name="aantal" /> 
<input type="submit" name="verzenden" value="verzend" /> 
</form>

Modedit
Code in juiste tags gezet
echo count($_SESSION['winkelwagen']);?
Die ereg, die verouderd is, kan sowieso met is_numeric of ctype_digit worden vervangen.
Ik zou geen is is_numeric gebruiken, de waarden in je session zijn ID's die refereren naar een product. Bij is_numeric geeft 0.1 ook een true terwijl dat nooit een id kan zijn. Dus gewoon controleren met ctype_digit, daar zijn alleen hele getallen toegestaan (1, 2, 3) etc.
Wat mij betreft had hij dat helemaal zelf kunnen uitvinden.
Maar kunnen jullie me laten zien hoe ik het aantal regels kan weergeven?!
Misschien moet je even een beetje duidelijker wezen als mijn oplossing van hierboven niet werkt.
Verder zou je ook zelf even php.net kunnen gaan leren. Dan kan je php (iig beter dan nu) en kan je wellicht zelf de oplossing vinden.
Jurgen Meijer op 31/05/2010 12:16:51

Ik zou geen is is_numeric gebruiken, de waarden in je session zijn ID's die refereren naar een product. Bij is_numeric geeft 0.1 ook een true terwijl dat nooit een id kan zijn. Dus gewoon controleren met ctype_digit, daar zijn alleen hele getallen toegestaan (1, 2, 3) etc.

[php]ctype_digit[/php] lees even verder naar beneden.

ctype_digit(1) = false;
ctype_digit('1') = true

Dus niet echt een heel betrouwbare functie.
Erik, dat ben ik niet met je eens. De functie ctype_digit() is een string functie die controleert of een string alleen uit cijfers bestaat. Hij is dus bedoeld om toe te passen op een string en niet op andere variabelen. En aangezien $_POST en $_GET variabelen altijd strings zijn, werkt het daar prima ;-)

Wil je controleren of een getal binnen PHP een integer is, gebruik dan is_int().
Ik kan niks anders dan het met je eens zijn! Ik had het nog even opnieuw gelezen en ik zie het nu staan inderdaad :)

Reageren