Opvolgende maanden/verjaardag overzicht

Status
Niet open voor verdere reacties.

M@rcel

Gebruiker
Lid geworden
14 jul 2004
Berichten
177
Beste helpmij-ers,

Ik ben net begonnen met php-scripting. Ik onderhoud voor de plaatselijke vereninging een website ( met o.a. verslagen, persberichten etc. ). Voor deze site wordt er gebruik gemaakt van Joomla. Leden kunnen zich aanmelden, hierbij kunnen zij ook hun verjaardag opgeven. En wil ik alle verjaardagen onder elkaar weergeven dmv een eigen module. Joomla is geschreven in PHP

Mijn bedoeling is het volgende:
Ik wil een tabel hebben van 3 kolommen en 4 rijen een overzicht van alle verjaardagen op 1 pagina. Dit wil ik doen via een php-moduletje binnen joomla.
- datum van vandaag genereert een maand + jaar ( December 2009 in dit geval )
- De cel rechts van december 2009 wordt januari 2010, vervolgens februari 2010 etc.
- Dit loopt door tot november 2010 en dan houdt het op.

Als eerste wil het volgende voor elkaar zien te krijgen: Maanden optellen van December 2009 tot en met november 2010. Ik dacht dat het wel zou lukken op de volgende manier:

PHP:
<?php 
for($i = date("F Y"); $i <= 12; $i++) 
{ 
    echo $i; 
} 
?>

of

PHP:
<?php
	$maand=date("F  Y");
	print ($maand++);
?>

Helaas gaat dit niet lukken, hierdoor blijft mijn browser in een eindeloze loop hangen. Het belangrijkste is dat ik de opvolgende maanden krijg. Nu gebeurd het dat er bij de jaren en +1 gedaan wordt.

Wie kan me een duwtje in de goede richting geven?

Moet ik de huidige maand een waarde ( x ) meegeven en de volgende maand ( x + 1=x1 ) en de maand er na ( x1 + 1 =x2 ) etc tot en en met x11. En vervolgens weer opnieuw.

Alvast bedankt :thumb:
 
PHP:
<?php 
for($i = 1; $i <= 12; $i++) 
{ 
    echo date("F Y",mktime(0,0,0,date('n')+$i,0,date('Y')));
} 
?>
Het is niet erg netjes, maar dit zorgt ervoor dat hij van 12 2009 tot 11 2010 loopt.
In de for loop kan je niet werken met date("F Y") omdat dit geen cijfer is dat verhoogd kan worden.
Zoals ik beschrijf zorgt de loop ervoor dat hij oploopt en laat zien waar hij is.
Hopelijk kan je hiermee uit de voeten?!

Cheers,

T-J
 
Zou het niet beter zijn om gewoon een select te maken van een aantal jaren en een submit knop?

Dan geeft hij gewoon alle maanden weer van dat jaar + iedereen die dan jarig is en hoe oud ze worden. Dan doe je gewoon het verchil van die select en de geboortedatum?

Ik heb hier nog ongeveer zo een script liggen, maar is zeer on compleet en zeker niet de moeite om te posten.
 
Zou het niet beter zijn om gewoon een select te maken van een aantal jaren en een submit knop?

Dan geeft hij gewoon alle maanden weer van dat jaar + iedereen die dan jarig is en hoe oud ze worden. Dan doe je gewoon het verchil van die select en de geboortedatum?

Ik heb hier nog ongeveer zo een script liggen, maar is zeer on compleet en zeker niet de moeite om te posten.

Dat kan idd ook, maar is het niet een beetje raar om een submit knop te maken? Je kan toch gewoon beter op het moment van het laden van de pagina uitrekenen wat er weergegeven moet worden zonder submit knop? Je hoeft de pagina namelijk niet te versturen om de gegevens te zien. Als je een maand wilt opschuiven kan je dat evt wel doen, maar ik zou het dan met een $_GET doen.

Doe dan de volgende query:
[sql]SELECT jevelden FROM jetabel WHERE datum > NOW() AND datum < {$datum_nu_en_12_maanden} ORDER BY datum ASC;[/sql]
 
beide bedankt voor jullie reactie. Is deze mogelijkheid toepasbaar in een tabel? De tabel heeft een vaste aantal rijen en kolommen ( 4 rijen en 3 kolommen, 12 maanden uiteraard :D ). Misschien dat ik het nog uitbreid naar rijen.

Jan 2010 - Feb 2010 - Mrt 2010
Apr 2010 - Mei 2010 - Jun 2010
Jul 2010 - Aug 2010 - Sep 2010
Okt 2010 - Nov 2010 - Dec 2010

Of moet ik dit via een foreach lus doen en wat kan ik doen om te zorgen dat de regel niet iedere keer opnieuw begint. Het is natuurlijk niet de bedoeling dat iedere regel opnieuw met Januauri 2010 begint.

Alvast bedankt.
 
Ik zou eerst alle data ophalen en sorteren en daarna in een tabel zetten.
Zo iets als dit:
PHP:
//$sql is de query van hierboven...
$query = mysql_query($sql);
while($list = mysql_fetch_array($result)) {
  // de maand uit de datum halen en die gebruiken om de array te vullen
  $month = date('n',$list['datum']);
  // de data array heeft per maand de gegevens van de gebruiker
  $data[$month][] = $list['weergave_naam_email'];
}

// begin van de tabel
echo '<table border=1>';
for($i = 1; $i <= 12; $i++) {
	// alleen de eerste keer een regel starten
	if($i == 1) {
		echo '<tr>';
	}
	// cel aanmaken en datum noemen
	echo '<td>'.date("F Y",mktime(0,0,0,date('n')+$i,0,date('Y')));
	for($d = 0; $d < count($data[$i]); $d++) {
		// cel vullen met data
		echo $data[$i][$d].'<br>';
	}
	// cel afsluiten
	echo '</td>';
	// aan het eind van maand 4 en 8 regel eindigen en nieuwe starten
	if($i == 4 || $i == 8) {
		echo '</tr><tr>';
	}
	// bij laatste maand regel eindigen
	if($i == 12) {
		echo '</tr>';
	}
}
// tabel eindigen
echo '</table>';

Het is niet erg netjes, maar het moet wel doen wat je wilt. Ik hoop dat je vanaf hier zelf verder kunt! ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan