Cookies vergelijken met lijstje

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Co Vanenwijk

Co Vanenwijk

03/01/2013 18:32:50
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$cart = explode("|",$_SESSION['cart']);

  foreach($cart as $products) {

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


Wanneer ik de waarde $product[0] opvraagd via

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.

Graag in het vervolg bij code, [code] [/code] tags gebruiken.[/modedit]
Gewijzigd op 03/01/2013 18:47:18 door Bas IJzelendoorn
 
PHP hulp

PHP hulp

23/11/2024 19:45:57
 
Bo Ter Ham

Bo Ter Ham

03/01/2013 18:47:52
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?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?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$_SESSION
['shopping_cart'] = array(
array('id'=>2,'amount'=>10),
array('id'=>4,'amount'=>16),
array('id'=>99,'amount'=3)
?>

oftewel, een multidimensionale array.
Gewijzigd op 03/01/2013 18:51:51 door Bo Ter Ham
 
Co Vanenwijk

Co Vanenwijk

03/01/2013 19:08:09
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$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?
 
Bo Ter Ham

Bo Ter Ham

03/01/2013 19:34:50
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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.
Gewijzigd op 03/01/2013 19:36:29 door Bo Ter Ham
 
Co Vanenwijk

Co Vanenwijk

03/01/2013 19:47:08
Quote Anchor link
Meneer ter Ham,

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

Thank you!
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

03/01/2013 20:08:40
Quote Anchor link
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)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.