[JS + PHP] Optellen gaat niet zo heel goed

Pagina: 1
Acties:

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 05-05 12:14
Probleemstelling:
Ik heb een (ranzige) functie die ervoor zorgt dat er bepaalde gegevens aan een tabel toegevoegd worden, nu laat ik de geselecteerde materialen in een array wegschrijven (javascript) en deze doorlopen mbv een while lus (dit was eerst een for loop, maar ik dacht dat dit misschien de oplossing was)

Nu wil het feit dat het draaien van deze functie de eerste 2x goed gaat en mijn tabel ook netjes gevuld wordt met informatie, leuk zou je zeggen :) maar helaas wordt mijn plezier bedorven bij de 3e x dat ik de functie uitvoer.

Hij geeft dan namelijk elk element in de array dezelfde waarde (bij de berekening :() waardoor de uitkomst uiteindelijk fout is.

Omdat ik het forum niet wil volspammen met mijn code, biedt ik deze als txt aan.
Afbeeldingslocatie: http://www.helmet.nl/file.gif download

Nu vraag ik me werkelijk af wat er fout is in de code :( ik heb al geprobeerd om hier en daar alerts met debug informatie in de code te zetten, maar deze geven alles correct weer

Misschien zien jullie het ?

(Ps: ik heb er bewust voor gekozen om geen gebruik te maken van excel, omdat de gegevens afkomstig zijn uit een database)

[ Voor 16% gewijzigd door Helmet op 06-04-2004 14:09 ]

Icons are overrated


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

heel je helmet.nl domein doet het niet :P (hier althans)

[ Voor 16% gewijzigd door Bosmonster op 06-04-2004 14:03 ]


  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 05-05 12:14
Handig natuurlijk, heb hem ergens ff anders geupload misschien dat ie t nu wel doet :p (doet mijn webicon t overigens wel? Zo ja dan begrijp ik dr helemaal niets meer van)

[ Voor 34% gewijzigd door Helmet op 06-04-2004 14:07 ]

Icons are overrated


  • disjfa
  • Registratie: April 2001
  • Laatst online: 12-05 15:11

disjfa

be

Afbeeldingslocatie: http://www.helmet.nl/folder.png

wel .nl erachter zetten ;)

Verder waarom heb je dan een ranzige code? Kan je die niet beter zelf eerst opschonen?

disjfa - disj·fa (meneer)
disjfa.nl


  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 05-05 12:14
ARGH :) hij doet t dus toch hehe

Met de ranzigheid bedoel ik eigenlijk t aantal cijfers en de aantal optellingen/delingen en vermenigvuldigingen die er plaats moeten vinden om tot het uiteindelijke resultaat te komen ik denk niet dat ik daar omheen kom

Icons are overrated


  • macnerd
  • Registratie: Oktober 2002
  • Laatst online: 22:33

macnerd

No Apples please :-)

Mijn ervaring met JavaScript is dat het rekenen achter de komma niet goed gaat, wat natuurlijk uitermate stom en irritant is. Meestal los ik het op een simpele workaround; met gehele getallen wordt nl. wel goed gerekend (in ieder geval bij integers).

De truuk die ik gebruik is dus vermenigvuldigen met 10^y (waarbij y de nauwkeurigheid in decimalen voorstelt), daarna je eigen berekening, en daarna weer delen door 10^y.

NB. Hou er wel rekening mee dat ook andere getallen wellicht omgerekend moeten worden; reken bijvoorbeeld ook handmatig een paar situaties na.

[ Voor 15% gewijzigd door macnerd op 06-04-2004 14:21 ]

MacNerd


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

Je webicon doet het hier ook niet.. Heel je domein komt hier niet voor in de DNS.

Een nieuwe array definieer je met new Array() overigens.. anders maak je volgens mij geen nieuwe instantie aan.

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 05-05 12:14
Bosmonster schreef op 06 april 2004 @ 14:20:
Je webicon doet het hier ook niet.. Heel je domein komt hier niet voor in de DNS.

Een nieuwe array definieer je met new Array() overigens.. anders maak je volgens mij geen nieuwe instantie aan.
Dit verklaard echter nog steeds niet waarom de functie de eerste 2x wel naar behoren werkt. Ook na je suggestie functioneert het helaas nog steeds niet correct, en helaas nog steeds met dezelfde fout :(

Misschien ist verstandig als de werking van mijn rekenblad wat nauwkeuriger beschrijf:

Het bestand opent met javascript een venster (de content wordt ook door javascript verzorgd d.m.v. document.write (zie afbeelding)
Afbeeldingslocatie: http://www.helmet.nl/stafijzer.jpg
Met een druk op de knop ok wordt de functie (Afbeeldingslocatie: http://www.helmet.nl/file.gif) aangeroepen die dan op t document uitgevoerd wordt.

De eerste 2x werkt dit dus zonder problemen en de uitvoer ziet er dan ongeveer zo uit:
Afbeeldingslocatie: http://www.counterstriker.nl/~helmet/stafijzergoed.gif

Voeg ik echter een 3e (en zelfde element toe) dan wordt de uitvoer als volgt:
Afbeeldingslocatie: http://www.counterstriker.nl/~helmet/stafijzerfout.gif
hij neemt dan dus het bedrag over terwijl hij in de lus wel naar behoren werkt :(

[ Voor 4% gewijzigd door Helmet op 07-04-2004 15:22 ]

Icons are overrated


  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 05-05 12:14
*bump*

Icons are overrated


  • pagani
  • Registratie: Januari 2002
  • Niet online
Je scriptjes in .txt waar je naartoe linkt staan er niet meer :(

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 05-05 12:14
Fixed sorry :/ deed t al sinds gisteren niet geloof ik

Icons are overrated


  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 22-05 17:18
code:
1
toLoop = bestelBalken;


Erhm, zoals ik het zie print hij nu alleen bestelBalken. Maar moeten niet gewoon alle bestel<blaat> array's in de tabel komen?

Stel dat iemand een stafijzer (geen idee wtf dat is) en een balk besteld dan moeten die toch beiden in de tabel verschijnen?

//edit:
Ah Morrar snapt het al: een table per categorie... Duh

[ Voor 13% gewijzigd door Morrar op 07-04-2004 15:48 ]


  • pagani
  • Registratie: Januari 2002
  • Niet online
Zou je een voorbeeld van de daadwerkelijke uitvoer (2 objecten en 3) willen posten of het volledige script, dan kan ik sneller zien waar de fout zit.

@Morrar: was mij ook al opgevallen, maar dacht: laten we het eerst werkend krijgen voor een productgroep.,

[ Voor 27% gewijzigd door pagani op 07-04-2004 15:39 ]


  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 05-05 12:14
Ik zal een (ietwat aangepast) voorbeeld online gooien even geduld aub :p
Voorbeeld staat hier

[ Voor 37% gewijzigd door Helmet op 07-04-2004 15:47 ]

Icons are overrated


  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 22-05 17:18
Ik kan rustig drie verschillende dingen invoeren en dan klopt de berekening ook volgens mij... Ik zie niet echt wat het probleem is :)

//edit:
Ah ik klik zojuist direct op de "Ok" knop en nu veranderd ineens de hele prijs- en gewichtskolom in NaN. Dat zit er mis dus...

//edit2:
Stupid finally found out :D

[ Voor 44% gewijzigd door Morrar op 07-04-2004 15:59 ]


  • pagani
  • Registratie: Januari 2002
  • Niet online
Helmet schreef op 07 april 2004 @ 15:40:
Ik zal een (ietwat aangepast) voorbeeld online gooien even geduld aub :p
Voorbeeld staat hier
Die geeft jouw eerder genoemde probleem niet :/ (so I'm with stupid ^ ;) )

Overigens, zit er op Afbeeldingslocatie: http://www.counterstriker.nl/~helmet/gotProblems/images/gif/edit.gif geen copyright?

[ Voor 22% gewijzigd door pagani op 07-04-2004 15:59 ]


  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 05-05 12:14
voer maar eens 2x hetzelfde product in, alleen met een verschillende lengte (dus bijvoorbeeld 1300 en 1400) hier op deze pc ie 6.0.2 gaat dat grandioos fout

Icons are overrated


  • pagani
  • Registratie: Januari 2002
  • Niet online
Helmet schreef op 07 april 2004 @ 15:58:
voer maar eens 2x hetzelfde product in, alleen met een verschillende lengte (dus bijvoorbeeld 1300 en 1400) hier op deze pc ie 6.0.2 gaat dat grandioos fout
Dat gaat inderdaad fout :X

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 22-05 17:18
keeej zou dit um zijn dan?

code:
1
var calcGewicht   = ((toLoop[i][0] * lengte) /1000) * toLoop[i][4];


lengte is undeffed. Moet dat niet toLoop[i][<whatever>] zijn?!?

//ah en <whatever> moet dan dus 2 zijn... Beetje heldere code schrijven helpt trouwens wel tegen dit soort dingen (evenals een beetje christelijke JS debugger btw)

[ Voor 34% gewijzigd door Morrar op 07-04-2004 16:03 ]


  • pagani
  • Registratie: Januari 2002
  • Niet online
Morrar schreef op 07 april 2004 @ 16:02:
keeej zou dit um zijn dan?

code:
1
var calcGewicht   = ((toLoop[i][0] * lengte) /1000) * toLoop[i][4];


lengte is undeffed. Moet dat niet toLoop[i][<whatever>] zijn?!?
lengte wordt toch gedefined in de arrays erboven?

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 22-05 17:18
Nee die geeft alleen de waarde die dan in toLoop[i][2] komt...

Hij wordt dan dus overgenomen uit de funtie aanroep en dus voor alles gelijk. Dat is dus het prob.

[ Voor 49% gewijzigd door Morrar op 07-04-2004 16:05 ]


  • pagani
  • Registratie: Januari 2002
  • Niet online
Morrar schreef op 07 april 2004 @ 16:04:
Nee die geeft alleen de waarde die dan in toLoop[i][2] komt...

Hij wordt dan dus overgenomen uit de funtie aanroep en dus voor alles gelijk. Dat is dus het prob.
Lengte wordt toch ook al meegegeven in de aanroep? Mmmm, niet snel editten :P

Maar de functie wordt toch voor elk item opnieuw aangeroepen :?

[ Voor 14% gewijzigd door pagani op 07-04-2004 16:06 ]


  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 22-05 17:18
lengte is idd niet undeffed (ff te snel geblaat van mijn zijde) want hij staat in de functie aanroep.

Maar de tabel wordt leeggegooid waarna ieder item er weer opnieuw ingeplaatst wordt (niet zo efficient). En dan werkt ieder item volgens mij dus met de lengte van de functie aanroep en niet met zijn eigen lengte... Voor de eigen lengte had er dus: toLoop [i][2] moeten staan volgens mij...

Ik zal het eens dowloaden en testen

//getest met ToLoop[i][2] (die wel in de tabel weergegeven wordt overigens) en dan werkt het prima...

//edit:
Altijd wel fijn dat mensen even aangeven of ze er iets aan gehad hebben en of het nu werkt enzo :/

[ Voor 22% gewijzigd door Morrar op 08-04-2004 01:30 ]


  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 05-05 12:14
Sorry Morrar, ben nu pas weer op mijn stage en dus ook nu pas weer bezig met mijn calculatieblad dank je voor je hulp het werkt perfect :>

Icons are overrated

Pagina: 1