Just nu i M3-nätverket
Gå till innehåll

visa innehåll i mapp


kungmats

Rekommendera Poster

Om du ska vara säker på att det funkar i alla lägen om du har en date-kolumn (som du bör ha - lagra inte datum som text om det inte finns nån speciell anledning) så låt databasen formattera datumstrangen:

 

$query = "SELECT * FROM tabell WHERE DATE_FORMAT('%Y-%m-%d', datum)='".$datum."'";

 

http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#Date_and_time_functions

 

---

Men om jag tolkar tråden rätt, så ska dagens datum användas?

 

om det är fallet, så bör man ju använda NOW() i sql-satsen istf att blanda in PHP-funktionerna...

 

 

[inlägget ändrat 2002-04-09 22:32:55 av Paddskalle]

Länk till kommentar
Dela på andra webbplatser

Jag har funderat lite. Vet inte om jag har alldeles rätt, men jag har uppfattat det som att MySql lagrar datumet numeriskt och därför bör också jämförelsen göras numeriskt (utan skiljetecken): Date("Ymd").

Som jag uppfattar det så vill MySql ha DATE med århundrade (8 siffror) och lägger därför till det vid jämförelse. Det är därför jag tror att det fungerade med date("ymd"). (För det gjorde det när jag testade med det i sql-fråga, m.a.o jämförelsen VAR päron med päron, jag hade fel.)

 

Men Mysql är inte min starka sida så du kanske skulle titta mer på vad Padskalle skrev.

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Jag har alla datum i DATE format.

 

Jag har bara inte lyckats få till det som jag vill.

 

Jag använder ditt tidigare tips med NOW() för att visa t.ex. en vecka el månad frammåt. men jag får inte till det med att skriva ut rätt veckodag utan då står det bara datum.

 

För att visa "idag" har jag inte fått till det med NOW() utan använder min tidigare sträng:

 

$dagensdatum = date("ymd");

 

$data = mysql_db_query("db", "SELECT * FROM tebellen WHERE (startdatum = $dagensdatum) OR ( startdatum <= $dagensdatum AND stopdatum >= $dagensdatum ) ORDER BY omrade,arena,evenemang");

 

 

Jag har ju:

startdatum (för endagsevenemang eller period)

stoppdatum (för avslut av period)

 

 

Som sagt var, jag försöker lära men det går sakta.

// Mats W \

Länk till kommentar
Dela på andra webbplatser

byt ut $startdatum mot NOW() i din sql, så ska det ju funka:

 

$data = mysql_db_query("db", "SELECT * FROM tebellen WHERE (startdatum = NOW()) OR ( startdatum <= NOW() AND stopdatum >= NOW() ) ORDER BY omrade,arena,evenemang");

 

Hur plockar du ut veckodagen?

Om det är med samma fråga, så använd

SELECT DAYOFWEEK(startdatum) AS veckodag, * FROM ...

 

 

Länk till kommentar
Dela på andra webbplatser

Hej!

 

Att byta ut mot NOW() funkade jättebra, men dagen fixar jag inte.

 

Blir alltså "veckodag" i frågan en variabel som jag kan skriva ut med

echo $veckodag; ?

 

Jag antar att du menade så här, men jag får detta felmeddelandet:

 

Warning: Supplied argument is not a valid MySQL result resource in ....../vecka.php on line 31

 

========================================

$data = mysql_db_query("db", " SELECT DAYOFWEEK(startdatum) AS veckodag ,* FROM tabellen WHERE startdatum BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 7 DAY) ORDER BY startdatum,omrade " ) ;

 

 

-------RAD 31-----------

while ($event = mysql_fetch_array ($data)) {

 

 

 

$farg1 = "#EFEFEF" ;

$farg2 = "#DEDEDE" ;

$farg = ($i++&1)?$farg1:$farg2;

 

 

print "<table width=480 border=0 cellspacing=0><tr bgcolor=\"$farg\" valign=top>";

print "<td width=70><font class=ort>".$event["startdatum"];

print "</font></td><td align=left width=65><font class=ort>".$event["omrade"]."</font></td><td width=90><font class=arena>".$event["arena"]."</font></td><td width=255><font class=event>".$event["evenemang"]."</font></td></tr></table>";

}

 

 

Länk till kommentar
Dela på andra webbplatser

För det första så bör du alltid kolla att du inte får ett fel från DBn. Tror att B Wisser gett exempel på detta.

 

Men jag ser i detta fallet att jag hade fel ang ",*" i selecten.. rada istället upp de kolumner du vill ha:

 

SELECT DAYOFWEEK(...), col1, col2... FROM

 

du får en nyckel "veckodag" i din array. Använd den som vanligt - $event["veckodag"]

 

veckodag blir en siffra från 1 till 7, där 1 är söndag.

Gör en array med namnen på veckodagarna och använd nuffran som index. (Det finns ett exempel i en annan tråd här nånstans)

 

 

 

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Du är ett snille!

Fungerar perfekt!

 

 

Men nu har jag ju evenemang som börjat tidigare än idag och håller på längre än idag. Vilket då innebär att start- & stoppdatum inte matchar.

 

Då ha jag tagit den här frågan för att få med allt.

 

WHERE (startdatum BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 7 DAY)) OR (startdatum <= NOW() AND stopdatum >= NOW()) ORDER BY startdatum,omrade " ) ;

 

Och det fungerar, MEN ....

 

... hur kan jag hindra att scriptet skriver tidigare datum än idag? .. alltså jag vill ju ha med evenemanget i listan men det skall stå dagens datum, inte datumet då det började.

 

Jag skulle dessutom vilja att såna evenemang stog med på varje dag som listas för veckan.

 

 

// Mats W \

Länk till kommentar
Dela på andra webbplatser

Om du vill ha alla pågående evenemang så kan du använda

 

WHERE NOW() BETWEEN startdatum AND slutdatum ORDER BY...

 

tänker på det andra en stund...

...

 

så...

 

Du kan nog använda dig av en IF-sats i SQL-frågan. Har aldrig testat det själv, men nåt i stil med

 

SELECT IF(startdatum < NOW(), NOW(), startdatum) FROM ...

 

returnerar dagens datum (du får nog formattera om det andra argumentet med DATE_FORMAT)

 

Läs mer om IF på

http://www.mysql.com/documentation/mysql/bychapter/manual_toc.html#Control_flow_functions

 

 

 

 

[inlägget ändrat 2002-04-10 19:17:15 av Paddskalle]

Länk till kommentar
Dela på andra webbplatser

Hej B Wisser.

 

Vet inte om du fortfarande har koll på denna tråd, men jag har lite funderingar på scriptet som listar innehållet i en mapp som du gjorde.

 

Om jag sätter antal filer till bara 1 så slumpas inte den enda filen upp. Det är alltid samma som kommer trots många olika filer i mappen. Går det att fixa trpr du?

 

 

 

 

// Mats W \

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...