1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function lastSaturday($month, $year) { // number of days in each month $days_in_month = array(1=>31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); // fix for leap year if(date('L', mktime(0,0,0,$month,1,$year)) > 0) $days_in_month[2] = 29; // go through days of the month, starting at the end for($day = $days_in_month[$month]; $day > 1; $day--) { // check if day is saturday if(date('l', mktime(0,0,0,$month,$day,$year)) == 'Saturday') { // yay *O* return $day; } } // boo ;( return false; } ?> |
Ik denk dat je date('t') bedoelt. Dat is inderdaad wel handig en maakt het stukje in mijn code waarin ik dat opzoek overbodigquote:Op zaterdag 9 januari 2010 23:50 schreef Intrepidity het volgende:
Dat truucje van de 0e dag kun je inderdaad toepassen, maar met date('n') kun je ook achterhalen hoeveel dagen er in de huidige maand zitten (=laatste dag van de maand)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function lastSaturday($month, $year) { $days_in_month = date('t', mktime(0, 0, 0, $month, 1, $year)); // go through days of the month, starting at the end for($day = $days_in_month; $day > 1; $day--) { // check if day is saturday if(date('l', mktime(0,0,0,$month,$day,$year)) == 'Saturday') { // yay return $day; } } // boo return false; } ?> |
Hoe zou date('w') het korter maken dan wat hierboven staat?quote:Op zaterdag 9 januari 2010 23:58 schreef GlowMouse het volgende:
op basis van date('t') en date('w') moet het in veel minder regels kunnen
Omdat je op basis van het dagnummer van de laatste dag in een keer het juiste aantal dagen er vanaf kunt trekken Dan heb je ook geen for-lus meer nodig.quote:Op zondag 10 januari 2010 00:01 schreef Tijn het volgende:
[..]
Hoe zou date('w') het korter maken dan wat hierboven staat?
Oh zo. Ja, dan zou je het met een simpel sommetje kunnen oplossen.quote:Op zondag 10 januari 2010 00:02 schreef Intrepidity het volgende:
[..]
Omdat je op basis van het dagnummer van de laatste dag in een keer het juiste aantal dagen er vanaf kunt trekken Dan heb je ook geen for-lus meer nodig.
1 2 3 4 5 6 7 | function lastSaturday($month, $year) { $daysInMonth = date('t', mktime(0,0,0,$month,1,$year)); $lastday = date('w', mktime(0,0,0,$month,$daysInMonth,$year)); return $daysInMonth - (($lastday+1)%7); } ?> |
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 | /** * @param <int> $weekday Dag van de week (0 .. 6 - Zondag .. Zaterdag) * @param <int> $month * @param <int> $year * @return <int> timestamp van de laatste ...dag van de maand */ function lastDayOfMonth($weekday, $month = null, $year = null) { if(is_null($year)) { $year = date('Y'); } if(is_null($month)) { $month = date('m') + 1; } else { $month++; } $dayOfMonth = 0; $dayOfWeek = date('w', mktime(0, 0, 0, $month, $dayOfMonth, $year)); $dayOfMonth = $weekday - $dayOfWeek; if($dayOfMonth > 0) { //Verkeerde maand $dayOfMonth -= 7; } return mktime(0, 0, 0, $month, $dayOfMonth, $year); } ?> |
Hier komt alleen niet het goede antwoord uitquote:Op zondag 10 januari 2010 00:07 schreef GlowMouse het volgende:
je krijgt dan zoiets
[ code verwijderd ]
Mooi, en netjes met params.quote:Op zondag 10 januari 2010 00:11 schreef Light het volgende:
Ik ben nog even verder gaan puzzelen en heb nu een oplossing die Chandler-proof is
[ code verwijderd ]
Werkt voor alle dagen van de week, gewoon met een parameter.
nu welquote:Op zondag 10 januari 2010 00:14 schreef Tijn het volgende:
[..]
Hier komt alleen niet het goede antwoord uit
Ieder z'n ding idd. Ik vind het zo'n verspilling van ruimte om voor iedere curly brace open weer een nieuwe regel te beginnen. De sluit-brace staat wel op z'n eigen regel (behalve bij een if als er een else volgt).quote:Op zondag 10 januari 2010 00:19 schreef Intrepidity het volgende:
Achja, ieder z'n eigen ding he Ik kan er bijvoorbeeld niet tegen om de curly braces naast een klasse/functienaam te zetten Braces staan bij mij altijd op een volgende regel
True, leesbaarheid is ook belangrijk. Maar 'k denk niet dat PHP je code zo verandert dat de berekening wordt geoptimaliseerd, dus een efficient algoritme verzinnen moet je wel zelf doen.quote:En inderdaad, alles zo compact mogelijk maken heeft nauwelijks zin meer. PHP compileert en optimaliseert zijn code netjes tegenwoordig.
Thanksquote:Op zondag 10 januari 2010 00:17 schreef Tuvai.net het volgende:
[..]
Mooi, en netjes met params. [ afbeelding ]
Eens Hoewel ik wel vaak probeer om code ook compact te houden, maar dat is vooral om dubbele dingen te voorkomen. Op hoe meer plekken je iets moet aanpassen, hoe groter de kans dat je een aanpassing vergeet.quote:Ik prefereer leesbare, geïndente code over code die zo klein en compact mogelijk moet (tenzij het van belang is voor een merkbare performancewinst natuurlijk) zijn. Dat akelige Perl tijdperk waarin we zo absurd gelimiteerd waren zijn we inmiddels wel voorbij.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | { if( $expr2 ) { if( $expr3 ) { Klasje->Methode(); if( $expr4 ) { Klasje->EenMethode(); } else { Klasje->Meer(); Klasje->Code(); } } else { Klasje->Vaudje('omg'); } } else { Klasje->Vaudje('wtf'); } } else { Klasje->Vaudje('lol'); } |
quote:Op zaterdag 9 januari 2010 23:54 schreef Tuvai.net het volgende:
Wat gebruiken jullie eigenlijk om PDFs on the fly te genereren? Ik gebruik nu al heel lange tijd FPDF ( http://www.fpdf.org ) maar ik ben er elke keer érg lang mee bezig om dynamische documenten te maken, die gedeeltelijk uit variabele content en gedeeltelijk uit vaste content bestaan. Nou is PDF scripts maken sowieso al niet mijn meest favoriete bezigheid, maar in .NET gaat het me een stuk sneller af met de iText / iSharp of dbAutoTrack libraries.
Welke raden jullie aan?
Maar stel ik maak een factuur voor de klant aan, voeg ik dan 2 extra regels toe?quote:Op vrijdag 8 januari 2010 12:25 schreef Tuvai.net het volgende:
[..]
Inderdaad niet meer van een kwestie van je code in een cronjob zetten die om de zoveel tijd draait. Vrijwel hetzelfde als wat je in Windows doet met executables en geplande taken / scheduled tasks.
Ik zou zorgen dat je bij het aanmaken van een factuur de datum kunt opgeven waarop 'ie verzonden moet worden en dat geheel dan kunt opslaan in je database.quote:Op zondag 10 januari 2010 20:51 schreef wobbel het volgende:
[..]
Maar stel ik maak een factuur voor de klant aan, voeg ik dan 2 extra regels toe?
Veld "Periode" dus 14, 31, 365
Veld "Aantal" -1 is ongelimiteerd doorgaan, of 12 voor 12 maanden (als je voor 31 dagen hebt gekozen)
Of periode + aantal opgeven, en dan dmv een cronjob elke dag controleren of er een factuur gegenereerd moet worden. En dan als je maandelijks kiest dat hij het altijd op de 15e doet bijv.?
Tja, dat is natuurlijk een kwestie van je fantasie gebruiken, en volledig afhankelijk van je script en hetgeen je wilt doen. Ik heb een paar weken geleden nog een applicatie gemaakt waarbij op vaste tijdstippen diverse mailtjes naar leden verzonden moesten worden, volledig automatisch. Denk daarbij aan vaste tijdstippen als:quote:Op zondag 10 januari 2010 20:51 schreef wobbel het volgende:
[..]
Maar stel ik maak een factuur voor de klant aan, voeg ik dan 2 extra regels toe?
Veld "Periode" dus 14, 31, 365
Veld "Aantal" -1 is ongelimiteerd doorgaan, of 12 voor 12 maanden (als je voor 31 dagen hebt gekozen)
Of periode + aantal opgeven, en dan dmv een cronjob elke dag controleren of er een factuur gegenereerd moet worden. En dan als je maandelijks kiest dat hij het altijd op de 15e doet bijv.?
Jewel, met FPDF vanwege gebrek aan beter, dus ik kan je niet verder helpen Je kunt naar de PDF module van PHP zelf kijken (http://php.net/manual/en/book.pdf.php), maar ik zie niet 1,2,3 in hoe dat beter is als FPDFquote:Op zondag 10 januari 2010 22:01 schreef Tuvai.net het volgende:
Maare, niemand maakt hier dus dynamische PDFs in PHP?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |