login  Naam:   Wachtwoord: 
Registreer je!
 Forum

form word niet op de juiste manier verwerkt. (Opgelost)

Offline De_Vossenman - 10/05/2016 14:04
Avatar van De_VossenmanNieuw lid Hallo,

Heb een vraagje ;) Eigenlijk een probleem waar ik maar niet uitgeraak 

Ik heb onderstaand "formulier". Is eigenlijk een enkel een button, waar je op moet klikken als je iets aan je winkelmandje wilt toevoegen.
  1. <form action="" method="post"><button type="submit" value="<?php echo $id; ?>" name="btnAddToCard" id="btnAddToCard" onmousedown="showBox();" style="cursor: pointer;" style="padding: 1.2%;">+ <?php echo $menuWinkelWagentje; ?></button></form>


Zoals in de code hierboven staat roep ik een functie showBox(); aan. (deze geeft dan een soort van popup venster. (klein venster met informatie en een overlay over de rest van de website)

Als ik op die knop klik zou ik dat product moeten toevoegen aan mijn winkelmandje. Dat heb ik op volgende manier gedaan.

  1. if($_SESSION['logedin'] != "true"){
  2. $res = "<div class='alert-error'>";
  3. $res .= "U moet ingelogt zijn om producten te kunnen toevoegen aan uw winkelwagen.";
  4. $res .= "</div>";
  5. $res .= "<a href='' onclick='close();' style='float: left;'>Sluiten</a>";
  6. $res .= "<a href='login.php' style='float: right;'>Inloggen</a>";
  7. }else{
  8. if(COUNT($_SESSION['winkelwagen']) > 2){
  9. $res = "<div class='alert-error'>";
  10. $res .= "Er kunnen maar 3 producten in het winkelmandje gelegd worden.";
  11. $res .= "</div>";
  12. $res .= "<a href='' onclick='close();' style='float: left;'>Sluiten</a>";
  13. $res .= "<a href='winkelwagen.php' style='float: right;'>Naar winkelmandje</a>";
  14. }else{
  15. if(isset($_POST['btnAddToCard'])){
  16. $_SESSION['winkelwagen'][] = array ( 'p_id' => $row['Product_id']);
  17. $res = "<div class='alert-success'>Het product: <p style='font-weight: bold;'>".$row['Product_Name']."</p> werd toegevoegd aan uw winkelmandje.</div>";
  18. $res .= "<a href='' onclick='close();' style='float: left;'>Sluiten</a>";
  19. $res .= "<a href='winkelwagen.php' style='float: right;'>Naar winkelmandje</a>";
  20. }else{
  21. $res = "<div class='alert-error'>";
  22. $res .= "Niet Geklikt.<br /><br />";
  23. $res .= "</div>";
  24. $res .= "<a href='' onclick='close();' style='float: left;'>Sluiten</a>";
  25. }
  26. }
  27. }


Het probleem is nu, dat ik enkel het product aan mijn array wil toevoegen als er op de knop geklikt wordt. Werkt dus niet. 

Iemand een idee wat er fout is met mijn logica? Of dat ik ergens een foutje heb gemaakt?

Is voor men eindwerk, dus ik ben zéér dankbaar moest je me kunnen helpen 


Grtzzz,
Vossenman

5 antwoorden

Gesponsorde links
Offline advertentiep - 10/05/2016 14:21 (laatste wijziging 10/05/2016 17:07)
Avatar van advertentiep PHP interesse waarom p_id => waarde ? wat komt er nog meer in de array ?

Ik heb even lokaal $_SESSION vervangen door $aSession:
  1. <?php
  2. // Hoef je niet te defineren als je $_SESSION gebruikt
  3. $aSession = array();
  4.  
  5. // Voor de test twee producten aanmaken
  6. $aSession[] = 'product 1';
  7. $aSession[] = 'product 2';
  8.  
  9. // Kijken of array aan limiet zit
  10. if (count($aSession) < 3)
  11. {
  12. // laatse product (omdat de eerste twee al in de array staan) toevoegen
  13. $aSession[] = 'product 3';
  14. }
  15.  
  16. print_r($aSession);
  17. ?>


resultaat:
  1. Array ( [0] => product 1 [1] => product 2 [2] => product 3 )


Verder is je code een rommel.

wordt de code uberhaupt wel uitgevoerd met true tussen quotes ?
$_SESSION != true;
Offline Thomas - 11/05/2016 00:29
Avatar van Thomas Moderator wat doet showBox() precies? Want je HTML pagina vangt het submitten waarschijnlijk af door het onmousedown-event, wat er mogelijk voor zorgt dat er niets gePOST wordt.

Kun je niet beter een JavaScript frameworkje gebruiken (bijvoorbeeld jQuery) die op een crossbrowser-manier een form submit kan afvangen, die vervolgens alle dingen doet die die showBox() zou moeten doen, waarna je daarna mogelijk alsnog het formulier submit?

Overiges zou ik in een "actie" (bijvoorbeeld het verwerken van een formulier) ook slechts één ding doen, namelijk het verwerken van het formulier - je produceert daar ook een zwik output. Dat lijkt mij daar de verkeerde plaats.
Offline De_Vossenman - 11/05/2016 18:23 (laatste wijziging 11/05/2016 18:24)
Avatar van De_Vossenman Nieuw lid @advertentiep waarom steek ik p_id in een array sessie?
Simpel, met p_id is het id van het product in de database, deze steek ik in een sessie en zo kan ik op de pagina winkelwagen.php al mijn producten uitlezen die in die sessie steken ;)

EN ja de $_SESSION != "true"; wordt uitgevoerd ;) Is ander stuk code op mijn site.. bij het inloggen.

En snap niet goed wat er zo rommelig aan is? 

@Thomas
Men showBox(); zet simpelweg een klein "popupscherm" zichtbaar.
http://prnt.sc/b2tzs0 (hier een voorbeeldje)

Ik ga eens proberen wat je zei met jqeury, daar zou je een punt moeten hebben inderdaad. Dus het proberen waard 
Offline Thomas - 11/05/2016 20:17
Avatar van Thomas Moderator En als je dan toch jQuery gebruikt zou je middels een AJAX-call op de achtergrond het product kunnen toevoegen aan het winkelmandje zodat je nooit van de huidige pagina hoeft weg te navigeren. Het toevoegen van het product gebeurt dan "onder water".
Offline De_Vossenman - 17/05/2016 12:55
Avatar van De_Vossenman Nieuw lid @Thomas, na veel proberen en wat opzoek werk over AJAX, is het mij uiteindelijk gelukt! 

Bedankt ! 
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.196s