[PHP] Drop-down menu met maanden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • lvh
  • Registratie: Juli 2001
  • Laatst online: 02-11-2022
Ik zou graag in PHP een drop-down menu (<select>) hebben met daarin maanden. Deze drop-down menu moet als default selectie de hudige maand hebben met behulp van "selected". De datumcode die verder wordt doorgespeeld moet in het rijtje: (00, 01, 02 ... 12) passen. Wat is de meest PHP-ish methode om dit te doen? Het select statement zelf is vrij simpel:
code:
1
2
3
4
5
<select value="month">
<?
...
?>
</select>


Die "..." moet dus opevuld worden. Ik had gedacht aan een array (waar je in PHP blijkbaar vrij snel een hash van maakt...):
code:
1
$myMonths = array(01 => "January", 02 => "February", 03 => "March", 04 => "April", 05 => "May", 06 => "June", 07 => "July", 08 => "August", 09 => "September", 10 => "October", 11 => "November", 12 => "December");


Een ander stukje waar ik al vrij zeker van ben is dat er met deze array een foreach statement zal moeten gemaakt worden. Hoe moet dit dan verder ingevuld worden??

Acties:
  • 0 Henk 'm!

Anoniem: 26421

Wel, je zegt het zelf: gebruik een foreach om door je $myMonths heen te lopen en deze als opties weer te geven tussen je select-tags. Daarnaast kun je met bijv. de date() functie van PHP kijken of er `SELECTED` getoond moet worden, om de huidige maand te selecteren.

Acties:
  • 0 Henk 'm!

  • lvh
  • Registratie: Juli 2001
  • Laatst online: 02-11-2022
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<select value="month">
<?
$myMonths = array(01 => "January", 02 => "February", 03 => "March", 04 => "April", 05 => "May", 06 => "June", 07 => "July", 08 => "August", 09 => "September", 10 => "October", 11 => "November", 12 => "December");
foreach ($myMonths as $monthNumber => $monthName){
        $isSelected = "";
        $currentMonth = date(m);

        if ($monthNumber = $currentMonth){
                $isSelected=" selected";
        }

        echo '<option value="'.$monthNumber.'"'.$isSelected.'>'.$monthName.'</option>'
}
?>
</select>


Zoiets?

[ Voor 29% gewijzigd door lvh op 15-02-2006 19:49 ]


Acties:
  • 0 Henk 'm!

Anoniem: 26421

Ziet er goed uit - kan altijd beter -, behalve het feit dat je op lijn 6 de fout maakt door een string zonder aanhalingstekens als argument te geven:

PHP:
1
$currentMonth = date("m");

Acties:
  • 0 Henk 'm!

  • lvh
  • Registratie: Juli 2001
  • Laatst online: 02-11-2022
Alles krijgt als value 02 en krijg selected mee.
Oh, wacht, PHP is ruwweg zoals C als het op equalsen aankomt. Probleem opgelost. De HTML is nu zoals ik het wil hebben, maar de dropdown box gaat toch niet automagisch naar February.

Yay, eens vies naar gekeken en gerefreshed en het werkt :) dank je ivy :)

[ Voor 81% gewijzigd door lvh op 15-02-2006 20:01 ]


Acties:
  • 0 Henk 'm!

  • RHE123
  • Registratie: April 2003
  • Laatst online: 15:13

RHE123

Edubits

Er zit nog een foutje in je html, je hebt staan <select value="month">, hier moet je value door name vervangen!

Canon 1D X + 16-35 f/2.8L + 24-70 f/2.8L + 70-200 f/2.8L IS + 135 f/2.0L + 430EX II | iMac | MacBook Pro


Acties:
  • 0 Henk 'm!

Anoniem: 28333

plus ik zou
PHP:
1
$currentMonth = date("m");

buiten de foreach halen.. nu wordt die 12 keer herhaald zonder dat het nut heeft.. niet dat het veel performence oplevert, maar toch, mocht je een keer preciés op de laatste dag van een maand om 12 uur dat menutje opbouwen, wie weet krijg je dan 2x selected :D

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-06 00:38

NMe

Quia Ego Sic Dico.

Ik zou het zo aanpakken:
PHP:
1
2
3
4
5
6
7
8
9
10
<select value="month">
<?
$curMonth = date('m');
for ($i = 1; $i <= 12; $i++) {
        $isSelected = ($i == $curMonth) ? ' selected' : '';

        echo '<option value="'.$i.'"'.$isSelected.'>'.date('F', mktime(0, 0, 0, $i, 1, 2006)).'</option>';
}
?>
</select>

Zo is het zaakje om te beginnen wat korter zonder minder overzichtelijk te worden, en daarnaast zou je date() door strftime() kunnen vervangen zodat je de tekstuele maandnamen kan veranderen naar de juiste benaming in een andere taal. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Anoniem: 31450

racoontje schreef op woensdag 15 februari 2006 @ 19:30:
Die "..." moet dus opevuld worden. Ik had gedacht aan een array (waar je in PHP blijkbaar vrij snel een hash van maakt...):
Lichtelijk offtopic, maar wat heeft hashing hiermee te maken?
Pagina: 1