07. juni 2010 - 10:49Der er
16 kommentarer og 1 løsning
lukket åbent for tilmelding afh af antal deltagere og dato
Hej
Jeg prøver at lave en tabel der viser kampe (fodbold) og dato samt antal tilmeldte (hvor 10 er maks).
Jeg vil gerne have den til at skrive åben hvis
Der er mindre end 10 tilmeldte og kampen ikke allerede er spillet dvs. dato er > idag.
Jeg har følgende kode igang:
$query = mysql_query("SELECT event_id,event_name,event_description,event_date,event_location,event_time,max_participants,event_status,num_reserved,date_format(event_date, '%d-%m-%y') FROM events ORDER BY event_date DESC LIMIT 10") or die(mysql_error()); while ($row = mysql_fetch_assoc($query)) {
$dateTime = new DateTime("now", new DateTimeZone('Europe/Warsaw')); echo "<tr><td width='200' align='left' valign='middle' bgcolor='#dddddd' class='farmerstyle'>"; echo " "; echo $row['event_name'];
if ($row['num_reserved'] < 10 && $row['event_date'] > $dateTime)
{ //Hvis ok, udfør denne kode echo '<a href="oversigt.php?offset='.$offset.'&id='.$row['event_id'].'"> [<i>Tilmelding</i>]</a>'; } else { //Hvis det ikke er tilfældet, udfør denne kode echo " [<i>Lukket</i>]</a>"; }
Men jeg kan ikke få det til at virke - den viser alt som lukket - måske det har noget med dato formaterne at gøre i henholdsvis tabellen og den jeg kalder frem som idag?
Skal jeg så skrive noget således at værdien (datoen for min event i tabellen = event_date) kan sammenlignes med et timestamp? Jeg syntes ikke det virker hvis jeg blot omdefinerer $dateTime = time();
I min tabel er event_date defineret som:
"datetime" og datoen med tid der indtastes ser således ud "2010-11-11 20:15:00"
Synes godt om
Slettet bruger
07. juni 2010 - 12:41#3
Du kan bruge MySQL-funktionen UNIX_TIMESTAMP(event_date) til at konvertere dit datatime-felt til et UNIX timestamp. (Ligesom du gør med date_format nu.)
Nu virker det, med if formlen, men hvad så hvis jeg gerne vil skrive datoen på følgende form dd-mm-yy hh:i:ss der brugte jeg tidligere:
print date('j M Y', strtotime($row['event_date']));
men den skriver nu "1970 01 1 00:00:00"
kan jeg formattere event_date der nu er timestamp således at den skriver dato og kl på formatetovenfor igen?
Synes godt om
Slettet bruger
07. juni 2010 - 14:45#7
Ja, det kan du sagtens. Du skal bare undlade at bruge funktionen strtotime da event_date allerede er formateret some UNIX timestamp. Så koden bliver faktisk mindre, og det var jo også det der var pointen med at hente datoen som timestamp :)
Bare at laegge 7200 til giver nok problemer om vinteren.
:-)
Synes godt om
Slettet bruger
07. juni 2010 - 20:10#11
#10, enig, men havde lidt travlt, da aftensmaden stod på bordet :)
I stedet bør funktionen date_default_timezone_set('tidszone') bruges med det korrekte parameter (i dette tilfælde Europe/Copenhagen) for at indstille tidszonen korrekt.
Synes godt om
Slettet bruger
08. juni 2010 - 15:35#12
Måske kan det også være nødvendigt at indstille MySQl's tidszone. Det er desværre hamrende besværligt, så prøv at se om PHP klarer ærterne selv, først.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.