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
<?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="<?php echo $tsFirst ?>"/></td>
</tr>
Wellicht niet de meest gebalanceerde oplossing, maar wel eentje die perfect werkt:

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

[size=xsmall]Toevoeging op 11/03/2012 13:16:55:[/size]

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.

[size=150]Alle datums van zondagen selecteren[/size]
SELECT datum
FROM alle_data
WHERE YEAR(datum) = '2009'
AND DAYOFWEEK(datum) = 1
ORDER BY datum ASC


[size=150]Alle maandagen selecteren met weeknummer[/size]
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 


[size=150]Alle dagen en datums van de eerste dag van een maand[/size]
SELECT DAYNAME(datum) AS naam, datum
FROM alle_data
WHERE YEAR(datum) = '2009'
AND DAYOFMONTH(datum) = 1
ORDER BY datum ASC 


[size=150]Aantal dagen per maand[/size]
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 


[size=150]Aantal dagen per maand[/size]
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 


[size=150]Alle werkdagen van een jaar/maand[/size]
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.
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:

<?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;
}
?>
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.

<?php
$sundays[] = date('d-m-Y'), $firstSunday);
?>
Hij zegt dan "syntax error unexpected ''"
dat kan kloppen er staat een ) teveel
<?php
$sundays[] = date('d-m-Y'), $firstSunday);
?>

moet zijn:
<?php
$sundays[] = date('d-m-Y', $firstSunday);
?>

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


[size=xsmall]Toevoeging op 12/03/2012 10:21:05:[/size]

Ik was ook nog een ; vergeten op regel 12 :-(
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.
Eddy, alles wat je in mySQL met datums kan, kan ook in PHP!!
[quote]
Wellicht niet de meest gebalanceerde oplossing
[quote]
Klopt :-)
Ieder, super bedankt, ik ga er gelijk mee aan de slag.

[size=xsmall]Toevoeging op 20/03/2012 05:46:32:[/size]

Oke ik heb dus nu het volgende, incl correcties, maar krijg nog steeds dezelfde fout melding.
<?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

[size=xsmall]Toevoeging op 20/03/2012 05:48:45:[/size]

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

Word vervolgt.

Reageren