SESSION exploden
ik heb nu een sessie waar meerdere productid's worden ingestopt met tussenvoegsel een "-"
In de pagina winkelmandje wil ik nu alles terug laten komen.
Hoe kan ik dit in een query gaan zetten?
want als ik dit doe:
Komt hier array uit.
En in vervolg moet dit nog in een mysql query komen om de namen ervan te laten zien.
Gewijzigd op 01/01/1970 01:00:00 door Aoi
Dan met een functie als foreach kun je de array doorlopen.
In jou geval gaat dit de oplossing zijn:
$producten = explode("-", $_SESSION['mandje']);
foreach ($producten as $product)
echo ($product.'</ br>');
zo worden alle producten in de sessie geprint!
Hoe zit dat met foreach foreach kan je toch loopen dat er steeds bijvoorbeeld 1 bijkomt?
$producten en $product.. dit snap ik niet helemaal
Waarom niet bv. de volgende array aanmaken:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
$mandje = array(
array(
'artikel_id' => 23,
'aantal' => 2
),
array(
'artikel_id' => 15,
'aantal' => 1
)
);
array(
'artikel_id' => 23,
'aantal' => 2
),
array(
'artikel_id' => 15,
'aantal' => 1
)
);
Nu kun je veel meer gegevens in de sessie kwijt, ook het aantal artikelen, en je hoeft niet meer te exploden om gegevens op te zoeken.
De data in een query zetten is nu natuurlijk appeltje-eitje, pak de juiste key uit de array en klaar ben je.
zo maak ik mijn sessie aan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if (is_numeric($_GET['id']))
{
//kijken of de sessie al gevuld is
if (!isset($_SESSION['mandje']))
{
$_SESSION['mandje'] = $_GET['id'];
}
elseif (isset($_SESSION['mandje']))
{
//nieuwe id aan de sessie toevoegen met - ertussen
$new = "".$_SESSION['mandje']."-".$_GET['id']."";
$_SESSION['mandje'] = $new;
}
}
?>
if (is_numeric($_GET['id']))
{
//kijken of de sessie al gevuld is
if (!isset($_SESSION['mandje']))
{
$_SESSION['mandje'] = $_GET['id'];
}
elseif (isset($_SESSION['mandje']))
{
//nieuwe id aan de sessie toevoegen met - ertussen
$new = "".$_SESSION['mandje']."-".$_GET['id']."";
$_SESSION['mandje'] = $new;
}
}
?>
Begin bij de basis, de juiste data op een eenvoudige manier beschikbaar maken voor jouw code. Een string met een hele serie artikelen is een ramp.
hier komt niks uit, ik dacht dat het zo moest want toen ik mijn array ging echoen kwam er dit uit [0] => 1 - [1] => 156
Dus ik denk dan komt er het zo te staan
$product[0] = 1
$product[1] = 156
maar dat is dus niet zo
Gewijzigd op 01/01/1970 01:00:00 door Aoi
Code (php)
Nu komen de ID's er allemaal netjes uit.
(edit: sorry ipv van vorige bericht aan te passen maakte ik deze reactie)
Gewijzigd op 01/01/1970 01:00:00 door Aoi
Wat je nu doet is dit:
stel, $mandje bevat 3,7
Op lijn 2 maak je een array met de producten array( 3 , 7 )
op lijn 3 doe je dit nog eens in een array, dan bekom je zoiets: array( array( 3 , 7 ) )
op lijn 4 overschrijf je de array van lijn 3. zo werkt een foreach namelijk:
foreach ($array as $value) // voor arrays in de vorm van array(waarde, waarde, waarde), zoals de array in $mandje dus!
foreach ($array as $key => $value) // voor arrays in de vorm van array(key => waarde, key => waarde, key => waarde)
Zoiets als hieronder zou dus beter zijn: