login  Naam:   Wachtwoord: 
Registreer je!
 Forum

array value update

Offline jarro - 22/01/2006 23:01 (laatste wijziging 22/01/2006 23:02)
Avatar van jarroHTML interesse Hee goedendag allemaal!

Ik heb een probleem met mijn webshopscript. Ik heb alle producten in een winkelwagentje in 2 array's staan: $product (array met alle id's van de producten) en $aantal (array met van elk id het aantal producten). Nu wil ik, als ik bijvoorbeeld voor de 2e keer artikel A in mijn winkelmandje stop, dat er geen nieuwe waarde in beide array;s komen, maar dat de waarde in $aantal wordt verhoogd.
Hiervoor gebruik ik dit stukje script:
  1. <?
  2. $product = $_SESSION['product'];
  3. $aantal = $_SESSION['aantal'];
  4. if(in_array($_GET['id'], $product)){
  5. $key = array_keys($product, $_GET['id']);
  6. $aantal[$key] = $aantal[$key] + $_GET['aantal'];
  7. $_SESSION['product'] = $product;
  8. $_SESSION['aantal'] = $aantal;
  9. } else {
  10. $product[] = $_GET['id'];
  11. $aantal[] = $_GET['aantal'];
  12. $_SESSION['product'] = $product;
  13. $_SESSION['aantal'] = $aantal;
  14. }
  15. ?>

Nu krijg ik een foutmelding:
Warning: Illegal offset type in /home/aqhd022/domains/onwijsgaaf.nl/public_html/gvn/beta/includes/ww.php on line 46

Warning: Illegal offset type in /home/aqhd022/domains/onwijsgaaf.nl/public_html/gvn/beta/includes/ww.php on line 46

2x een foutmelding dus, en hij heeft het script ook nog eens niet goed uitgevoerd, want de waarde in $aantal die bij artikel A hoort is niet verhoogd..

Ziet iemand waarom dit zo is?

Met vriendelijke groet,

3 antwoorden

Gesponsorde links
Offline Lemon - 22/01/2006 23:15
Avatar van Lemon PHP expert Wat staat er nu preciesop lijn 46?
Offline b4nkr0bz0r - 22/01/2006 23:22 (laatste wijziging 22/01/2006 23:31)
Avatar van b4nkr0bz0r PHP gevorderde Het is heel simpel, je maakt van die 2 array's 1 array waar de key en waarde in staan, dus:
  1. $aProduct = array(1 => 3200, 5 => 52);


Nu controleer je gewoon of het ID al in de array zit, zoja verhoog je de waarde, zoniet dan maak je de key aan met de waarden.

  1. <?php
  2. if (in_array($_GET['id'], $aProduct))
  3. {
  4. foreach ($aProduct as $k => $v)
  5. {
  6. $k = (int)$v + $_GET['id'];
  7. }
  8. }
  9. else
  10. {
  11. array_push($aProduct, $_GET['id'] => $_GET['aantal']);
  12. }
  13. ?>


denk dat dit gaat werken, nu moet je wel zorgen dat je 2 variable in de URL meezend dit zijn het ID en het aantal dat bij het ID hoort.

EDIT: mijn script verhelpt jouw probleem niet maar kan het mischien wel inspireren, en dat je het wil gebruiken

Mijn foreach-lus is ook onnodig want je kan het ook (zoals jij het doet) met array_keys();

EDIT2: probeerde creatief te zien maar dat van FangorN is wel wat beter denk ik...
Offline Thomas - 22/01/2006 23:26 (laatste wijziging 22/01/2006 23:26)
Avatar van Thomas Moderator hm? Dat kan toch wel korter?

  1. function addtocart($product_id, $number)
  2. {
  3. if(isset($_SESSION['product'][$product_id]))
  4. {
  5. // key bestaat
  6. $_SESSION['product'][$product_id] += $number;
  7. } else {
  8. // key bestond nog niet
  9. $_SESSION['product'][$product_id] = $number;
  10. }
  11. }
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.213s