SESSION exploden
ey mensen,
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.
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
Zet gewoon de id's al in een array in de sessie, scheelt je een hoop gezeur.
Dan met een functie als foreach kun je de array doorlopen.
Dan met een functie als foreach kun je de array doorlopen.
$producten is een array, en kan je dus printen met prin_r($producten).
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!
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!
Thanks weer wat geleerd,
Hoe zit dat met foreach foreach kan je toch loopen dat er steeds bijvoorbeeld 1 bijkomt?
$producten en $product.. dit snap ik niet helemaal
Hoe zit dat met foreach foreach kan je toch loopen dat er steeds bijvoorbeeld 1 bijkomt?
$producten en $product.. dit snap ik niet helemaal
Bedenk eerst eens hoe die array eruit moet komen te zien. Data scheiden met een - (of iets anders) is niet zo handig, dan moet je exploden om er iets mee te kunnen doen.
Waarom niet bv. de volgende array aanmaken:
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.
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.
@Frank appeltje eitje is het voor mij zeker niet ;p
zo maak ik mijn sessie aan:
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;
}
}
?>
Dat is dus niet zo handig, zie mijn vorige reactie. Zet een array in de sessie (die overigens ook al een array is...) met de benodigde informatie. Daar heb je veel meer aan, het verwijderen van een artikel wordt dan ook een stuk eenvoudiger.
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.
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.
Ja ok, maar hoe haal ik dat dan uit elkaar?
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
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
Ik heb het opgelost :)
Nu komen de ID's er allemaal netjes uit.
(edit: sorry ipv van vorige bericht aan te passen maakte ik deze reactie)
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
Oke ik denk dat je de foreach lus niet helemaal begrijpt, net zoals explode.
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:
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:




