Door
Kees Mulder
op 31-05-2010 11:51
gewijzigd op 31-05-2010 12:34
2.119 views
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
?
Onbekende gebruiker
31-05-2010 11:59
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.
?
Onbekende gebruiker
31-05-2010 12:19
Wat mij betreft had hij dat helemaal zelf kunnen uitvinden.
Maar kunnen jullie me laten zien hoe ik het aantal regels kan weergeven?!
?
Onbekende gebruiker
31-05-2010 12:23
gewijzigd op 31-05-2010 12:24
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.
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.
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().