[PHP] meerder artikelen in winkel wagen zeten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hallo ben al een tijdje bezig met een winkelwagen(shoppingcart) bouwen. de meeste dingen die ik wilde bereiken zijn gelukt. maar wat nog niet wilt lukken is het volgende, ik zal het met een senariootje uit leggen...

-1> gebruiker komt op de onlineshop
-2> brouwst de producten en besluit een product te kopen
-3> na het slecteren wordt het product uit de mysql db geselecteerd en in de winkelwagen gestopt
-4> het productid wordt in $_SESSION ['winkelwagen'][pid] gestopt
-5> de gebruiker heeft de keus om de aantal te wijzigen en na update(pagina refreshed zich zelf) wordt de nieuwe waarde in de input field weergegeven
-6> de gebruiker besluit om verder te winkelen, maar gebruikt niet de button van "ga verder met winkelen" en gaat direct naar de menu produkten.
-7> gebruiker selecteert nog een andere product. Deze moet onder of boven de andere product geplaats worden

deze routine moet zich dan herhalen totdat de gebruiker "outchecked"

-8> als de gebruiker uitchecked, wordt de gebruiker gevraag om zich aan te melden/of in te logen
-9> de gebruiker kan dan of kiezen om het product te kopen of op te slaan voor een andere keer
-10> als dat allemaal succesvol verloopt wordt zijn winkelwagen in de db gedumpt

en dat gebeurt dus op de een of ander manier niet.

(IK WIL DE GELECTEERDE PRODUCTEN NIET IN DE DB STOPPEN ZOLANG DE GEBRUIKER GEEN ACCOUNT HEEFT OF NIET INGELOGD IS)
dus tijdens de sessie moet alle geselecteerde in een sessie var temp opgeslagen


tot en met stap 5 heb ik het werkend, vanaf zes lukt het me niet meer om de producten onder/boven elkaar te zetten.

Weet iemand hoe ik dit oplos??

hieronder de form die code voor de form

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
<tr>
        <input type="hidden" name="pid[]" value="<?php echo $pid;?>">
        <td bgcolor="<?php echo $box_field_color; ?>" class="boxmaintext"> <?php echo "<b>".$productname." ".$producttype." ".$productnummer."</b><br>".$productbeschrijving; ?></td>
        <td width="5" bgcolor="<?php echo $box_field_color; ?>">&nbsp;</td><input type="hidden" name="action" value="submitted">
        <td width="40" align="center" bgcolor="<?php echo $box_field_color; ?>"><input type="text" name="qty[] "value="<?php echo $pqty['qty']; ?>" maxlength="3" size="2"><br><input type="submit" name="submit" value="update me!"></td>
        </form>

        <td width="5" bgcolor="<?php echo $box_field_color; ?">&nbsp;</td>
        <td width="100" align="right" bgcolor="<?php echo ox_field_color; ?" 
class="boxmaintext"><?php echo $prodprice; ?>&nbsp;</td>
        <td width="5" bgcolor="<?php echo $box_field_color; ?>">&nbsp;</td>
        <td width="78" align="right" bgcolor="<?php echo $box_field_color; ?>" class="boxmaintext"><?php echo $prodprice; ?>&nbsp;</td>
        <td width="5" bgcolor="<?php echo $box_field_color; ?>"><br></td>
        <td width="35" align="center" bgcolor="<?php echo $box_field_color; ?>"><input type="checkbox" name="checkbox" value="checkbox"></td>
      </tr>
      <tr>
        <td bgcolor="<?php echo $box_field_color; ?>" class="boxfield">&nbsp;<?php echo $shop_system_details; ?></td>
        <td colspan=8 bgcolor="<?php echo $box_field_color; ?>" class="boxfield">&nbsp;</td>
      </tr>
      <tr>
        <td colspan=9 style="border-top: 1px solid <?php echo $shop_table_top_bgcolor; ?>;"><img src"images/spacer.gif" alt=" " width="1" height="1"></td>
      </tr>
?>


dit is ALLEEN het gedeelte van de form dat meerdere malen herhaald moet worden

alvast bedankt _/-\o_

[ Voor 27% gewijzigd door Verwijderd op 07-12-2003 13:31 . Reden: versimpelen van de code ]


Acties:
  • 0 Henk 'm!

Verwijderd

Daar hebben ze nou arrays voor bedacht....


dus bijvoorbeeld:

$_SESSION['winkelwagen'][<pid>] = <amount>;

Als je er nog meer in hebt staan (in die sessievar) doe je bijvoorbeeld

$_SESSION['winkelwagen']['producten'][<pid>] = <amount>;

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Door fladder - Friday 05 December 2003 21:29

Daar hebben ze nou arrays voor bedacht....


dus bijvoorbeeld:

$_SESSION['winkelwagen'][<pid>] = <amount>;

Als je er nog meer in hebt staan (in die sessievar) doe je bijvoorbeeld

$_SESSION['winkelwagen']['producten'][<pid>] = <amount>;
edit:

ik zat net te kjken maar wat je hier weer geeft dat doe ik toch al??? of zie ik dat verkeerd, kan je wat specifieker zijn?

[ Voor 93% gewijzigd door Verwijderd op 05-12-2003 22:25 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
niemand een idee op tweakers???? :'(

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
PHP:
1
2
3
4
if(is_array(winkelwagen)
   {
      foreach(winkelwagen as $pid=>$qty) //begin foreach
      {

veranderen in
PHP:
1
2
3
4
if(is_array($winkelwagen)
   {
      foreach($winkelwagen as $pid=>$qty) //begin foreach
      {
?

en
PHP:
1
2
<td width="100" align="right" bgcolor="<?php echo ox_field_color; ?"
class="boxmaintext">

in
PHP:
1
2
<td width="100" align="right" bgcolor="<?php echo $box_field_color; ?>"
class="boxmaintext">

[ Voor 33% gewijzigd door PrisonerOfPain op 06-12-2003 12:46 ]


Acties:
  • 0 Henk 'm!

  • ixi
  • Registratie: December 2001
  • Laatst online: 27-08 23:59

ixi

Offtopic maar wel zo handig om even te vermelden: je kan

<? echo $variabele ?>

ook schrijven als

<?=$variabele ?>

Vind ik zelf een stuk overzichtelijker :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hi ProsinerOfpain,

thnx voor je reacties. ik heb idd een aantal varibles mistyped, zo als je ziet.
maar ze zijn, maar dat lost het probleem niet op...

ik krijg nu voor elkaar dat ik een product toe kan voegen, maar als ik update zet ie dezelfde product (dat al in de basket zit nog een keer in de (array winkelwagen, id maar geen qty), plus als ik verder shop overschrijft ie een van de producten in de array en toont die niewe product in de form.

dus fysiek toont ie steeds de nieuwste geslecteerde product in de cart.

als ik die array uit print zie ik dat er meerdere producten staan, maar geen value hebben (alleen de nieuwste toegevoegde heeft een waarde)

enig idee??

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Verwijderd schreef op 06 december 2003 @ 13:02:
hi PrisonerOfPain, ;)
[...]plus als ik verder shop overschrijft ie een van de producten in de array en toont die niewe product in de form.

dus fysiek toont ie steeds de nieuwste geslecteerde product in de cart.
Komt dit niet omdat je telkens
PHP:
1
2
3
<?php
$_SESSION['winkelwagen']['pid']=$pid  //(uit db)
?>

doet in plaats van
PHP:
1
2
3
<?php
$_SESSION['winkelwagen'][$pid]=$qty  //(uit db)
?>


Als dit niet helpt, zou je dan een print_r van de array kunnen posten?
dit is hierboven dus ook al gezegt, heb je dit al geprobeerd?

[ Voor 5% gewijzigd door PrisonerOfPain op 06-12-2003 13:47 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
heb de array verandert in de formaat $_SESSION['winkelwagen']['products']['pid']=$qty;

output:

Array
(
[products] => Array
(
[pid] => Array
(
[0] => 5
)
)
)

Count: 1
Key : r ----- Value : Array

key :pid -- val : Array

[ Voor 9% gewijzigd door Verwijderd op 06-12-2003 16:57 ]


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Heb je ook geprobeerd wat hierboven staat?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PrisonerOfPain schreef op 06 december 2003 @ 17:18:
Heb je ook geprobeerd wat hierboven staat?
PHP:
1
//problem solved

[ Voor 237% gewijzigd door Verwijderd op 08-12-2003 07:32 . Reden: probleem op gelost ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Okay heb het nu werken dat de form de aantal items in de cart toont.

maar nu als ik vb 3 dingen heb besteld gaat wordt het netjes in de array gezet. het probleem nu is dat het 3 keer de eerste product toont

hoedan??

Acties:
  • 0 Henk 'm!

Verwijderd

Ergens in het loopje waarmee je de array doorloopt zal je het weer te geven element binnen de array moeten wijzigen door een teller bij te houden, en deze te gebruiken als index.

HTH :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 07 december 2003 @ 01:46:
Ergens in het loopje waarmee je de array doorloopt zal je het weer te geven element binnen de array moeten wijzigen door een teller bij te houden, en deze te gebruiken als index.

HTH :)
//problem met het toevoegen van meerder producten is gelukt

ik heb een aantal goede tips gehad van IXI, MrX, en de rest :D
thnx guys, laterzz
[/code]

[ Voor 107% gewijzigd door Verwijderd op 08-12-2003 07:39 ]


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Hoi D_Original :)

Allereerst nav [rml]D_Original in "[ PHP] meerder artikelen in winkel wagen ..."[/rml] even een verzoekje om pas na 24 uur je topic te kicken: vooral in het weekend is het hier minder druk en iedereen is even belangrijk, dus niet kicken voordat je topic 'weggescrolled' is, oftewel na 24 uur.

Ten tweede heb ik erg het gevoel dat je het wel makkelijk vindt dat de mensen hier in het topic je code aan het schrijven zijn. Dat is dus niet de bedoeling. GoT is bedoeld om over problemen te discussieren en samen tot een goede oplossing te komen, niet als afhaalbalie voor kant-en-klare code waar je zelf niet uitkomt. Dus hierbij het verzoek om iets meer zelfwerkzaamheid en initiatief te tonen dan alleen maar te smeken om hulp :)

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
curry684 schreef op 08 december 2003 @ 01:13:
Hoi D_Original :)
.....

Ten tweede heb ik erg het gevoel dat je het wel makkelijk vindt dat de mensen hier in het topic je code aan het schrijven zijn. Dat is dus niet de bedoeling.
GoT is bedoeld om over problemen te discussieren en samen tot een goede oplossing te komen, niet als afhaalbalie voor kant-en-klare code waar je zelf niet uitkomt. Dus hierbij het verzoek om iets meer zelfwerkzaamheid en initiatief te tonen dan alleen maar te smeken om hulp :)
dat gevoel dat jij hebt is denk ik je eigen prob. Maar dat je denkt dat ik wil dat andere mijn code schrijven heb je totaal verkeerd. Ben sinds dagen bezig met dit probleem en jij als "expert", zou moeten weten dat als je te lang aan een probleem werk dat je misschien de kleine foutjes niet meer zie, plus ben pas begonnen met PHP-en en wil het dus heel graag en heel snel leren, en dat lukt me dus best aardig...

als mij vraag om hulp als een smeek klinkt zal ik het special voor jouw de volgende keer mijn vragen anders stellen, kan je misschien een nuttig antwoord geven :-)

even goede vrienden, aith?! :D

ps speciaal voor jouw stuur ik dit na 2400 ;)
Pagina: 1