Avatar billede jumping_jack Nybegynder
01. februar 2006 - 08:34 Der er 10 kommentarer og
2 løsninger

Vis noget mellem 2 datoer

Hej.

Jeg ved ikke hvordan dette skal lade sig gøre, men jeg tænkte på om man via php og mysql, kunne få vist f.eks. en nyhed i en vis periode.
Hvis man f.eks. siger at nyheden skal startes med at vises fra den 2006-02-01 til 2006-02-28 at så bliver den kun vist der.
Vis man f.eks. opretter en nyhed, som ligger ude i fremtiden skal den ikke vises og når nyheden er færdig, skal den ikke vises.
Jeg har prøvet at lave det med en date i mysql, og en int.
date'en siger hvilken dato den skal starte med at vise, og int'en bestemmer hvor mange dage, men det virker ikke helt efter planen.
Så kan man godt få php til at vise en nyhed mellem de 2 datoer man angiver???
Avatar billede dmdisco Nybegynder
01. februar 2006 - 08:56 #1
gemmer du et unixtimestamp kan du jo bare lave en if sætning

if ($timestamp > time() && $timestamp+($antaldage*24*60*60) < time()) {
  print "vis nyhed";
}
Avatar billede dmdisco Nybegynder
01. februar 2006 - 08:58 #2
$antaldage = de dage du vil have nyheden vist
$timestamp = det unixtimestamp nyheden skal vises fra
Avatar billede tcarlsen Nybegynder
01. februar 2006 - 08:59 #3
<?
/*
database

id
overskrift
nyhed
startdato : int
slutdato : int

*/

//conecter til database
mysql_connect("localhost", "brugernavn", "password");
mysql_select_db("databasenavn");

$date = date("dmY");

//henter nyhederne
$q = mysql_query("SELECT * FROM nyheder WHERE startdato=<$date AND slutdato=>$date ORDER BY id");
while ($f = mysql_fetch_array($g)) {
    echo "$f[overskrift]<br />$f[nyheder]";
}

//husk at når du lægger startdato og slutdato skal det stå ud i et (eks. ikke 12-08-2006 men 12082006)
?>
Avatar billede tcarlsen Nybegynder
01. februar 2006 - 09:01 #4
rettelse af
  while ($f = mysql_fetch_array($g)) {
til
  while ($f = mysql_fetch_array($q)) {

hov :D
Avatar billede idazio Nybegynder
01. februar 2006 - 09:04 #5
database:
id
overskrift
nyhed
slutdato


mysql_connect("localhost", "bruger", password");
mysql_select_db("mysql db");

$q = mysql_query("SELECT * FROM tabel WHERE CURDATE<slutdato");
while ($r = mysql_fecth_object) {
    echo $r->overskrift;
}
Avatar billede idazio Nybegynder
01. februar 2006 - 09:06 #6
hovsa min fejl... du skal  scriptet kommer til at se saadan her ud

database:
id
overskrift
nyhed
slutdato
startdato


mysql_connect("localhost", "bruger", password");
mysql_select_db("mysql db");

$q = mysql_query("SELECT * FROM tabel WHERE CURDATE<=slutdato AND CURDATE=>startdato");
while ($r = mysql_fecth_object) {
    echo $r->overskrift;
}
Avatar billede jumping_jack Nybegynder
01. februar 2006 - 10:52 #7
tcarlsen: jeg synes du skal have point, da din virkede hvis man ændrede
$q = mysql_query("SELECT * FROM nyheder WHERE startdato=<$date AND slutdato=>$date ORDER BY id");
til
$q = mysql_query("SELECT * FROM nyheder WHERE startdato<=$date AND slutdato>=$date ORDER BY id");

idazio: det kan godt være at din virker, hvis større end og mindre end tegnene blev rykket rundt på som med tcarslsen's, men når jeg prøvede at køre den på serveren, ville den simpelthen ikke vise noget som helst, altså siden blev ikke vist, den viste simpelthen bare at den prøvede på at finde siden, men det tog alt for lang tid.

dmdisco: jeg har ikke prøvet din, da jeg ikke ved hvordan jeg skal oprette en nyhed med et unixtimestamp. derfor kan jeg ikke sige om dit det virker.

Men hvis der er nogle af jer det synes min begrundelse af svarerne er uretfærdigt, så skriv, så må vi tage den derfra.
Derfor venter jeg med at acceptere et svar, til alle synes det er fair. :)
Avatar billede tcarlsen Nybegynder
01. februar 2006 - 11:26 #8
takker :D
Avatar billede idazio Nybegynder
01. februar 2006 - 11:28 #9
Amen altsaa.... det er fordi at tcarlsen er en point hunter (:D)
Avatar billede tcarlsen Nybegynder
01. februar 2006 - 11:30 #10
hva er jeg ???  jeg prøver bare at hjælpe det da dig der næsten skriver sammen script som mig ??
er da lige glad med point ville bare hjælpe
Avatar billede dmdisco Nybegynder
01. februar 2006 - 15:05 #11
skal datoen ikke skrives som ÅÅÅÅMMDD og ikke som du skriver 12082006 da 11032019 vil være lavere?

evt brug unixtime kig på time() og strtotime() (http://dk.php.net/manual/en/function.strtotime.php)
Avatar billede jumping_jack Nybegynder
02. februar 2006 - 10:05 #12
jo datoen skulle lige ændres fandt jeg også ud af :)
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