Autor Zpráva
Kyle
Profil
Ahoj, potřeboval bych poradit...
potřebuju z DB vypsat vždy nejbližší údaj k datu, které je (např. dnes 16.11.2007), tak, že mi to vypíše např. řádek, který tam bude mít datum 20.11.2007 (bude v tu dobu nejbližší)

datum zapisuju

$datum = date('j. n. Y');

promenná datum se zapiše do DB...

nevíte někdo jak na to?..byl bych vam hrozne vděčnej :)
YoSarin
Profil
SELECT datum FROM table ORDER BY abs(datediff(datum, "2007-11-16")) ASC LIMIT 1;
To by snad mělo fungovat... :-)
Kyle
Profil
no mam to asi takhle:

$result = mysql_query ("SELECT datum FROM `zap_md` ORDER BY abs(datediff(datum, '2007-11-16')) ASC LIMIT 1;");
$row = mysql_fetch_array($result);

ale nic to nedela :-/, nic to nevypise a jeste bych potreboval ne od konkretniho data, ale proste od toho co je (bude), ale to se asi vyresi

$datum = date('j. n. Y');
promenna se vypise :)...

ale tak mi to nejak nejde :-/, asi jsem neco udelal blbe, vidim takovyto prikaz poprve :o)

EDIT: jo jeste, aby se vzal vlastne celej ten radek, aby se z neho dalo vypisovat ... :o)... napr. $row[test]
YoSarin
Profil
mi ten dotaz sám o sobě funguje...
co se vypíše na $result["datum"]?
YoSarin
Profil
teda na $row["datum"] :)
Kyle
Profil
no prave, ze nic mi to nevypise a ani zadnou chybu to nehlasi... :-/
YoSarin
Profil
zkus ten dodaz poslat přes PHPmyAdmina - jestli tam nevyhodí žádnou chybu, tak si zkontroluj jestli ho máš sprvně přepsanej v kódu...
YoSarin
Profil
a nebo hned pod to mysqli_querry(); dej die(mysql_error());
kuchi
Profil *
hoj. mam podobny problem. prikaz SELECT * FROM `program` ORDER BY abs(datediff(datum, '2007-01-31')) ASC LIMIT 1; mi funguje ok na mem pc doma, kdyz ho ale skusim provest na servru, hodi mi to chybu (spatny syntax). Mohlo by to byt tim ze na sevru je MySQL 4.0.26? Pokud ano, jak mam syntax upravit aby fungoval?
kuchi
Profil *
tak ja jsem nelenil a skusil to vyresit jinak, pres PHP. Vysledkem je id radku s nejblizsim datumem:
//Zapise do promene $aktualdatum dnesni datum ve formatu RRRRMMDD (napr. pro 1.1.2007 to bude 20070101)
$aktualdatum = date("Ymd");
//Vybere z tabulky vsechny zaznamy serazene podle data od nejstarsich po nejnovejsi
$nejblizsiakce = MySQL_Query("select * from program order by datum asc");
while ($nejblizsiakce2 = MySQL_Fetch_Array($nejblizsiakce)){
//Zformatuje datum z databaze do pozadovaneho tvaru RRRRMMDD (mozna to jde zformatovat i lehceji ale ja to neumim)
$datumakce = $nejblizsiakce2["datum"][0].$nejblizsiakce2["datum"][1].$nejblizsiakce 2["datum"][2].$nejblizsiakce2["datum"][3].$nejblizsiakce2["datum"][5]. $nejblizsiakce2["datum"][6].$nejblizsiakce2["datum"][8].$nejblizsiakce 2["datum"][9];
//Pokud je nejblizsi akce dnes, zapise do promene $id cislo (id) dnesni akce, do promene $i zapise cokoliv, timpadem se uz dalsi akce nebudou porovnavat
if ($aktualdatum == $datumakce){ $id = $nejblizsiakce2["id"]; $i = "d"; }
//Pokud neni nejblizsi akce dnes, zapise do promene $id prvni nejblizsi zaznam, do promene $i zapise cokoliv aby se dalsi zaznamy nepridavaly
if (($aktualdatum < $datumakce) and ($i == "")) { $id = $nejblizsiakce2["id"]; $i = "d"; }
}
Tohle jsem vymysle, myslim ze by to melo fungovat i s prelomem roku, ... Pokud tam najdete chybu, dejte pls. vedet.
djlj
Profil
kuchi
Možná funkční, ale pokud budeš mít v databázi desetitisíce dat, tak také dosti pomalé ;),
Toto téma je uzamčeno. Odpověď nelze zaslat.