login  Naam:   Wachtwoord: 
Registreer je!
 Forum

hoe veel jaar, maand en dag in dienst

Offline Zappien - 22/02/2012 16:05
Avatar van ZappienNieuw lid Hallo,

Ik heb hier een stukje die ik door behulp van iemand op sitemasters heb doen werken zoals ik het wou, alleen is het niet totaal perfect. Dit stukje is wel al van 2 jaar geleden en ben nu pas weer bezig en dacht, ik ga het nog eens vragen want ik krijg het niet juist.

stukje:

  1. $sql = "
  2. SELECT
  3. FLOOR(v.diffrence/12) AS year, (v.diffrence%12) AS month
  4. FROM (SELECT (PERIOD_DIFF(DATE_FORMAT(CURDATE(),'%Y%m'),DATE_FORMAT('" . $section . "','%Y%m'))) AS diffrence) v;
  5. ";
  6. $time = $db->sql_fetchrow($db->sql_query($sql));


in $section komt dus een datum van wanneer men in dienst zijn. vb: 2012-01-23
Nu zoals het nu is, komt alleen maand en jaar er in voor. Nu wil ik ook nog de dag weten.

wat ook niet juist is, is dat met dit voorbeeld, de maand in dienst al op 1 maand staat, wanneer het werkelijk nog niet is want vandaag is het 2012-02-22 dus nog een dag voor het een maand is. Dit is nou wat ik zou willen zien maar ben er niet uit 


Wie kan me ff verder helpen? alvast bedankt! 

4 antwoorden

Gesponsorde links
Offline WouterJ - 22/02/2012 19:36
Avatar van WouterJ HTML gevorderde Met %Y%m in je query geef je aan hoe de datum format is. Nu heb je het Y m wat voor Year en month staat. als je ook nog de dag wilt kun je %d (wat voor day) staat erbij zetten (op 2 plaatsen).

En je 2e probleem komt volgens mij omdat PHP altijd vanaf 0 en niet vanaf 1 telt.

Tevens gebruik je het verschil voor een database tabel? Heb je wel goed genormaliseerd?
Offline Zappien - 22/02/2012 19:59
Avatar van Zappien Nieuw lid Heb de %d er bij geplaatst maar klopt gewoon niets van dan en wat bedoel je bij het laatste?
Offline Maarten - 23/02/2012 15:49
Avatar van Maarten Erelid Die %d zal niet voldoende zijn, maar je 2e probleem komt volgens mij omdat je nu inderdaad geen rekening houdt met dagen, en dat hij bv. 2 dagen aanziet als 1 maand omdat er geen kleinere "eenheid" (maand of jaar) is.
Offline Zappien - 25/02/2012 20:33 (laatste wijziging 26/02/2012 03:24)
Avatar van Zappien Nieuw lid Klopt, het kijkt nu alleen maar naar maand en jaar maar ben er niet echt uit wat ik hier moet veranderen.

Heb nu ff gewoon geprobeerd met iets anders;

  1. $new_date = date("l j F Y");
  2.  
  3. $join_date = '2012-01-27';
  4.  
  5. $join_days_elapsed = round((strtotime($new_date) - strtotime($join_date))/(60*60*24)-1);
  6.  
  7. $years= floor($join_days_elapsed/365);
  8. $months = floor(($join_days_elapsed-($years*365))/30);
  9. $days = floor(($join_days_elapsed-($years*365)-($months*30) )/30);


Het werkt wel beter maar ik zit er een dag naast of zo, want vandaag zijn we de 26ste en op $join_date staat 27 en dan toont die al een maand langer aan, als het 28 was dan klopt. $days blijft ook altijd op 0 staan. Wat kan ik nog doen om het nog nauwkeuriger te laten werken? Is dit trouwens wel een goei methoden of was die $sql beter?
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.17s