Avatar billede sorensen_123 Nybegynder
04. oktober 2008 - 14:31 Der er 9 kommentarer og
1 løsning

Vis ikke, hvis udløbet

Hejsa

Jeg er i gang med at lave et bannersystem.

I det system kan man sætte en udløbsdato, hvor banneret skal stoppe med at blive vist. Denne udløbsdato er i formatet DD-MM-ÅÅÅÅ.

Jeg skal vise et banner fra databasen, og derved tjekke om udløbsdatoen er overskredet.

Hvordan gøres dette lettest?
Avatar billede showsource Seniormester
04. oktober 2008 - 15:01 #1
SELECT * FROM `tabel` WHERE `dato` < CURDATE()
Avatar billede sorensen_123 Nybegynder
04. oktober 2008 - 15:06 #2
Har ikke testet dette, men tror du ikke at CURDATE bruger formatet MM-DD-ÅÅÅÅ? I så fald bliver jeg nødt til at ændre formatet inden jeg indsætter det i databasen :)
Avatar billede showsource Seniormester
04. oktober 2008 - 15:27 #3
Arghh, mig som så forkert!

Eneste løsning: ( hvis du spørger mig )

Lav en ny kolonne i din DB som er af typen "date" !!!!!
Derved får langt nemmere "adgang" til data senere hen i liet ! :O)
En update af DB kan nemt gøres med lidt php kode.
Avatar billede showsource Seniormester
04. oktober 2008 - 15:28 #4
livet og ikke liet! :=)

Gi mig lige 3-5 min. så får du lidt kode
Avatar billede sorensen_123 Nybegynder
04. oktober 2008 - 15:32 #5
Jeg venter ;)
Avatar billede sorensen_123 Nybegynder
04. oktober 2008 - 15:33 #6
Evt lav en explode af datoen når man gemmer, og sæt den i "rigtig" orden?
Avatar billede showsource Seniormester
04. oktober 2008 - 15:46 #7
En løsning:

$nytfelt = "nydato";
$tabel = "links";
$oldfield = "test";

$make_dato ="ALTER TABLE `".$tabel."` ADD `".$nytfelt."` DATE NOT NULL DEFAULT '0000-00-00'";

$do = mysql_query($make_dato) or die (mysql_error());

$dates = mysql_query("SELECT `".$oldfield."` FROM `".$tabel."`") or die (mysql_error());

while($new = mysql_fetch_object($dates)) {
$olddato = $new->$oldfield;
$dato = explode("-", $olddato);

$newdate = $dato[2]."-".$dato[1]."-".$dato[0];
echo $newdate."<br>";


$sql = "UPDATE `".$tabel."` SET `".$nytfelt."` = '".$newdate."' WHERE `".$oldfield."` = '".$olddato."' LIMIT 1";

echo $sql."<br>";

mysql_query($sql) or die (mysql_error());
}

En anden om lidt.....
Avatar billede showsource Seniormester
04. oktober 2008 - 15:51 #8
$dates = mysql_query("SELECT `".$oldfield."` FROM `".$tabel."`") or die (mysql_error());

while($new = mysql_fetch_object($dates)) {
$olddato = $new->$oldfield;
$dato = explode("-", $olddato);

$newdate = $dato[2]."-".$dato[1]."-".$dato[0];
echo $newdate."<br>";

mysql_query("UPDATE `".$tabel."` SET `".$oldfield."` = '".$newdate."' WHERE `".$oldfield."` = '".$olddato."' LIMIT 1") or die (mysql_error());
}


$change = "ALTER TABLE `".$tabel."` CHANGE `".$oldfield."` `".$oldfield."` DATE NOT NULL DEFAULT '0000-00-00'";


$do = mysql_query($change) or die (mysql_error());
Avatar billede wanze Nybegynder
05. oktober 2008 - 15:24 #9
Du burde lave din databasestruktur om, så datoen blev gemt som en dato og ikke som en streng.
Avatar billede sorensen_123 Nybegynder
14. november 2008 - 20:52 #10
Lukker :)
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