Hellósztok
Már napok óta keresgélek neten, meg könyveket is olvasgatok, de egyszerűen nem találok megoldást a problémámra (pedig valszeg nem bonyolult :) ). Az lenne a kérdésem, hogyan lehet a dátumokat kezelni Drupal modulokban? Csak az érdekelne, hogyan olvasom ki az űrlapelemből, alakítom számmá, hasonlítom össze a mai/holnapi/más... dátummal (vagy elég, hogyan kérem le a mai dátumot, és azt már tudnám kezelni), töltöm fel/le adatbázisba (ez mondjuk elvileg menni fog :) ), és végül, hogyan alakítom a számot dátummá? Tudom kicsit sok kérdés egy témában, de tényleg nem találtam hasznos érthető leírást :(. Leírom kicsit részletesebben a problémát hátha segít a válaszadásban :).
Van egy űrlapom, amiben van egy dátum mező:
function modulom_myform() { $form = array(); $form['#submit'] = array('room_reserver_myform_submit'); $form['datum'] = array( '#type'=> 'date', '#title' => t('Dátum'), '#required' => $field->required, '#description' => t('Adja meg az érkezés dátumát!'), ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Foglalás elküldése'), ); return $form; }
Ezt a mezőt szeretném átalakítani számmá (timestamp, ha jól tudom), és azt kezelni a "validate" részben (hogy egy bizonyos intervallumot fogadjon csak el, mondjuk a mai naptól 3 nappal később lehet legelőször és mondjuk 3 hónap múlva legkésőbb).
function modulom_myform_validate($form, &$form_state) { // ??? }
A mai dátumot így ki tudtam íratni elvileg, de nem tudtam mit kezdeni vele :(:
print '<br>'.format_date(time(), 'custom', 'Y F j - l');
Próbálkoztam ilyen kódokkal:
$haromnap = mktime(0,0,0,date("m"),date("d")+3, date("Y")); drupal_set_message($haromnap); $hdate = format_date($timestamp, "datum"); drupal_set_message($hdate);
és az eredmény ez lett :( :
- 1286928000
- cs, 1970-01-01 02:00
Ha valaki esetleg tudja, hogyan lehet olyan dátum mezőt csinálni, amiben nem külön kell megadni az évet, hónapot, napot, hanem ha bele-klikkelek megjelenik egy naptár és onnan kell választani, akkor az is jól jönne, de ez nem annyira fontos :).
Előre is kösz minden segítséget :).
Én itt indulnék el
http://drupal.org/project/date
http://drupal.org/node/262066
Nagy Gusztáv
kösz, hasznos linkek
kösz, hasznos linkek, tanulmányozom őket :)
Pár ötlet
Hello!
Rakd fel mindeképp a Date API-t. Utána itt van, hogy kell összeállítani a formot: http://drupal.org/node/292667
Ha jquery-s naptárválasztót akarsz, akkor date_select helyett, date_popup.
A Date modul datetime fieldje az adatbázisba datetime-ként tölti fel a dátumokat, ami az adatbázisba is datetime mezőként van definiálva. Azonban így ezen keresztül pl a Calendar modul naptárjába nem tudod felhasználni, mert ott külön datetime handler-t kell csinálni, mert a Views Apiba ez gyárilag nincs benne.
a date_popup az
a "date_popup" az amit akartam, kösz :), csak sajnos a "date_select" és "date_popup"-nál így megjelenik az idő is a dátum mellett, pedig nekem csak a dátum kellene :(, azt hogyan vehetném ki, mert ha csak sima "date"-t írok akkor nincs, viszont akkor a "select"-hez hasonló jelenik meg.
Akkor ezek szerint datetime mezőként kezeli az adatbázisban a dátumot a Drupal? mert egy másik fórumban azt írták nekem, hogy int mezőt csináljak, mert számként kezeli a dátumokat a Drupal.
Valójában
Valójában engem elsősorban az érdekelne, hogyan kezelhetem a dátumot? Emiatt gondoltam a számmá alakításra, mert ott könnyedén adhatok hozzá és vehetek el belőle és hasonlíthatom össze másik számokkal, mert akármit próbáltam eddig, nem működött :S.
pl kiirattam a megadott adatot:
ez lett az eredmény:
2010-10-23 00:00:00
de a 3 nappal későbbi értéket nem tudom, hogyan érhetném el mert ha hozzáadok 3-at:
akkor azt az évhez adja hozzá:
2013
:(
még a "time()"-al kikért mai dátumhoz se lehet hozzáadni 3-at mert akkor meg semmi változás nem történik :(
kikészülök ezektől a dátum mezőktől :S
kikészülök ezektől a dátum mezőktől :S, egyszerűen képtelen vagyok egy formátumra hozni két külömböző forrásból származó dátumot :(, már napok óta ezzel bénázok és nagyon megköszönném ha valaki segítene megoldani a problémát.
Emellett a "date_popup" típusnál nem csak dátumot kér, hanem időt is, amit nagyon fontos lenne kivennem, és attól félek ha nem tudom kivenni és vissza kell majd állítanom sima "date"-re akkor megint máshogyan kell majd kezelni kapott értéket :(.
Szerintem a formátumok nem egyeznek ezért hibás az összehasonlítás, de már próbáltam rengeteg módszerrel átalakítani a formátumokat, számmá alakítani a dátumokat (még manuálisan is), vagy lekérni az adatokat, de sehogyan se működött :(. Talán a dátumokat másféleképpen kéne hasonlítani?
Ha valaki tudna egy megoldást adni az nagyon jól jönne, mert így egyszerűen nem tudok tovább haladni :(.
Előre is köszönök minden segítséget :).
Sikerült megoldanom a problémát!
Sikerült megoldanom a problémát! :)
Választ sajnos nem kaptam, de megoldottam minden problémámat :).
Leírom a megoldásokat hátha érdekel valakit :)
ezek után még az adatbázisba való feltöltéssel is gondok voltak, hiába volt ugyanaz a formátuma a változómnak (2010-10-16 00:00:00) mint amit a mező kért (0000-00-00 00:00:00), mégse töltötte fel az értéket a datetime típusú mezőbe, dátum és int mezőbe meg csak a 2010-et tette.
Végül úgy oldottam meg, hogy számmá alakítottam (timestamp) és úgy tároltam el, majd visszaalakítottam a számot dátummá:
Hogy én mennyit szenvedtem ezekkel :), de remélem más is hasznosnak találja a leírásomat :).
Ja, és még egy apróság. Ha a dátum mezőt a következő formában valósítjuk meg, akkor eltűnik az időmező és csak dátumot kér: