Avatar billede nikped Nybegynder
07. juni 2010 - 10:49 Der 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 "&nbsp;";
    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?

Håber I kan hjælpe mig!
Avatar billede Slettet bruger
07. juni 2010 - 12:18 #1
Hvad med bare at bruge et UNIX timestamp til sammenligning af datoer? Det gør det hele lidt lettere. (time())
Avatar billede nikped Nybegynder
07. juni 2010 - 12:36 #2
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"
Avatar billede 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.)
Avatar billede nikped Nybegynder
07. juni 2010 - 13:09 #4
jeg kan ikke få det til at virke.

Skal jeg bruge unix_timestamp(event_date) i min query eller skal jeg gøre det efterfølgende.

og skal jeg også køre unix_timestamp på time()?
Avatar billede Slettet bruger
07. juni 2010 - 14:06 #5
Det burde virke, hvis du bruger den i din query, og derefter sammenligner resultatet med resultatet af kaldet til time().
Avatar billede nikped Nybegynder
07. juni 2010 - 14:11 #6
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?
Avatar billede 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 :)

print date('j M Y',$row['event_date']);
Avatar billede nikped Nybegynder
07. juni 2010 - 15:08 #8
Ja det viser datoen korrekt, men tidspunktet vises forkert hvis jeg f.eks. skriver:

    print date('j M Y H:i',$row['event_date']);


Tastet i databasen: 2010-08-16 19:15:00
som timestamp: 1281978900
vist på side med ovenstående print date: 16 Aug 2010 17:15
Avatar billede Slettet bruger
07. juni 2010 - 18:08 #9
Det må have noget med tidszonerne at gøre. Den letteste måde at gøre noget ved det på, er vist ved at lægge 7.200 til timestampet (2 timer).
Avatar billede arne_v Ekspert
07. juni 2010 - 19:05 #10
Bare at laegge 7200 til giver nok problemer om vinteren.

:-)
Avatar billede 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.
Avatar billede 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.
Avatar billede arne_v Ekspert
04. juli 2010 - 03:24 #13
nikped?
Avatar billede nikped Nybegynder
12. juli 2010 - 13:36 #14
Hej,

Har været på ferie - en tur til sydafrika uden det store held set med danske øjne...

Jeg forsøger om jeg kan få det til at virke og vender tilbage
Avatar billede nikped Nybegynder
03. august 2010 - 15:08 #15
super det hjalp - hvordan giver jeg pts?
Avatar billede arne_v Ekspert
03. august 2010 - 15:13 #16
kimsey skal smide et svar
Avatar billede Slettet bruger
03. august 2010 - 15:42 #17
Kommer her :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester