ForumCała strona

Nawigacja

Aktualnie online

Gości online: 19

Użytkowników online: 0

Łącznie użytkowników: 25,405
Najnowszy użytkownik: kipolas

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

Musisz zalogować się, aby móc dodać wiadomość.

JazOOn
06.10.2025 21:00:15
czy shout dziala?

hoopak
02.10.2025 10:33:17
Bleeeeee Cool

Zbigniew@
28.09.2025 12:02:00
Witam ponownie.

jantom
07.09.2025 09:40:31
Strona z niebytu wrocila, ciekawe kiedy polskie literki rowniez...

JazOOn
25.06.2025 23:43:19
Dziadziejemy jantom...

Pobierz now? wersj?
Pobierz podr?cznik
Zobacz inne oficjalne Supporty
Statystyki supportu
PHP-Fuson PL na Facebooku

RSS

Polecamy hosting SferaHost.pl

Zobacz temat

 Drukuj temat
Dane z bazy po spelnieniu warunku czasu.
MeTeo
Witam.

My?l? nad pewn? modyfikacj? i b?dzie mi potrzebne zastosowanie zgodno?ci czasu. Do rzeczy: W modzie (posta? formularza) wpisuj? dat? i godzin? i daje zapisz. Na stronie g?ównej by?by skrypt, który wy?wietla wynik z bazy je?li jest spe?niony warunek czasu. Tak wi?c jak dojdzie za?ó?my godzina 21:30 dnia (za?ó?my) 22.01.2008 - a to samo wpisa?em w skrypcie to wtedy wy?wietli te dane i b?dzie je wy?wietla? przez 2-3 godziny.

Do czego mi to potrzebne? Chc? rozbudowa? panel wyników i wykorzysta? to jako "aktualnie trwa spotkanie". Tylko chodzi mi o to, jak zrobi? takowe zapytanie? Czasu nie znalaz?em w bazie danych. Z tego co pami?tam to czas jest pobierany z serwera...

Pozdrawiam.


PW od moderatora:
  1. Przeniesienie tematu - Pieka 22.01 - 20:04
  2. Od?wie?enie Tematu - Milka 02.02 - 13:34
 
W?cibski Go??
Dodany dnia 11.10.2025 16:43:36
Pan Kontekstualny

Postów: n^x
Data rejestracji: Zawsze

Polecamy hosting SferaHost.pl
IP: localhost  
Grzes
Wpad?em tu tylko na chwile wi?c tylko krótko. Po wys?aniu formularza zbierz date i przeka? j? do funkcji mktime (http://www.php.net/manual/pl/ - tu jest opis, wpisz nazwe funkcji w szukajke)
Utworzy Ci to znacznik czasu w formacie unixowym. Wrzu? to do tabeli do pola (typ int d?ugo?? 10). Przy wici?ganiu danych z bazy skorzystaj z funkcji time - zwraca aktualn? godzine a w?a?ciwie znacznik.

Przyk?adowe zapytanie:
Pobierz kod źródłowy  Rozwiń Kod źródłowy


pobierze rekordy których data jest wi?ksza od (aktualny czas - 7200 sekund) aktualny czas - 2h czyli te z ostatnich 2 godzin.
Edytowane przez Grzes dnia 22.01.2008 19:40:07
Cz?sto najm?drzejsz? odpowiedzi? jest milczenie krzywy.gif
 
MeTeo
Przeczyta?em to 10 razy i zacz??em rozumie? Wink Zastanawia mnie tylko jak zastosowa? funkcj? mktime. Nie znalaz?em tam te? dok?adnego kodu na to by przetworzy? mi dana warto??. Znaczy si? nie znalaz?em bo dla mnie takie php to wy?sza szko?a Wink
 
Grzes
W takim razie bierzemy si? za opis tej funkcji. W manualu pisz? tyle:
int mktime ( int $godzina, int $minuta, int $sekunda, int $miesi?c, int $dzie?, int $rok [, int $letni/zimowy] )


t?umacz?? z polskiego na nasze wygl?da to mniej wi?cej tak:
zwrana liczba ca?kowita ; mktime(godzina, minuta, sekunda, miesi?c, dzie?, rok, (nie wymagany parametr) czas letni/zimowy);


Masz tej funkcji poda? dane w/w a ona zwróci liczb? ca?kowit? - czas w standardzie unixowym.
Zak?adamy ?e mamy takie zmienne pochodz?ce z formularza:
$a - dzie?
$b - miesi?c
$c - rok
$d - godzina
(celowo obra?em inne nazwy zmienych bo wcale nie musz? nazywa? si? tak jak dane w nich zawarte cho? kod jest czytelniejszy wtedy - urozmaicimy teraz to troch?).

Funkcja jeszcze wymaga minuty i sekundy. Za?o?ymy sobie ?e b?dziemy zawsze przyjmowali ?e b?dzie to 0 minut i 0 sekund (okr?g?a godzina).

Zapis powinien wygl?da? tak:
$czas = mktime($d, 0, 0, $b, $a. $c);


Teraz tylko zawarto?? $czas wrzu? do bazy. Proste? ;)
Cz?sto najm?drzejsz? odpowiedzi? jest milczenie krzywy.gif
 
MeTeo
Czyli teraz z twojego polskiego prze?o?? na swój ch?opski :)

Mój notatniczek:
W moim infusionie tworze pola odpowiedzialne za godzin? spotkania, lecz z podzia?em na Dzie?, miesi?c, rok, godzina (ew. minuty. Sekundy mog? by? 0).

Nast?pnie w panelu sczytuj?cym tworz? warunek... ale jak? Co? za zasadzie

Pobierz kod źródłowy  Rozwiń Kod źródłowy


Tylko jak jest czas serwerowy? Bo tworz?c z zmiennych zak?adaj?c

Pobierz kod źródłowy  Rozwiń Kod źródłowy


Dobrze g?ówkuj?? Ma to prawo dzia?a?? Co? wspomnia?e? o polu z bazy... Tak wi?c jak scali? wszystkie 5 pól w 1 zapytanie? Cho? wydaje mi si?, ?e to chyba zadzia?a ;)

Prosz? o odpowied? :)


Pozdrawiam.
Edytowane przez MeTeo dnia 22.01.2008 23:39:45
 
Grzes
Je?li chodzi o wyci?gni?cie informacji to musisz mie? w tabeli to jedno dodatkowe pole. Tak b?dzie najpro?ciej poniewa? sortuj?c rekordy w tabeli b?dzie ?atwiej wykona? to na jednym polu liczbowym ni? na 5 ro?nych. Dorzu? sobie pole datestamp (typ int, d?ugo?c 10) do tej tabeli a poni?szy kod wy?wietli Ci wybrane rekordy. (zwró? uwag? na pokolorowan? zmian?)
Pobierz kod źródłowy  Rozwiń Kod źródłowy


Je?li za? chodzi o mktime to stosuj to podczas dodawania rekordu do tabeli. Dodawaj tak jak teraz dodajesz sobie dat? je?li tak Ci ?atwiej ale do tego dodatkowego pola wrzuc wynik funkcji mktime. Wyjdzie na to ?e w jednym rekordzie data jest dwa razy zapisywana ale niech narazie tak b?dzie.
Z czasem ?atwiej b?dzie. Na przysz?o??:
Zamiast tych 5 pól mo?na zastosowa? tylko to jedno datestamp. Dlaczego? Je?li mamy ju? zapisan? date w tym formacie za pomoc? funkcji strftime mo?na wyodr?bni? wszstkie elementy daty. Dat? sofrmatowan? wy?wietla te? funkcja showdate (dost?pna w fusionku). Definicja jej znajduje si? w maincore.php.
$tekst_z_data = showdate($zmienna_z_dat?, "typ daty");

W miejsce typ daty mo?na wpisa? jedn? z trzech predefiniowanych formatów:
shortdate,
longdate,
forumdate

lub r?cznie pobawi? si? w formatowanie ale tu odsy?am do manuala i definicji funkcji strftime - taka sama metoda formatowania obowi?zuje.
Starczy tego g?upiego nawijania :P Zaraz kr??ka dostaniesz :P

Jeszcze tak zupe?nie na marginesie, co do tego fragmentu:
WHERE $czas = ...

To zielone to nazwa pola w tabeli, znaku $ tu nie powinno by?.
Wiem, ze przez zmienn? mo?na by przekaza? nazw? pola ale w tym przypadku nie o to biega, po prostu:
WHERE czas = ...

Cz?sto najm?drzejsz? odpowiedzi? jest milczenie krzywy.gif
 
MeTeo
Tylko jak zrobi? z tych pi?ciu pól 1 zapytanie? Przyk?ad:

Mam sobie formularz taki

Pobierz kod źródłowy  Rozwiń Kod źródłowy


Mam taki oto formularz. Ka?de pole to nowa zmienna (bo o to chyba chodzi?o). Tak wi?c jak zrobi? by na ko?cu zamiast dodawa? mi 5 pól robi?o 1 - datestamp. Ju? jako tako zrozumia?em sens tego mktime ale dalej nie rozumiem jak wstawi? je w formularz. Swoj? drog? mój kod te? jest chyba poprawny... Nie jestem pewny tego

Pobierz kod źródłowy  Rozwiń Kod źródłowy


W zapytaniu bo co? napisa?e? ale nie zrozumia?em :)

Starczy tego g?upiego nawijania :P Zaraz kr??ka dostaniesz :P

Dosta?em ju? po 1 po?cie... Ale rozumiem, ?e moje pytanie nie jest na tyle banalne by otrzyma? banaln? odpowied? :)

Dzi?ki za dotychczasow? pomoc i prosz? o kolejn? :)
 
Grzes
Masz pewnie jaki? skrypt który przetwarza dane z formularza i dodaje je do bazy.. zgadza si??
Je?li dysponujesz tymi zmiennymi to przed dodaniem do bazy ich (INSERT INTO.. bla bla bla) wykonaj linijk?:

Pobierz kod źródłowy  Rozwiń Kod źródłowy


i $jakas_zmienna dopisz do zapytania dodaj?cego rekord do bazy.
Edytowane przez Grzes dnia 23.01.2008 00:23:20
Cz?sto najm?drzejsz? odpowiedzi? jest milczenie krzywy.gif
 
MeTeo
yyy... ?adnego skryptu do przetwarzania nie mam. Znaczy si? budowa tego wygl?da tak:

W panelu admina wype?niam formularz z danymi i klikam button - dodaj.

Po dodanie Wynik wy?wietla si? w panelu "nadchodz?ce spotkania" jednak gdy dojdzie czas tego spotkania (taki czas jak da?em w formularzu) mecz si? ten w szerszych danych wy?wietli w ?rodkowym panelu z dopiskiem "aktualnie grany".

Budowa tego jest taka sama jak innych infusionów maj?cyh na celu co? wy?wietlania po wype?nieniu ;) Cho?by panel powitalny... Wpisuje w PA i wy?wietla na g?ównej ;) Tutaj przechodzi przez db...

Ten mój kod jest z?y? Nie przeszkadza mi to, ?e jest rozcz?onkowany...

Chocia?... Czy nie móg?bym zrobi? 1 pola "data" a w nim wpisa? dat? w formie:

21, 15, 00, 01, 23. 2008


Tak samo definiuje mktime...

Pole to wtedy by dodawa?o dane do datestamp

Nast?pnie w skrypcie pobierania przetworzy?bym dane z datestamp. By?oby to oznaczone zmienna np "$czas" i potem by?oby:

Pobierz kod źródłowy  Rozwiń Kod źródłowy


Tylko to na to samo wychodzi jak bym robi? mój 1 sposób ;D Tyle, ?e tamten by? prostszy... Tak wi?c czekam na odp. Czy tamten sposób nie zadzia?a, a jak nie to porad? jak go poprawi?... Albo z kolei jak zrobi? skrypt przetwarzaj?cy dane z formularza... Bo tego to kompletnie nie wiem ;) Domy?lam si? jakby to wygl?da?o ale z kwestii kodu nie mam poj?cia.

No i teraz tak analizuje wcze?niejsze posty i co? mnie zaintrygowa?o... Czy przypadkiem

Pobierz kod źródłowy  Rozwiń Kod źródłowy


nie zadzia?a w ten sposób, ?e b?dzie wynik wy?wietlony ca?y czas a zniknie po 2 godzinach od daty w formularzu?

Ja to rozumiem tak:

Pobierz kod źródłowy  Rozwiń Kod źródłowy


czyli

Pobierz kod źródłowy  Rozwiń Kod źródłowy


tak wi?c gdy b?dzie

Pobierz kod źródłowy  Rozwiń Kod źródłowy


Wynik si? ju? wy?wietla? nie b?dzie ale:

Pobierz kod źródłowy  Rozwiń Kod źródłowy


Te? spe?nia warunek, a chodzi o to by kod by? wy?wietlany od godziny w formularzu przez 2 godziny... Te 2 godziny s? ale od? :D

Pozdrawiam
 
Grzes
Nie kombinuj. Skoro dodajesz do bazy date w formie w jakiej masz to za pomoc? phpmyadmina dodaj sobie pole datestamp (typ int d?. 10).

W skrypcie przed wykonaniem zapytania INSERT wstaw linijk?:

$czas = mktime... w

wg schematu jaki opisywa?em poprzednio. Tylko podaj tej funkcji dat? któr? otrzymujesz w formularza.

W samym zapytaniu insert dopisz tam by doda?o zawarto?? zmiennej $czas do pola datestamp.

Teraz tam gdzie chcesz aby wy?wietlane byly pozycje tylko z ostatnich 2h w zapytaniu SELECT dodaj w warunku WHERE to oczym piszesz
WHERE datestamp>'".(time()-7200)."'"Wink;

Teraz ja?niej napisa?em? Nie wiem jak to inaczej opisa?.
Cz?sto najm?drzejsz? odpowiedzi? jest milczenie krzywy.gif
 
MeTeo
Witam.

EDIT: Problem cz??ciowo rozwi?za?em, szczegó?y na dole

Teraz ju? jestem bardziej przydatny gdy? ju? to robi? ;) Niestety nie pisa?bym tu gdybym nie mia? problemów...

Po primo - grzes, da?e? b??d w tej zmiennej... kropk? zamiast przecinka - nie mam pretensji ale podczas szukania b??dów natkn??em si? na to.

Po 2 - Pisa?e? bym wstawi? mktime przed invert oraz da? by wynik zosta? dodany do bazy... hmm... Jak dla mnie to to wykona?em.

Poni?ej zamieszczam fragment zmodyfikowanego extreme_warstat_admin z umieszczonymi fragmentami zaznaczonymi. Nie wstawiam ca?ego kodu bo to bez sensu. A oto on:

Pobierz kod źródłowy  Rozwiń Kod źródłowy


Wynik si? dodaje lecz kolumna "warstats_czas" ma ci?gle warto?? "0".

Ma ona parametry: Typ: INT, d?ugo??: 12 - tak 12 gdy? chyba chodzi o ??czn? liczb? warto?? a zak?ada?e? bez minut, a ja minuty umieszczam.

Zmieni?em
- $czas na $stats_czas
- datesmap na warstats_czas


Pola w formularz s? rozbite na minuty, godziny, miesi?c... Chyba b?dzie ?atwiej...

Prosz? o instrukcje :)

Dzi?kuj? i pozdrawiam


EDITED: Jednak postanowi?em si? pobawi? i... Stworzy?em jedn? komórk? i wpisa?em w ni? format daty zgodnie z mktime czyli zamiast 02.02.2008 13:30 wpisa?em

Pobierz kod źródłowy  Rozwiń Kod źródłowy


Jako mktime i ?adnie mi doda?o do bazy wynik:

Pobierz kod źródłowy  Rozwiń Kod źródłowy

Co jest te? b??dne bo time jest ju? 10 cyfrowy a mktime robi mi 9... Bynajmniej mi ju? co? generuje...

Tylko, ?e ten skrypt b?dzie u?ywany przez du?e grono redaktorów a próbuje wszystko robi? "g?upoto odporne" tak wi?c potrzebuj? sposobu albo na scalanie tych kilku zmiennych w 1 a potem wys?ania jako mktime (no i gdzie to w tym kodzie wstawi?) lub je?li si? da, to kilka pól dotyczy?oby 1 zmiennej. Tylko dane dodawa?by si? w kolejno?ci...

P.S Poza tym warunek z time generuje b??d
Pobierz kod źródłowy  Rozwiń Kod źródłowy


Ju? mnie to powoli m?czy...

Edytowane przez MeTeo dnia 02.02.2008 14:10:22
 
Przejdź do forum:
Created by Arox Copyright (C) 2004
Copyright (C) 2004 - 2018 Ekipa PHP-Fusion.pl