ugrás a tartalomhoz

MySQL sorrendezésben a 10 előbb van mint a 9

Anonymous · 2006. Jún. 12. (H), 23.01
A probléma a következő:
Az adatbázisba év, nap stb szerint kell adatokat bevinni. Namármost, ha az adatokat kilistázom egy while + fetch_array-al (order by hanyadika), akkor pl. a 2006 május 10 előbbre kerül, mint a 2006 május 9!

Arra tippelek, hogy a 10-et 1-nek és 0-nak veszi, így az 1 valóban a 9 előtt van.

Azt kellene megoldani, hogy a tömbbe kiírásnál a 10 későbbre kerüljön, mint a 9?

Van valamilyen opció amit hozzá lehet illeszteni a mysql_query-hez?
például mint az "order by" vagy valami ilyesmi.

Azt megtudtam oldani, hogy a kimenetre kerülő pl: 3 az adatbázisba már 03-ként kerüljön és vissza (így a sorrend helyes lett), de négy helyen is kellene az oda-vissza alakítgatás, és nem tudom, hogy a mysql-ben lehet-e ez probléma a későbbiekben? (Főleg attól félek, hogy valamit "javítanak" és utána pont fordítva működik majd az egész)
 
1

dátumként vagy számként tárolás

Hojtsy Gábor · 2006. Jún. 12. (H), 23.05
Egy dátumot egészen egyszerűen nem szövegként, hanem dátum vagy szám mező típussal kell tárolni. Mindkettővel kiválóan megy a sorrendezés minden trükk nélkül. Miért nem ezeket alkalmazod?
3

Megoldva!

Anonymous · 2006. Jún. 12. (H), 23.18
A "hanyadika" mező VARCHAR. Átjavítom DATE-re

"Kis figyelmetlenségekből lesznek a nagy fejtörések..."
2

még mindig én...

Anonymous · 2006. Jún. 12. (H), 23.10
El szeretném kerülni azt a csúnyaságot, hogy a felhasználói felületen 3-a helyett 03-át kelljen kiválasztani.

Köszönöm előre is az ötleteket.

Lecroix
4

formázd akkor

Anonymous · 2006. Jún. 12. (H), 23.32
Ez rendes tőled, hogy szép felületet szeretnél, de azt tanuld meg, hogy egy sokatmondó egyszerű formátumból bármely másik előállítható. A MySQL DATE típusűt kiolvasva a következő formát kapod: YYYY-MM-DD

Néhány tipp a szép formához:

<?php
// 2006. June 12.
$szep1 = date("Y. F j.", strtotime($datum_az_adatbazisbol)); 

$mit = array("/-01-/","/-02-/","...","/-12-/");
$mire = array(". január ",". február ","...",". december ");

// 2006. június 12.
$szep2 = preg_replace($mit, $mire, date("Y-m-j.", strtotime($datum_az_adatbazisbol))); 
?>
Ha esetleg még kell segítség: PHP - date
5

helyes-e?

decker · 2006. Jún. 13. (K), 08.36
Sziasztok!
A kérdés kapcsán szeretném kérdezni, mivel már párszor jártam úgy, hogy az álltalam használt megoldás nem a legtökéletesebb. Én a dátumot int(12) alatt tárolom, és time() függvényt használom. hátránya, hogy mindig konvertálni kell, viszont mindig jól rendezi be? A kérdés, hogy leszokjam róla, vagy se?
6

MySQL DATE függvények

Hojtsy Gábor · 2006. Jún. 13. (K), 10.54
Használd inkább a MySQL dátum függvényeit, ha nem kell PHP-ben számként a dátum. Valószínű az gyorsabb lesz, bár ki is lehet mérni, ha valakinek van ideje rá :) Számból a FROM_UNIXTIME() alakít dátummá.
7

A megoldás

Anonymous · 2006. Jún. 19. (H), 02.00
Érdekesen alakult ki a végeredmény. Végülis azt csináltam, hogy az órát NUMERIC-ként, a percet viszont sima TEXT-ként viszem be.

Tekintve, hogy a perc lehet 00 is,( mert mégis csk hülyén nézne ki a 19.0 időpont) ezt kell a html kimenetre küldeni 0 helyett. Viszont bármelyik num, date, INT, Float stb-vel próbálkoztam, mindig lecsípte a második nullát.
A megoldás a TEXT lett.

Az Order by alatt pedig sorba tettem a különféle elemeket...
ORDER BY hanyadika, milyennap, ora, perc.

azért erre kitalálhatnának valamit...
8

TIME

Anonymous · 2006. Jún. 19. (H), 09.00
Már rég kitaláltak!
A mezőtípus legyen TIME, vagy DATETIME