Op pagina product laten zien of deze geselecteerd is of dat je kan selecteren!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kees Mulder

Kees Mulder

24/10/2018 09:42:49
Quote Anchor link
Ik ben bezig met een pagina waar je het product op je verlanglijstje kan zetten. Als je dit hebt gedaan dan zou je moeten zien "geselecteerd" en anders "toevoegen aan selectie". Nu kan je dus meerdere producten selecteren voor je verlanglijst. Als ik dat dus heb gedaan bijv. 4 producten en ik ga naar een product pagina dan krijgen ik meerdere keren toevoegen aan selectie of geselecteerd. Ik wil graag dat je het alleen voor dit product ziet op de pagina.

Hij laat dus nu van alle geselecteerde producten zien. Hoe kan ik dat oplossen alleen voor dit product?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
                foreach ( $_SESSION['winkelwagen'] as $key=>$val ) {
                if($key == $row['product_id'])
                {

                    echo 'geselecteerd';
                }

                else
                {
                    echo 'toevoegen aan selectie';
                }
                }

                ?>

Gewijzigd op 24/10/2018 09:59:56 door Kees Mulder
 
PHP hulp

PHP hulp

28/03/2024 15:05:26
 
- Ariën  -
Beheerder

- Ariën -

24/10/2018 09:45:46
Quote Anchor link
Hier hebben we code-tags.
Hoe ziet je $_SESSION['winkelwagen'] eruit?
 
Kees Mulder

Kees Mulder

24/10/2018 09:59:06
Quote Anchor link
Dit is de session:

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
<?php
session_start();
$sessionid = session_id();

if ( !isset($_SESSION['winkelwagen']) || !is_array($_SESSION['winkelwagen']) )
{

    $_SESSION['winkelwagen'] = array();
}

    
// Toevoegen
if ( isset($_POST['verzenden'] ) && preg_match('^[1-9][0-9]*$^', $_POST['aantal']))
{

    $_SESSION['winkelwagen'][$_POST['itemid']]= $_POST['aantal'];
}
[
/code]
 
- Ariën  -
Beheerder

- Ariën -

24/10/2018 10:40:57
Quote Anchor link
En heb je al met print_r() de inhoud van $_SESSION['winkelwagen'] bekeken?
Dan moet inderdaad opvallen wat er in $key zit. Ook moet je even kijken of $row['product_id'] de juiste waarde bevat.

Even debuggen dus, als de waardes niet overeenkomen.
 
Rob Doemaarwat

Rob Doemaarwat

24/10/2018 11:28:03
Quote Anchor link
En ik neem aan dat je met die regex wilt controleren of "aantal" een positief getal is? Je gebruikt nu "^" als delimiter (en dus niet als "begin van zin"), dus "abc123" voldoet ook aan deze regex. Gebruik
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
preg_match('/^[1-9][0-9]*$/', $_POST['aantal'])
 
Thomas van den Heuvel

Thomas van den Heuvel

24/10/2018 15:23:43
Quote Anchor link
Je doorloopt $_SESSION['winkelwagen']. Dan is het vrij natuurlijk dat je enkel geselecteerde producten detecteert :).

Wat je zou moeten doen is controleren of een product-key voorkomt in $_SESSION['winkelwagen']. Dit kun je doen voor een lijst van willekeurige producten of een enkel product. Dus zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if (isset($_SESSION['winkelwagen'][$het_product_id_waarin_je_geinteresseerd_bent])) {
    echo 'product aanwezig';
}
else {
    echo 'product niet aanwezig';
}

?>

Waarbij $het_product_id_waarin_je_geinteresseerd_bent dus een enkel id bevat, of uit een foreach-loop komt.
 



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.