login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Niet afronden AND optellen

Offline finduilas - 26/06/2006 19:05 (laatste wijziging 26/06/2006 19:12)
Avatar van finduilasPHP gevorderde Hallo,

Ik ben bezig met een script die het 1 en het ander uitrekent.Dit is m'n code: http://plaatscode.be/914/

Maar nu heb ik een probleem.De tijden worden afgerond.Ik kom 7 uit waar ik eigenlijk 6,5 moet hebben. (zie: http://finduilas.awardspace.com/werken.php )
Hoe kan ik dat voorkomen?

M'n 2de vraag is hoe moet alles van $uur optellen ?Dus de verschillende tijden?

13 antwoorden

Gesponsorde links
Offline CDNC - 26/06/2006 19:11
Avatar van CDNC PHP ver gevorderde @vraag 1: met round() je dingen 1 cijfer achter de maken...


@ vraag 2 als dat mer date() is, kun je hebt eerst exploden en dat kun je je berwerking doen, en indien nodig terug imploden
Offline Dark_Paul - 26/06/2006 19:13
Avatar van Dark_Paul PHP ver gevorderde kijk je $uur 's...
$uur = round ($berekening);
http://nl2.php.net/round
Offline finduilas - 26/06/2006 19:14 (laatste wijziging 26/06/2006 19:18)
Avatar van finduilas PHP gevorderde Dat was daarnet me 2de script om dat te proberen.
http://plaatscode.be/914/ (dat is deze nu)

en CDNC.Ik kom gewone getallen uit (soms met 1 cijfer achter de komma.) maar ze staan niet in de database.Die cijfers zijn het gevolg van
  1. $tijd1 = $qry['startvoor'];
  2. $tijd2 = $qry['stopmiddag'];
  3. $tijd3 = $qry['startmiddag'];
  4. $tijd4 = $qry['stopnamiddag'];
  5. $uur = $tijd2 - $tijd1 + $tijd4 - $tijd3;

Ik wil gewoon alle verschillende uitkomsten van $uur optellen.

EDIT: Ik snap niet echt wrm (en hoe) ik round moet gebruiken.Hij mag namelijk niet afronden.

EDIT2: sum(); 
Offline Dark_Paul - 26/06/2006 19:20 (laatste wijziging 26/06/2006 19:31)
Avatar van Dark_Paul PHP ver gevorderde http://nl2.php.net/round je kan zoiets doen:
  1. $uur = round (($tijd2 - $tijd1 + $tijd 4 - $tijd3), 3);

die ',3' kan je aanpassen aan het aantal cijfers dat je achter de komma wilt.
Offline finduilas - 26/06/2006 19:28 (laatste wijziging 26/06/2006 19:31)
Avatar van finduilas PHP gevorderde Dat werkt niet hoor Dark_paul

(Net als mijn sum.Heb wel iets anders.Maar ben het nog aan het proberen.)

EDIT: Het is me gelukt om die totaaluren te bekomen:
  1. $tot = array($uur);
  2. $totaaluren = array_sum($tot);
Offline Simon - 26/06/2006 19:42 (laatste wijziging 26/06/2006 20:00)
Avatar van Simon PHP expert als je dit doet
  1. $uur = $tijd2 - $tijd1 + $tijd4 - $tijd3;
moet je rekening houden met de wiskundige regels ;)
dat betekent dat optellen voor aftrekken gaat, maar dat wil je niet, dus moet je het zo doen:
  1. $uur = ($tijd2 - $tijd1) + ($tijd4 - $tijd3);


@hieronder; oja klopt, was verstrooid , optellen en aftrekken is inderdaad gelijk, mijn excuses voor deze domme opmerking
Offline Dark_Paul - 26/06/2006 19:50 (laatste wijziging 26/06/2006 19:51)
Avatar van Dark_Paul PHP ver gevorderde @Simon: hoe goed was jij in wiskunde? machtsverheffen en worteltrekken gaat boven vermenigvuldigen en delen en optellen en aftrekken. delen en vermenigvuldigen gaat boven optellen en aftrekken. optellen en aftrekken zijn gelijk, dus dat gaat gewoon in de volgorde zoals het geschreven is. zo geld het ook voor vermenigvuldigen - delen en wortentrekken - machtsverheffen.
voorbeeld:
3x5+1 = 3x5=15 +1 = 16 <-- vermenigvuldigen boven optellen
3+5-1+4 = 3+5 =8 -1=7 +4=11
tenminste, zo heb ik 't geleerd in de brugklas.
dit geld natuurlijk niet voor haakjes, de binnenste haakjes worden als eerste uitgevoerd. maar binnen de haakjes gelden deze regels wel weer..
Offline finduilas - 26/06/2006 20:03
Avatar van finduilas PHP gevorderde Ze noemen dat volgens mij commutativiteit 
Offline Nation - 26/06/2006 20:05
Avatar van Nation PHP interesse hehe,
wiskundeles bij sitemasters:D
maar je hebt wel gelijk Dark_Paul
Offline finduilas - 26/06/2006 20:08 (laatste wijziging 26/06/2006 20:11)
Avatar van finduilas PHP gevorderde Maar ik zit nog steeds met me probleem.
Ik heb dit gevonden (http://www.phphulp.nl/php/tutorials/1/106/186/) maar is niet echt wat ik wil.Ik wil niet dat hij afgerond word en dat ik dus de "onafgeronde uitkomst" krijg (die dus 6.5 moet zijn.)

Of heeft iemand een idee hoe het anders kan?Zonder time dan? (maar die wel hetzelfde effect heeft.)
Offline Gerard - 26/06/2006 20:17 (laatste wijziging 26/06/2006 20:32)
Avatar van Gerard Ouwe rakker in wat voor formaat staan de tijden eigenlijk in de database?
wat voor veldtype?

edit
Kijk heren, dit veranderd de hele situatie natuurlijk een beetje. Ik ga eens kijken wat ik kan doen.
Offline finduilas - 26/06/2006 20:21 (laatste wijziging 26/06/2006 20:22)
Avatar van finduilas PHP gevorderde
  1. datum date Nee 0000-00-00
  2. startvoor time Nee 00:00:00
  3. stopmiddag time Nee 00:00:00
  4. startmiddag time Ja 00:00:00
  5. stopnamiddag time Ja 00:00:00
  6. id smallint(6) Nee auto_increment
Offline Gerard - 26/06/2006 20:37 (laatste wijziging 26/06/2006 21:07)
Avatar van Gerard Ouwe rakker
  1. SELECT ADDTIME(TIMEDIFF(stopmiddag, startvoor), TIMEDIFF(stopnamiddag, startmiddag)) as Total
  2. FROM werkdag


Deze query kreeg ik iig het totaal terug, de rest kan je zelf wel bedenken denk ik ;)

edit
Omdat ik toch al een keer zin had om me te verdiepen in TIME() en weet ik wat niet meer:
  1. SELECT datum, startvoor, stopmiddag, startmiddag, stopnamiddag,
  2. ADDTIME(TIMEDIFF(stopmiddag, startvoor), TIMEDIFF(stopnamiddag, startmiddag)) AS TotalHoursWorkedDateFormat,
  3. ((UNIX_TIMESTAMP(CONCAT_WS(' ',datum,stopmiddag)) - UNIX_TIMESTAMP(CONCAT_WS(' ',datum,startvoor)))
  4. +
  5. (UNIX_TIMESTAMP(CONCAT_WS(' ',datum,stopnamiddag)) - UNIX_TIMESTAMP(CONCAT_WS(' ',datum,startmiddag))))
  6. / 3600, 1) AS TotalHoursWorked
  7. FROM werkdag


Ik rond dus wel af. Te weten 1 cijfer achter de komma (punt).
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.255s