[PHP + Mysql] Event-kalender

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MadFly
  • Registratie: Juli 1999
  • Laatst online: 10-04-2023
Ok, het volgende is het geval. Ik wil voor een vereniging graag een lijst maken met daarop de evenementen die op de agenda staan. Echter ben ik te lui om dit bij te houden en wil dat oude evenementen niet getoond worden.

Oplossing, de boel in een database gooien met een dateveld en op de server de huidige datum ophalen. Daarvoor heb ik onderstaande code geschreven (beetje lompe code, I know), maar het bleek bijna te werken....

PHP:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php

// connectiemaken zooi

$huidigedatum = date("Y-m-d");
print("Vandaag is het $huidigedatum <BR><BR>");

$query2 = "SELECT * FROM kalender ORDER BY startdatum ASC"; 
// Even statement gesloopt alles te testen
// LIMIT 0,5 // WHERE startdatum >= '$huidigedatum' 
$result2 = mysql_query ($query2,$databak_db);
while ($kalenderitem = mysql_fetch_object($result2))
{ 

switch (substr($kalenderitem->startdatum, 5, 2))
{
   default: $maand1 = "Deze maand bestaat niet - 1";
   case 00: $maand1 = "Maand kan geen 0 zijn - 1"; break;
   case 01: $maand1 = "Januari"; break;
   case 02: $maand1 = "Februari"; break;
   case 03: $maand1 = "Maart"; break;
   case 04: $maand1 = "April"; break;
   case 05: $maand1 = "Mei"; break;
   case 06: $maand1 = "Juni"; break;
   case 07: $maand1 = "Juli"; break;
   case 08: $maand1 = "Augustus"; break;
   case 09: $maand1 = "September"; break;
   case 10: $maand1 = "Oktober"; break;
   case 11: $maand2 = "November"; break;
   case 12: $maand2 = "December"; break;
}
$dag1 = substr($kalenderitem->startdatum, 8, 2);
$jaar1 = substr($kalenderitem->startdatum, 0, 4);

if ($kalenderitem->einddatum != '0000-00-00')
{
$dag2 = substr($kalenderitem->einddatum, 8, 2);
$jaar2 = substr($kalenderitem->einddatum, 0, 4);
    switch (substr($kalenderitem->einddatum, 5, 2))
    {
    default: $maand1 = "Deze maand bestaat niet - 2";
    case 00: $maand2 = "Maand kan geen 0 zijn - 2"; break;
    case 01: $maand2 = "Januari"; break;
    case 02: $maand2 = "Februari"; break;
    case 03: $maand2 = "Maart"; break;
    case 04: $maand2 = "April"; break;
    case 05: $maand2 = "Mei"; break;
    case 06: $maand2 = "Juni"; break;
    case 07: $maand2 = "Juli"; break;
    case 08: $maand2 = "Augustus"; break;
    case 09: $maand2 = "September"; break;
    case 10: $maand2 = "Oktober"; break;
    case 11: $maand2 = "November"; break;
    case 12: $maand2 = "December"; break;
    }
    
    $tussenvoegsel = "t/m";
}
else
{ $dag2=""; $jaar2=""; $maand2=""; $tussenvoegsel=""; }
print("<strong>$dag1 $maand1 $jaar1 $tussenvoegsel $dag2 $maand2
 $jaar2</strong><BR>$kalenderitem->titel <BR><BR>"); }
?>


Nu het probleem... Wanneer ik het resultaat bekijk in de browser zijn de maanden augustus en september niet te zien. Deze geeft case 00 mee? Heb van alles geprobeerd maar ik kom er niet uit.

Hier nog wat screenshots om de boel te verduidelijken:

Databaseinhoud
Databasestructure
Het resultaat in de browser met het probleem omcirkeld

Acties:
  • 0 Henk 'm!

Verwijderd

08 is iets anders dan 8. Van getallen die met een 0 beginnen, wordt verwacht dat deze in het octale stelsel staan. Dat werkt met getallen van 0 t/m 7, dus is het logisch dat het bij 08 misgaat. Het octale stelsel kent geen 8. Haal de nullen aan het begin van getallen weg.

Acties:
  • 0 Henk 'm!

  • MadFly
  • Registratie: Juli 1999
  • Laatst online: 10-04-2023
Octale stelsel... ok :D

Het werkt nu, dank je wel.