Avatar billede mr-xmas Nybegynder
05. september 2006 - 19:25 Der er 41 kommentarer

En kode der tjekker dato

Hejsa exp.dk

Jeg er ved at lave julekalender man skal jo være klar til det sker :-)

men så er problemet kan ikke lige se hvordan jeg skal lave en kode der går ind i min mysql og tjekker dato i jul_kalender og hvis der står den 01-12-2006 og det er den 01-12-2006 skal man så kunne komme ind på siden ellers skulle man ikke kunne trykke på den. og hvis det er den 03-12-2006 skulle man os kunne komme ind på 01-12-2006 :-)

Håber i forstår mig :-)
Avatar billede nielle Nybegynder
05. september 2006 - 19:29 #1
Hvad er pointen med at der skal stå noget i din database? Skal datoen ikke bare være lig med eller efter datorn 01-12-2006.
Avatar billede mr-xmas Nybegynder
05. september 2006 - 19:37 #2
bare så det virker :-)
Så jeg ikke selv skal tilføje linket kl 24 hver dag :)
er det ikke sikkere i data basen?
Avatar billede nielle Nybegynder
05. september 2006 - 20:48 #3
Ok, hvis det skal forstås sådan at du har en tabel med 24 rækker ... en for hver dag i julekalenderen. Hver række har et datofelt som angiver hvilken dag løgen kan åbnes, og et felt med "indholdet" af lågen (et link?).

Så kan man nemt udtrække den åbne ler med denne SQL:

$sql = "SELECT laage FROM julekalender WHERE laageDato <= Now()"
Avatar billede shooka Nybegynder
05. september 2006 - 20:56 #4
Det kræver vel, at man ved hvormange sekunder der er gået siden 01.01.1970 og det er ikke bare noget man finder ud af
Avatar billede yHec Novice
05. september 2006 - 21:02 #5
Det behøver man ikke at vide, bare man formaterer sin dato i DB ordentligt. Dvs YYYY-MM-DD, så burde det virke.

/t
Avatar billede mr-xmas Nybegynder
05. september 2006 - 21:05 #6
heh nårh okay :)
men jeg har fundet en anden måde :) bare med javascript :)
Avatar billede nielle Nybegynder
05. september 2006 - 21:31 #7
JavaScript ... Den er i hvert fald slet ikke sikker imod at brugeren kan snyde :^)
Avatar billede mr-xmas Nybegynder
05. september 2006 - 21:33 #8
nielle nej det ved jeg godt :p
men i siger jo det svært med databasen :p
Avatar billede nielle Nybegynder
05. september 2006 - 22:04 #9
Nej da. Det er ganske lige til.

Med:

$sql = "SELECT laage FROM julekalender WHERE laageDato <= Now()";

- eller:

$sql = "SELECT laage FROM julekalender WHERE laageDato <= curdate()";

- får du præcist de åbne låger, og intet andet, fra din kalender-tabel. Jeg synes da ikke at det kan være meget simplere end det.

Og så foregår det på serveren, hvilket gør at brugerene ikke kan smugkigge i lågerne.

Du kan godt holde fast på din JS-løsning, men så vil jeg foreslå at du ikke laver den som JavaScript, men som PHP-kode i stedet for. En sådan løsning vil også beskytte imod smugkiggeri.
Avatar billede nielle Nybegynder
20. september 2006 - 21:30 #10
Har du fået kigget på det?
Avatar billede mr-xmas Nybegynder
12. november 2006 - 11:44 #11
send et svar :)
nu har du jo hjulpet :p
Avatar billede mr-xmas Nybegynder
12. november 2006 - 12:00 #12
hm syntes ikke rigtig det virker :s :)

<?php
include("dbconnect.php");
$sql = "SELECT laage FROM jul_kalender WHERE laageDato <= curdate()";
while($row=mysql_fetch_array($sql))
{
extract($row);
?>
<?php echo("$extra"); ?>
<?php
}
?>
Avatar billede nielle Nybegynder
12. november 2006 - 23:03 #13
Hvad med dette?

<?php
include("dbconnect.php");

$sql = "SELECT laage FROM jul_kalender WHERE laageDato <= curdate()";
while ($row = mysql_fetch_assoc($sql))
{
    echo $row["laage"];
}
?>
Avatar billede mr-xmas Nybegynder
14. november 2006 - 16:28 #14
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /customers/mr-xmas.dk/mr-xmas.dk/httpd.www/2006/dag.php on line 13
den skriver fejl det er while linien :)
Avatar billede nielle Nybegynder
14. november 2006 - 19:15 #15
Vi mangler jo også noget :^|

<?php
include("dbconnect.php");

$sql = "SELECT laage FROM jul_kalender WHERE laageDato <= curdate()";
$result = mysql_query($sql) or die(mysql_error())
while ($row = mysql_fetch_assoc($result))
{
    echo $row["laage"];
}
?>
Avatar billede mr-xmas Nybegynder
14. november 2006 - 19:41 #16
Parse error: syntax error, unexpected T_WHILE in /customers/mr-xmas.dk/mr-xmas.dk/httpd.www/2006/dag.php on line 14
Avatar billede nielle Nybegynder
14. november 2006 - 21:57 #17
Mangler vist lige et ; i slutningen af denne linje:

$result = mysql_query($sql) or die(mysql_error());
Avatar billede mr-xmas Nybegynder
14. november 2006 - 22:46 #18
den skriver jo bare allle de der navne på l¨ågerne :)
Avatar billede nielle Nybegynder
14. november 2006 - 22:54 #19
Den skriver den oplysning som ud udtrækker med din SQL:

SELECT laage FROM jul_kalender WHERE laageDato <= curdate()

- altså værdien af laage-feltet.

Hvis du vil have noget andet ud, skal din SELECT i hvert fald udtrække andre oplysninger end laage-feltet.
Avatar billede mr-xmas Nybegynder
14. november 2006 - 23:01 #20
ja men jeg har skrevet at lågen ikke skulle kunne åbnes før den 01122006
Avatar billede nielle Nybegynder
14. november 2006 - 23:04 #21
Ikke forstået? Det må du lige forklare lidt nærmere. Hvad er det du ønsker at få udskrevet og hvad får du ud i stedet?

Hvilken felt-type er dit laageDate felt forresten?
Avatar billede mr-xmas Nybegynder
14. november 2006 - 23:09 #22
altså jeg skal have lavet så at den ikke kan ånne siden hvis vi ikk har haft den dato endnu..
håber du forstår :) og så skal det være så man kan skrive dag.php?laage=1 og det = den 1 december :D
Avatar billede nielle Nybegynder
14. november 2006 - 23:12 #23
Du skal være opmærksom på at engelsk dato-format er på formen MM-DD-YYYY, så hvis dit felt er et datetime-felt, så kan det godt være at den fortolker "01122006" som "12 januar 2006" i stedet for "1 december 2006". Det ville i hvert fald forklare hvorfor at du får udtrukket denne låge.
Avatar billede mr-xmas Nybegynder
14. november 2006 - 23:17 #24
når ja :) ups prøver lige :D
Avatar billede mr-xmas Nybegynder
14. november 2006 - 23:29 #25
sådan nu virker det :=) kan jeg så ikk få lavet så den skriver hov hov ikk snyde ;)
Avatar billede mr-xmas Nybegynder
15. november 2006 - 21:09 #26
?
Avatar billede nielle Nybegynder
16. november 2006 - 08:43 #27
Leddet "... laageDato <= curdate()" sikre at man slet ikke kan komme til at åbne en låge uanset hvor meget man ellers måtte ønske det.
Avatar billede mr-xmas Nybegynder
17. november 2006 - 18:41 #28
ja det er rigtig :)
men hvordan kan man lave så den skriver det :p
Avatar billede nielle Nybegynder
18. november 2006 - 11:36 #29
Har du den SQL som du bruger til at udtrække en bestemt låge?

Hvis du har, så er det bare at sætte en "... AND laageDato <= curdate()" bag i denne:

1) Hvis resultatet af denne giver dig en række, så udkriver du denne,
2) men hvis den reurnere 0 rækker så er det jo "hov hov ikk snyde". :^)
Avatar billede mr-xmas Nybegynder
21. november 2006 - 09:15 #30
Vil du ikk prøve at lave koden :)? for er ikk helt med :p
Avatar billede nielle Nybegynder
21. november 2006 - 21:35 #31
Jeg fortrækker at bruge dette site som hjælp til selvhjælp. Hvis du ikke selv eksperimentere lidt, lære du jo trods alt ikke noget...

Well, here goes. Hvis du skal trække en bestemt låge ud af din tabel

I 14/11-2006 23:09:39 beskriver du dit link som:

dag.php?laage=1

Hvis man klikker på dette skal låge nr 1 åbnes, dvs. den for 1 december. Dette ville notmalt se nogenlunde sådan her ud:

<?
$dag = $_GET["laage"];
if (!is_int($dag)) $dag=1;  // Sikring imod SQL-injection.

$sql = "SELECT laage FROM jul_kalender WHERE day(laageDato)=$dag AND month(laageDato)=12 AND year(laageDato)=2006";
$result = mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($result) == 0)
    echo "hov hov ikk snyde";
else
{
    $row = mysql_fetch_assoc($result);
    echo $row["laage"];
}
?>

Du finder mere om MySQL's datofunktioner, day(), month(), year() osv. på adressen:

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

Den SQL-som udtrækker låge-data er denne:

$sql = "SELECT laage FROM jul_kalender WHERE day(laageDato)=$dag AND month(laageDato)=12 AND year(laageDato)=2006";

- og hvis den skal anti-snyde-sikres skal der som sagt sættes en "... AND laageDato <= curdate()" bag i denne.
Avatar billede mr-xmas Nybegynder
23. november 2006 - 21:04 #32
hm kan ikk helt få det til at virke :s
Avatar billede nielle Nybegynder
23. november 2006 - 22:55 #33
Hvordan ser din kode ud? Får du fejl? Får du noget andet end hvad du forventede? Andre oplysninger du kna give mig, sådan at jeg har en chance for at assistere?
Avatar billede mr-xmas Nybegynder
23. november 2006 - 23:00 #34
kode
<?php
include("dbconnect.php");

$sql = "SELECT laage FROM jul_kalender WHERE laageDato <= curdate()";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result))
{
    echo $row["laage"];
}
?>


Skriver
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(laageDato)=1 AND month(laageDato)=12 AND year(laageDato)=2006'
Avatar billede nielle Nybegynder
24. november 2006 - 06:56 #35
Den SQL-fejlbesked som du viser, kommer ikke fra det stykke kode du viser.


Din SELECT ser jo sådan ud:

$sql = "SELECT laage FROM jul_kalender WHERE laageDato <= curdate()";

- og fejlen siger at der er en fejl ved:

... '(laageDato)=1 AND month(laageDato)=12 AND year(laageDato)=2006'

Ergo må den komme fra en anden SELECT.
Avatar billede mr-xmas Nybegynder
24. november 2006 - 13:59 #36
der er slet ikke andet på hele siden andet end den kode der :s?
Avatar billede nielle Nybegynder
25. november 2006 - 02:18 #37
Det lyder altså meget mystisk, for fejlbeskeden stammer slet ikke fra den kode. Den *må* simpelthen komme et andet sted fra.

Den stemmer langt bedre med at du har skrevet noget i stil med:

$sql = "SELECT laage FROM jul_kalender WHERE day(laageDato)=$dag AND month(laageDato)=12 AND year(laageDato)=2006";

- end det du siger:

$sql = "SELECT laage FROM jul_kalender WHERE laageDato <= curdate()";
Avatar billede nielle Nybegynder
25. november 2006 - 02:22 #38
Kan det tænkes at du har skrevet koden inde i din dbconnect.php fil?
Avatar billede mr-xmas Nybegynder
25. november 2006 - 12:02 #39
<?
mysql_connect("localhost","bruger","pass");
mysql_select_db("db");
?>
sdådan ser min dbcoonect ud
Avatar billede nielle Nybegynder
25. november 2006 - 12:37 #40
Tja, det er da heller ikke der fejlbeskeden kommer fra. Men den kommer altså bare ikke fra det kode du har postet i 23/11-2006 23:00:03 - det kan den simpelthen ikke.

Men, du skulle jo alligevel heller ikke bruge din kode fra 23/11-2006 23:00:03 til noget. Slet den, og erstat den med det jeg postede i 21/11-2006 21:35:14. Og lav så den rettelse som jeg foreslår i samme post.
Avatar billede nielle Nybegynder
27. november 2006 - 16:36 #41
Hvis den skal nå at komme i luften inden 1. december, så haster det da vist lidt...
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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