Beste mensen, ik weet niet helemaal hoe ik het moet uitleggen (en waarschijnlijk is er ook een simpele oplossing voor, maar via google dan niet de juiste zoekwoorden kunnen bedenken) en ben al helemaal geen PHP-pro maar stel hier toch maar de vraag:

Ik wil data uit een cookie vergelijken met een keuze lijst die gemaakt wordt door een While-lus

Cookie data:

Array ( [cart] => 2,10|4,16|99,3



2,10 (2 staat voor modelnummer, 10 voor aantal)

Nu begrijp ik dat ik deze data moet opvragen en explode.

dat doe ik zo:


$cart = explode("|",$_SESSION['cart']);

  foreach($cart as $products) {

    $product = explode(",",$products);
}


Wanneer ik de waarde $product[0] opvraagd via

echo "$product[0] <BR>";



Krijg ik netjes onder elkaar 2,4 en 99

tot hier lukt het me, maar nu???

ik heb uit een query met While-lus een rijtje met productnummers: 2,3,4

Nu moeten deze productnummers vergeleken worden met de nummers uit de cookie.

2 en 4 moeten dan bv: rood weergegeven worden (zodat het duidelijk is dat deze al in de cart zitten)

Hoe doe ik deze vergelijking?

dus even simpel weer te geven:

Cookie data =
2,4,99

querydata=
2,3,4

gewenst=
2, 3, 4


Hopelijk begrijpen jullie mij of kunnen jullie mij in ieder geval de goede weg op sturen.

<?php
$cart = explode("|",$_SESSION['cart']);
$productIds = array();
foreach($cart as $products) {
$product = explode(",",$products);
$productIds[] = $product[0]; //productIds bevat nu alle product ids.
}
//hier ergens je while lus
if(in_array($idDatJeUitDeDatabaseHebt, $productsIds)) {
echo $idDatJeUitDeDatabaseHebt.' zit al in je shopping cart! <br />'
}
?>

wat ik me afvraag is waarom je die modelnummers en aantal zo raar in die sessie zet
waarom doe je niet zoiets?
<?php
$_SESSION['shopping_cart'] = array(
array('id'=>2,'amount'=>10),
array('id'=>4,'amount'=>16),
array('id'=>99,'amount'=3)
?>
oftewel, een multidimensionale array.
Dat van die SESSION zal ik me nog even in verdiepen. Ben er niet zo'n held in en zag deze optie in een tutorial.

ik heb nu dit:


$result2 = mysql_query( "SELECT * FROM Optie LEFT JOIN ConvModelOptie ON 
( Optie.ID_Optie = ConvModelOptie.ID_Optie )

WHERE ConvModelOptie.ID_Model='".mysql_real_escape_string($_GET['Model'])."' " )

or die("SELECT Error: ".mysql_error());
while ($row2=mysql_fetch_array($result2)) {

$Optienaam= $row2['Optienaam'];
$IDO= $row2['ID_Optie'];


	 $cart = explode("|",$_SESSION['cart']);
$productIds = array();
foreach($cart as $products) {
     $product = explode(",",$products);
     $productIds[] = $product[0]; //productIds bevat nu alle product ids.
}
//hier ergens je while lus
if(in_array($IDO, $productsIds)) {
    echo $IDO." zit al in je shopping cart! <br />";}


}


maar krijg nu deze foutmelding:
Warning: in_array() expects parameter 2 to be array, null given

Doe ik iets fout, of iets niet in de goede volgorde?
<?php
$result2 = mysql_query( "SELECT * FROM Optie LEFT JOIN ConvModelOptie ON
( Optie.ID_Optie = ConvModelOptie.ID_Optie )

WHERE ConvModelOptie.ID_Model='".mysql_real_escape_string($_GET['Model'])."' " )

or die("SELECT Error: ".mysql_error());
$cart = explode("|",$_SESSION['cart']);
$productIds = array();
foreach($cart as $products) {
$product = explode(",",$products);
$productIds[] = $product[0]; //productIds bevat nu alle product ids.
}
while ($row2=mysql_fetch_array($result2)) {
$Optienaam= $row2['Optienaam'];
$IDO= $row2['ID_Optie'];

if(in_array($IDO, $productsIds)) {
echo $IDO." zit al in je shopping cart! <br />";
}

}
?>

of:

<?php
$result2 = mysql_query( "SELECT * FROM Optie LEFT JOIN ConvModelOptie ON
( Optie.ID_Optie = ConvModelOptie.ID_Optie )

WHERE ConvModelOptie.ID_Model='".mysql_real_escape_string($_GET['Model'])."' " )

or die("SELECT Error: ".mysql_error());
$cart = explode("|",$_SESSION['cart']);
while ($row2=mysql_fetch_array($result2)) {
$Optienaam= $row2['Optienaam'];
$IDO= $row2['ID_Optie'];
foreach($cart as $products) {
$product = explode(",",$products);
if($product[0] == $IDO) {
echo $IDO." zit al in je shopping cart! <br />";
}
}
}
?>

zou volgens mij moeten werken.
Meneer ter Ham,

Mag ik u vriendelijk bedanken! Optie twee geeft bij mij het resultaat dat ik zocht!

Thank you!
Wellicht dat ik in de war ben door de naamgeving van de tabellen, maar volgens mij vergelijk je een optie_id met een product_id (tenzij je maar één product verkoopt)

Reageren