04. januar 2011 - 18:01Der er
12 kommentarer og 1 løsning
Vis side alt efter dato og kl
Jeg skal have lavet et script hvor en side bliver vist på en måde det ene tidspunkt og på en anden tidspunkt bliver det vist anderledes.
Helt hvordan det bliver gjort nemmest og bedst det ved jeg ikke. Men jeg har en lille ide.
Jeg har lavet en database med [id][datotid][runde][oc] OC = open/close
Planen er så at en ny runde starter Mandag kl 12.
Fra Mandag kl 12 til torsdag kl 12 skal man kunne se en ting. Fra torsdag kl 12.00 til mandag kl 12 skal man kunne se en anden ting. Altså først åben og så lukket,
Dage og kl kan variere derfor har jeg lavet databasen som jeg har. Så kan man selv rette tid i tidspunkterne. Og det skal selvf være dansk tid.
Hvis vi siger databasen ser sådan ud: [1] [10-01-2011 12:00:00] [o] [1] [1] [13-01-2011 12:00:00] [c] [1] [1] [17-01-2011 12:00:00] [o] [2] [1] [20-01-2011 12:00:00] [c] [2]
Det betyder at vi fra den 10-01-2011 skal se den åbne side den 13-01-2011 skal vi så se den lukket side siden skal så åbnes igen den 17-01-2011 osv...
Siden skal sådan set være den samme. via noget "if system" skal den vises på forskellige måder.
Vil stadig gerne have at man i toppe fx når man er imellem den 10 og den 13 kan læse: Runde 1 er lukket fra den 13-01-2011 kl 12:00 Og imellem den 13 og 17 skal der så stå. Runde 2 starter 17-01-2011 kl 12:00
Hvordan gør det nemmest? Skal man bygge databasen op anderledes eller hvad synes i?
Jeg vil foreslaa en database struktur hvor du for hver periode, aaben eller lukket, viser start og slut tidspunktet. For eksempel saaledes:
start slut status runde 10-10-2011 12:00:00 13-01-2011 12:00:00 o 1 13-01-2011 12:00:00 17-01-2011 12:00:00 c 1
Det giver lidt mere data i tabellen, men dine querys bliver langt simplere fordi du simpelthen kan soege efter status og runde BETWEEN start AND slut.
Her er lidt pseudo-kode:
<? $now = date("d-m-Y H:i:s");//datoen og tidspunktet i dette oejeblik
//soeg efter de relevante data i dette oejeblik $result = mysql_query("SELECT start, slut, status, runde FROM Ronder WHERE '$now' BETWEEN start AND end");
giver denne fejl: Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 3 in ....test.php on line 11 Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 3 in ....test.php on line 12 Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 3 in ....test.php on line 13 Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 3 in ....test.php on line 14
Den fejl har jeg aldrig set før. Men har heller ikke set den måde at trække noget ud af en database.
Men jeg ved ikke om det var dumt jeg også lavede en id databasen?
Synes godt om
Slettet bruger
05. januar 2011 - 00:25#3
Uha... Nu virker det vidst. Har fundet fejlen. Hvis jeg skriver:
echo "$now<br>";
Så er klokken en time bagud.
Hvordan kan jeg rette det?
Synes godt om
Slettet bruger
05. januar 2011 - 02:26#4
Og så skal jeg have indsat en fejl besked som bliver vist istedet for den fejl kode der kommer frem når der ikke er noget i databasen der passer.
Fx teksten "Der er ikke nogle planlagte runder pt."
En time forkert - saa er det nok din timezone der skal indstilles. Proev at indsaette denne kode:
date_default_timezone_set("Europe/Copenhagen");
Fejlmelding, igen ikke testet men dette skulle virke:
$result = mysql_query("SELECT start, slut, status, runde FROM Ronder WHERE '$now' BETWEEN start AND end") or die(mysql_error('Der er ingen runder planlagt pt'));
Og saa har du "heller ikke set den måde at trække noget ud af en database." Mener du med mysql_result? Den kendte jeg heller ikke foer jeg faldt over den i et spoergsmaal jeg besvarede her paa Eksperten. Jeg sad og kodede 'while($row = mysql_fetch_array($result)){.....} selv om jeg vidste at der kun var en raekke.
Jeg opretter dette som et svar idet jeg haaber at have bidraget til at besvare det stillede spoergsmaal.
Synes godt om
Slettet bruger
05. januar 2011 - 10:06#6
Kan ikke lige få dette til at virke:
$result = mysql_query("SELECT start, slut, status, runde FROM Ronder WHERE '$now' BETWEEN start AND end") or die(mysql_error('Der er ingen runder planlagt pt'));
Saa forklar lidt mere. Hvilke vaerdier har du i tabellen Ronder (som jeg ville have kaldt Runder men lavede en trykfejl)? Hvis du ingen runder har omkring nuvaerende tidspunkter hvilken fejlmelding faar du saa?
Synes godt om
Slettet bruger
05. januar 2011 - 10:28#8
Når der ikke er nogen runder så får jeg denne fejl: Har lavet en test hvor jeg ikke har rettet i det du skrev, men bare oprettet en tilsvarende database. Den virker perfekt når der er nogle runder men ikke når der ikke er nogen, så kommer denne fejl:
Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 3 in ....test.php on line 11 Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 3 in ....test.php on line 12 Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 3 in ....test.php on line 13 Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 3 in ....test.php on line 14
Aha, det er ikke en mysql fejlmelding fra databasen, det er en php fejlmelding. Jeg forstaar.
Proev:
//soeg efter de relevante data i dette oejeblik $result = mysql_query("SELECT start, slut, status, runde FROM Ronder WHERE '$now' BETWEEN start AND end");
//soeg efter de relevante data i dette oejeblik $result = mysql_query("SELECT start, slut, status, runde FROM Ronder WHERE '$now' BETWEEN start AND end");
Jeg har kikket paa det, men det er mere komplekst. Men det er et interessant problem som jeg muligvis kikker naermere paa i eftermiddag (hvis du ikke inden da har haft en anden loesning.)
Synes godt om
Slettet bruger
05. januar 2011 - 12:12#13
Jeg tænker over andre måder at gøre det på. Men kan ikke komme på så mange andre. Så tror ikke du skal regne med at jeg ligefrem har fået problemet løst :P
Synes godt om
Ny brugerNybegynder
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.