Alleen de eerste zondagen van de maand

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ben Janssen

Ben Janssen

11/03/2012 13:07:48
Quote Anchor link
Beste mensen,

Ik wil alleen de eerste zondag van de maand, en dan 12 maanden laten zien in een dropbox.

Na wat experimenteren, dacht ik ten minste 1 zondag in een output te laten zien.
Helaas, nu ben ik het spoor helemaal bijster.
Wie kan mij verder helpen?
Ik ben niet PHP technisch, behandel mij aub als een beginner.

Alvast bedankt.

Bestandsnaam : epa2.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

ini_set('display_errors',1);
error_reporting(E_ALL);

//Create array with sundays only

$zon = date('d m Y');

$tsFirst = strtotime($zon.'next sunday');

?>


In de html staat het volgende.

<tr>
<td style="width: 200px; height: 30px;"><label for="inv_4">Datum</label></td>
<td style="height: 30px"><strong>:</strong><span style="color:red">*</span></td>
<td style="width: 243px; height: 30px;"><input type="text" id="inv_4" name="datum" size="4" style="width:230px;" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $tsFirst ?>
"/></td>
</tr>
 
PHP hulp

PHP hulp

03/05/2024 02:01:29
 
Eddy E

Eddy E

11/03/2012 13:15:46
Quote Anchor link
Wellicht niet de meest gebalanceerde oplossing, maar wel eentje die perfect werkt:

http://www.webmastercity.nl/forum/viewtopic.php?f=35&t=38059

Toevoeging op 11/03/2012 13:16:55:

Kort samengevat (mocht je niet kunnen bekijken ivm inloggen):

Hier gaan we werken met data, als in het meervoud van datum.
Omdat data nogal verwarrend kan zijn, gebruik ik het (foutieve) datums.

Vooraf kan het handig zijn om alle dagen in een tabel in je database op te nemen.
Een sql-dump met alle datums tussen 1-1-1970 en 31-12-2070 kan je hier downloaden.

Nu wel al die gegevens hebben gaan we er even mee spelen.
Let wel dat ik steeds in het jaar 2009 blijf spelen, maar dat hoeft natuurlijk niet.

Alle datums van zondagen selecteren
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT datum
FROM alle_data
WHERE YEAR(datum) = '2009'
AND DAYOFWEEK(datum) = 1
ORDER BY datum ASC


Alle maandagen selecteren met weeknummer
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT DAYNAME( datum ) AS naam, datum, WEEK( datum ) AS weeknummer
FROM alle_data
WHERE YEAR( datum ) = '2009'
AND DAYOFWEEK( datum ) =2
ORDER BY datum ASC


Alle dagen en datums van de eerste dag van een maand
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT DAYNAME(datum) AS naam, datum
FROM alle_data
WHERE YEAR(datum) = '2009'
AND DAYOFMONTH(datum) = 1
ORDER BY datum ASC


Aantal dagen per maand
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT MONTHNAME(datum) AS maand, COUNT(datum) AS aantal_dagen
FROM alle_data
WHERE YEAR(datum) = '2009'
GROUP BY MONTH(datum)
ORDER BY datum ASC


Aantal dagen per maand
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT MONTHNAME(datum) AS maand, COUNT(datum) AS aantal_dagen
FROM alle_data
WHERE YEAR(datum) = '2009'
GROUP BY MONTH(datum)
ORDER BY datum ASC


Alle werkdagen van een jaar/maand
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT datum, DAYNAME(datum)
FROM alle_data
WHERE YEAR( datum ) = '2009'
AND MONTH( datum ) = '3'
AND DAYOFWEEK( datum ) BETWEEN 2 AND 6
ORDER BY datum ASC



Je ziet dat de mogelijkheden eigenlijk eindeloos zijn.
In veel script-request zie ik dat ze een kalendertje willen maken.
Met daarbij het weeknummer, dagen etc.
Nu moet dat goed mogelijk zijn.

Voor voldoende leesvoer en alle functies: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

Van harte succes toegewenst.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/03/2012 17:37:14
Quote Anchor link
Als ik het goed begrijp ga je dus in MySQL een tabel maken met alle datums er in en daarop query-en. Lijkt mij niet wat de TS wilt en daarnaast kan het gewoon in puur php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function getFirstSundays($year) {
    $sundays = array();
    for ($i=1; $i<13; $i++) {
        $firstSunday = strtotime($year . '-'. $i . '-1');
        $weekday = date('N', $firstSunday);
        if ($weekday < 7) {
            $firstSunday += (7 - $weekday) * 86400;
        }

        $sundays[] = date('d-m-Y', $firstSunday);
    }

return $sundays;
}

?>
Gewijzigd op 12/03/2012 10:20:15 door Ger van Steenderen
 
Ben Janssen

Ben Janssen

12/03/2012 10:13:11
Quote Anchor link
Beide super bedankt, hier ben ik al een aardig eind mee op weg.

Betreft de PHP code, ik gebruik phpdesigner 7.2
en die geeft een fout melding op de volgende regel.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sundays
[] = date('d-m-Y'), $firstSunday);
?>

Hij zegt dan "syntax error unexpected ''"
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/03/2012 10:17:59
Quote Anchor link
dat kan kloppen er staat een ) teveel
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sundays
[] = date('d-m-Y'), $firstSunday);
?>

moet zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sundays
[] = date('d-m-Y', $firstSunday);
?>

Mijn excuus -ik kan maar beter van de port afblijven ;-)-


Toevoeging op 12/03/2012 10:21:05:

Ik was ook nog een ; vergeten op regel 12 :-(
 
Eddy E

Eddy E

12/03/2012 17:23:56
Quote Anchor link
Ger van Steenderen op 11/03/2012 17:37:14:
Als ik het goed begrijp ga je dus in MySQL een tabel maken met alle datums er in en daarop query-en. Lijkt mij niet wat de TS wilt en daarnaast kan het gewoon in puur php:


Klopt. Dan is jouw PHP-oplossing zeker beter!
Maar mocht hij ooit nog meer willen, (en diverse,ingewikkelder) om er later toch nog iets uit de database te halen, dan is mijn optie wellicht beter.

JOIN LEFT op deze tabel kan wonderen doen.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/03/2012 17:39:01
Quote Anchor link
Eddy, alles wat je in mySQL met datums kan, kan ook in PHP!!
Quote:
Wellicht niet de meest gebalanceerde oplossing
Quote:
Klopt :-)
Gewijzigd op 12/03/2012 17:39:27 door Ger van Steenderen
 
Ben Janssen

Ben Janssen

20/03/2012 05:39:13
Quote Anchor link
Ieder, super bedankt, ik ga er gelijk mee aan de slag.

Toevoeging op 20/03/2012 05:46:32:

Oke ik heb dus nu het volgende, incl correcties, maar krijg nog steeds dezelfde fout melding.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function getFirstSundays($year) {
    $sundays = array();
    for ($i=1; $i<13; $i++) {
        $firstSunday = strtotime($year . '-'. $i . '-1');
        $weekday = date('N', $firstSunday);
        if ($weekday < 7) {
            $firstSunday += (7 - $weekday) * 86400;
        }

        $sundays[] = date('d-m-Y', $firstSunday);
    }}

return $sundays;
?>


Heb ook een extra } bij gezet omdat de functie niet werd afgesloten

Toevoeging op 20/03/2012 05:48:45:

Oh, ik heb het verkeerde haakje gevonden.
Ga dit eerst even testen.

Word vervolgt.
Gewijzigd op 20/03/2012 05:47:31 door Ben Janssen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.