Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[PHP, MYSQL, Javascript] Javascript naar php; MYSQLID import

Pagina: 1
Acties:

Verwijderd

Topicstarter
De titel zegt misschien niet zoveel, maar de vraag is zo "groot" dat ik de titel wat heb moeten verkleinen...

Situatie:

Ik heb een contactformulier gemaakt waar middenin enkele checkboxen zitten en wanneer je op die checkbox klikt past er zich in het formulier een prijs van 0€ naar bvb 125€ aan. Hoe meer zaken je aanklikt hoe duurder het natuurlijk wordt...

Javascript code hiervoor:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
function fncCheck() {
                   var subtotaal = 0;
                   var combikorting = 0;
                   var totaal = 0;
                   var toeslagcontant = 0;
                   var totaaltebetalen = 0;
                   
                   if (document.getElementById("ek").checked == true && document.getElementById("epc").checked == false) {
                        subtotaal = subtotaal + 115;
                        toeslagcontant = 5;
                        document.getElementById("elektrischekeuring").style.display = "block";
                   } else {
                       document.getElementById("elektrischekeuring").style.display = "none";
                   }
                   
                   if (document.getElementById("ek").checked == true && document.getElementById("epc").checked == true) {
                        subtotaal = subtotaal + 125;
                        toeslagcontant = 5;
                        document.getElementById("elektrischekeuring").style.display = "block";
                   } else {
                       document.getElementById("elektrischekeuring").style.display = "none";
                   }
                   
                   if (document.getElementById("epc").checked == true) {
                        if (document.getElementById("studio").checked == true) {
                            subtotaal = subtotaal + 115;
                        } else if (document.getElementById("appartement").checked == true) {
                            subtotaal = subtotaal + 140;
                        } else if (document.getElementById("rijwoning").checked == true) {
                            subtotaal = subtotaal + 165;
                        } else if (document.getElementById("halfopenwoning").checked == true) {
                            subtotaal = subtotaal + 165;
                        } else if (document.getElementById("vrijstaandewoning").checked == true) {
                            subtotaal = subtotaal + 170;
                        }
                        toeslagcontant = 5;
                   }
                   
                   if (document.getElementById("gk").checked == true) {
                        subtotaal = subtotaal + 130;
                        toeslagcontant = 5;
                   }
                   if (document.getElementById("ek").checked == true && document.getElementById("epc").checked == true) {
                        if (document.getElementById("studio").checked == true) {
                            combikorting = 0;
                        } else if (document.getElementById("appartement").checked == true) {
                            combikorting = 10;
                        } else if (document.getElementById("rijwoning").checked == true) {
                            combikorting = 15;
                        } else if (document.getElementById("halfopenwoning").checked == true) {
                            combikorting = 15;
                        } else if (document.getElementById("vrijstaandewoning").checked == true) {
                            combikorting = 10;
                        }
                    }
                    
                   totaal = subtotaal - combikorting
                   
                   document.getElementById("totaal").innerHTML = totaal + " EUR";
                   
                   if (document.getElementById("terplaatse").checked == true) {
                       totaaltebetalen = totaal + toeslagcontant;
                   } else {
                       totaaltebetalen = totaal;
                   }
                        
                   document.getElementById("totaaltebetalen").innerHTML = totaaltebetalen + " EUR";     
               }


in mijn HTML pagina krijg ik de verandering van prijs hier te zien:

HTML:
1
2
3
4
5
6
7
                    <h2>totaal te betalen:</h2><br />
                    <table cellpadding="0" cellspacing="0" border="0" style="width:270px;">
                        <tr style="height:25px">
                            <td>&nbsp;</td>
                            <td><strong class="pricetext"><div id="totaaltebetalen">0 EUR</div></strong></td>
                        </tr>
                    </table>


Ik zou nu heel graag die "totaaltebetalen" op de één of andere manier in een PHP variabele krijgen (ik weet dat dit niet zomaar kan PHP= Serverside). Dit omdat ik die variabele wil wegschrijven in mijn MYSQL database samen met mijn andere variabelen ($NAME, $ADRES,...) die in dezelfde form zitten.

Vraag 1: Hoe ga ik hiermee het best te werk (OPGELET: Ik ken de ballen van Javascript! Deze script hierboven heb ik zelf niet gemaakt...)

Mijn MYSQL database heeft een AUTO INCREMENT ID die start vanaf 100000. Daar komt dus automatisch 1 bij iedere keer mijn form ge-submit wordt.
Ik zou heel graag op de Action pagina (<form action="afronden.php">) van die form de ID oproepen die ik daarnet heb aangemaakt in die MYSQL tabel bij het submitten van mijn form. Ik heb al gelezen dat ik in mijn form pagina een get kan doen van mijn (LAST_INSERTED_ID) NET nadat ik de gegevens heb weggeschreven in mijn MYSQL. Dit zou op deze manier niet mogelijk zijn om de verkeerde ID te hebben als iemand op hetzelfde moment de form invult.

Wie o wie kan mij met voorbeelden helpen met het bereiken van mijn doel. Ik heb er slapelozen nachten van en veel kopzorgen. :(

Bedankt op voorhand! _/-\o_

  • Satom
  • Registratie: Mei 2011
  • Laatst online: 26-10 22:27

Satom

Verzamel ervaringen

Als ik het goed begrijp wil je weten hoeveel de klant moet betalen, dus je 'totaaltebetalen'. Ik zou zeggen, zorg ervoor dat veldje ook in de <form></form> komt te staan. Wel moet ik zeggen dat het gevoelig is voor fraude, tegenwoordig kun je vrij eenvoudig waardes aanpassen.

Zelf snap ik niet helemaal wat je wil met je LAST_INSERTED_ID. Je kan toch immers alle gegevens doorsturen naar je afronden.php (Via <form></form>)?

Verwijderd

Topicstarter
Satom schreef op maandag 16 december 2013 @ 17:13:
Als ik het goed begrijp wil je weten hoeveel de klant moet betalen, dus je 'totaaltebetalen'. Ik zou zeggen, zorg ervoor dat veldje ook in de <form></form> komt te staan. Wel moet ik zeggen dat het gevoelig is voor fraude, tegenwoordig kun je vrij eenvoudig waardes aanpassen.

Zelf snap ik niet helemaal wat je wil met je LAST_INSERTED_ID. Je kan toch immers alle gegevens doorsturen naar je afronden.php (Via <form></form>)?
Even ter verduidelijking:

1. Ik heb een form aangemaakt waarin ik een action heb gestoken die ik stuur naar een pagina gemaakt door de mensen van het betalingssysteem.
2. op dit pagina van het betalingssysteem (die ik afronden.php noem) zitten 2 variabelen nl.
* $total = ''
* $bestelnr = ''

$Bestelnr moet een uniek nummer hebben, dus zat ik te denken aan de MYSQL ID, maar hoe lees ik nu de bijpassende ID uit?

$total moet het bedrag zijn dat de mensen hebben bekomen door de checkboxen aan te vinken. (de eens zal meer willen of de andere)

Ik weet niet hoe dat zit met fraude ofzo... Wat ik wel weet is dat ze een dienst bestellen en alvorens deze wordt geleverd wordt alles op voorhand goed gecontroleerd. Dus denk ik dat fraude niet van toepassing zal zijn.

Thx!

  • Currahee
  • Registratie: November 2004
  • Laatst online: 13:00

Currahee

3 miles up, 3 miles down!

Ik zie het punt ook niet zo. Je probleem is dus dat je een auto increment id wilt ophalen aan de hand van de gegevens die je zojuist hebt ingevoerd. Hier heeft PHP gewoon een functie voor: mysql_insert_id. Is dit wat je wilt?

Verwijderd

Topicstarter
Currahee schreef op maandag 16 december 2013 @ 18:59:
Ik zie het punt ook niet zo. Je probleem is dus dat je een auto increment id wilt ophalen aan de hand van de gegevens die je zojuist hebt ingevoerd. Hier heeft PHP gewoon een functie voor: mysql_insert_id. Is dit wat je wilt?
Jup idd wel, en dat lukt mij wel om dit dan mee te nemen naar de andere pagina, mijn grootste probleem nu is dat ik mijn totaalbedrag (omdat het gecalculeerd is met Javascript) niet kan wegschrijven in MYSQL. omdat ik hier geen variabele kan maken.... :/

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Je kunt die berekening ook gewoon in PHP doen. Of je "totaalbedrag" in een hidden form field opslaan. Nogal triviaal.

https://niels.nu


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Satom schreef op maandag 16 december 2013 @ 17:13:
Wel moet ik zeggen dat het gevoelig is voor fraude, tegenwoordig kun je vrij eenvoudig waardes aanpassen.
Dat is nog zacht uitgedrukt. Ik noem een JustEat (zie pag. 4 hier (en de rest overigens ook) voor meer info). Die berekening wil je, hoe-dan-ook, serverside nogmaals uitvoeren. De eerste-de-beste lutser kan een "hidden form field" doodleuk veranderen en posten. Het meesturen van de berekende waarde heeft dan ook 0 meerwaarde en die kopzorg kun je jezelf dus besparen.

[ Voor 34% gewijzigd door RobIII op 16-12-2013 19:29 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • jbdeiman
  • Registratie: September 2008
  • Laatst online: 09:02
Eigenlijk is het enige wat je weten wil (opsturen): de "producten" (velden) die zijn aangeklikt, waarvan je ook op de server weet wat de bedragen zijn. Op basis van de ontvangen waarden bereken je op de server het echte totaalbedrag.

Het "berekende totaal" op die pagina kan je buiten een formulier veld houden en alleen tonen om het de bezoeker gemakkelijk te maken te zien waar hij / zij in totaal op uitkomt. Dat is ook het enige doel waarvoor je zoiets zou moeten willen gebruiken.

Verwijderd

Topicstarter
Is er misschien iemand die mij opweg kan helpen met een voorbeeldje in PHP hoe ik die berekening kan uitvoeren?

vb: Je hebt 3 check-boxes (ek,epc,gk) alle 3 bevatten ze de value="1" (<input type="checkbox" name="ek" value="1" id="ek"/><label for="ek">test1</label>)

- Wanneer "ek" is aangevinkt prijs = 100
- Wanneer "epc" is aangevinkt prijs = 150
- Wanneer "gk" is aangevinkt prijs = 200

Ze moeten optellen als je er meerdere aanvinkt maar als "ek" en "epc" aangevinkt zijn moet je een korting van 20 hebben.

Dit is heel simplistisch uitgelegd maar zou me al een stuk verder helpen met iets waar ik al 3 dagen grote kopzorgen van heb |:( .

Thx!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 17 december 2013 @ 09:01:
vb: Je hebt 3 check-boxes (ek,epc,gk) alle 3 bevatten ze de value="1" (<input type="checkbox" name="ek" value="1" id="ek"/><label for="ek">test1</label>)

- Wanneer "ek" is aangevinkt prijs = 100
- Wanneer "epc" is aangevinkt prijs = 150
- Wanneer "gk" is aangevinkt prijs = 200

Ze moeten optellen als je er meerdere aanvinkt maar als "ek" en "epc" aangevinkt zijn moet je een korting van 20 hebben.
Als je nou eens begint met precies 't opschrijven van je verhaal in 't Engels en van daar uit verder werkt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
var $ek = POST['ek'];
var $epc = POST['epc'];
var $gc = POST['gk'];

$total = 0;
if $ek is checked
  $total += 100;
if $epc is checked
  $total += 150;
if $gpc is checked
  $total += 200;
if $ek is checked AND $epc is checked
  $total -= 20;

(Waarbij je "is checked" natuurlijk kunt vervangen door een "!=0" als je een intval over de POST waardes heen trekt o.i.d.)

Rocket science.

[ Voor 20% gewijzigd door RobIII op 17-12-2013 09:23 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
als je er (nu al) slapeloze nachten en veel kopzorgen van hebt, kun je dit beter uit besteden...
zoals ik het nu zie ga je hier fouten creeren waar je nog veel meer slapeloze nachten en kopzorgen van gaat krijgen

Verwijderd

Topicstarter
P.O. Box schreef op dinsdag 17 december 2013 @ 10:23:
als je er (nu al) slapeloze nachten en veel kopzorgen van hebt, kun je dit beter uit besteden...
zoals ik het nu zie ga je hier fouten creeren waar je nog veel meer slapeloze nachten en kopzorgen van gaat krijgen
Ik hield me tot over een jaar enkel bezig met de front-end. Maar omdat ik na een uitbesteding maar het "overige" deeltje overhield aan mezelf ben ik de laatste maanden relatief veel bezig met PHP en MYSQL. Het lukt allemaal wel heel aardig, er zijn zo nog steeds zaken waar ik niet direct kan analyseren hoe ik eraan moet beginnen en dat was er nu 1 van. Analyseren is niet één van mijn sterkste eigenschappen.. Het heeft mij nu alvast op weg geholpen, dank aan allen hiervoor!
Pagina: 1