dynamische datum in formulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rene Zwolsman

Rene Zwolsman

16/02/2008 13:57:00
Quote Anchor link
Met behulp van een formulier wil ik bezoekers de mogelijkheid geven om een grafiek te laten opstellen van gegevens uit mijn database. Zij moeten daarvoor een begin en eind datum/tijd in voeren en met deze gegevens wordt dan een grafiek opgesteld. Om te voorkomen dat men 31 februari als datum kiest, moet men eerst het jaar, dan de maand, en dag de dag invoeren. Voor het huidige jaar mag men dan alleen kiezen uit de maanden tot nu toe en bij de betreffende maand alleen uit het aantal dagen van die maand.

Het lukt mij niet om een code op te stellen waarbij voor de voorgaande jaren alle maanden te tonen (2006 vanaf juli) en voor het huidige jaar alleen de maanden tot nu toe. Kan dit wel met php?

Dit is de code die ik nu heb:

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
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
require '../../php/db_connect.php';

$query = mysql_query("SELECT MAX(UNIX_TIMESTAMP(DateTime)) AS lastrow FROM weerdata");//laatste regel uit database ophalen in timestampformaat
$row = mysql_fetch_assoc($query);
if($row)
{

    $lastrow = 3600*(floor($row['lastrow']/3600));//naar beneden afronden op hele uren
}

$startjaar = 2006;
$eindjaar = date("Y",$lastrow);//jaar in laatste regel database
echo '<select name=\"jaar\">';
for($y = $startjaar; $y <= $eindjaar; $y++)//formulier voor jaren van 2006 tot laatste jaar in database
{
      echo "<option value=\"$y\">$y</option>";
}
                
echo '</select> jaar <select name=\"maand\">';
$startstamp = 1153864800; //timestamp voor 2006-07-26 0:00 uur = 1e regel database
$eindmaand = date("m",$lastrow);
if($y < $eindjaar) //als jaar niet laatste jaar van database is alle 12 maanden laten zien
{
    for($m = 1; $m <= 12; $m++)
    {

        echo "<option value=\"$m\">$m</option>";
    }
}

else
{
    for($m = 1; $m <= $eindmaand; $m++)//voor laatte jaar alleen de maanden tonen tot de huidge maand
    {
          echo "<option value=\"$m\">$m</option>";
    }
}

echo '</select>maand';
?>
 
PHP hulp

PHP hulp

24/12/2024 18:22:33
 
Frank -

Frank -

16/02/2008 14:02:00
Quote Anchor link
{quote]Om te voorkomen dat men 31 februari als datum kiest, moet men eerst het jaar, dan de maand, en dag de dag invoeren. [/quote]Iedere halfgare idioot weet dat dit niet kan. Met checkdate() controleer jij of de gekozen datum een geldige datum is, zo niet, dan geef je gewoon een foutmelding. Niks bijzonders toch? Dan heb je ook geen 3-traps raket nodig om de datum te selecteren.

Ps. Yahoo heeft een heel aantal hele fraaie date-pickers, dan bestaat dit hele probleem niet meer. javascript is wel verplicht.

Pps. Vraag jezelf even af of je wel met timestamps wilt lopen rommelen, dat is zelden een goed plan.
 



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.