ugrás a tartalomhoz

MYSQL es PHP datum tipus problema

rodman · 2007. Jan. 3. (Sze), 14.17
van egy gondom.
adott egy adatbazis mysql-ben:
id, datum, helyseg, tortenes(szoveg)
a datum mezo DATE tipus, kiiratasnal yyyy-mm-dd formaban jelenik meg
egy PHP-ban megirt weblapon bekerek ket datum-ot:
ev - ho - nap ; ev - ho - nap, mind kulon tarolom (6 valtozo)
ki szeretnem iratni azokat az adatokat(sorokat) mely a datum mezo-beli ertek a ket megadott datum koze esik.
probalkoztam a mktime() fugvenyel, letrehoztam a
$kdatum=mktime(0,0,0,$kho,$knap,$kev) es a $Vdatum=mktime(0,0,0,$vho,$vnap,$vev) valtozokat.
az SQL keres pedig:
SELECT * FROM adatok WHERE ('$kdatum'<='datum') AND ('datum'<='$Vdatum')
hibat nem ir ki, hanem kiirja az osszes adatot az adatbazisbol.

kiprobaltam:
SELECT * FROM adatok WHERE ('2006.05.23'<='datum') AND ('datum'<='2006.08.15')
es hiba nelkul kiirja a kert adatokat.
Mit kene valtoztassak, hogy a $kdatum es a $Vdatum valtozokat hasznalva is kiirja a kert adatokat???
Hol hibaztam?

elore is koszi.
rodman
 
1

Doksi

janoszen · 2007. Jan. 3. (Sze), 14.39
Ha megnézted volna a doksiban található példákat, akkor rájöttél volna, hogy így kellene:

date("Y.M.d", mktime(0, 0, 0, 12, 32, 1997));


Ugyanis az mktime nem formázott napokat ad vissza. Mint az le is volt írva.
De ha eleve nem bonyolítottad volna túl a problémát, akkor ezt csináltad volna:

$kdatum=mysql_real_escape_string($kev . "." . $kho . "." . $knap);
$Vdatum=mysql_real_escape_string($vev . "." . $vho . "." . $vnap);


Ennél egyszerűbb megoldást keresve se találsz.
3

koszi

rodman · 2007. Jan. 4. (Cs), 10.24
koszi, nagy segitseg volt.
neztem a doksiban is, probalkoztam, de hibat jelzet,
persze rajottem hogy En hibaztam:
data("Y-m-d", mktime(...); hasznaltam
megegyszer kosz
2

Nem unix timestamp kell neked!

pp · 2007. Jan. 3. (Sze), 14.42
Ilyenkor mindig írasd ki az sql-t amit összeállítasz!

A manuálban) azt írják, hogy az mktime függvény egy unix timestamp-et(azaz egy szép nagy egész számot) ad vissza. Neked viszont a dátumra van szükséged.
Ajánlom használd a meglevő értékeket a lekérdezés összeállításához:
<?php
$sql="SELECT * FROM adatok WHERE ('".(int)$kev.".".(int)$kho.".".(int)$knap."'<='datum') AND ('datum'<='".(int)$vev.".".(int)$vho.".".(int)$vnap."')";
$result=mysql_query($sql);
...
?>
4

remek, koszi

rodman · 2007. Jan. 4. (Cs), 10.32
Kiprobaltam igy is ment, koszi.
kb 2 hete hogy hozzafogtam a PHP es MYSQL -hez,
s egybol a kozepebe, en ugy erzem hogy sokat haladtam kezdo letemre
megegyszer koszi a tippeket