Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][html]Formatowanie danych w formularzu
Forum PHP.pl > Forum > Przedszkole
matius71
Witam,

Mam sporo danych do wprowadzania i nie bardzo wiem jak sobie z nimi poradzić.

Chodzi o np. wprowadzanie godziny ale nie w formacie do 24h tylko żeby możliwe było wpisać godziny 235:23 czyli bardziej sumowanie godzin a nie przeliczanie na dni godziny i minuty (tak jak to jest w wielu miejscach w internecie)

Inna dana która sprawia kłopot i nie widzę nigdzie rozwiązania to zrobienie pola gdzie można wpisać cyfry od 0 do 9. Zajmująca zawsze pięć miejsc następnie przecinek i jedno miejsce po przecinku: 12345,6 ale jeśli ktoś wpisze 375,3 to żeby zapisywało się w bazie 00375,3. Najlepiej by było żeby każda cyfra była jeszcze w oddzielnym okienku ☐☐☐☐☐,☐ ale to już jest dla mistrzów programowania chyba biggrin.gif

Ciężka sprawa z tymi dwiema rzeczami więc każda pomoc będzie mile widziana. nerdsmiley.png
Pyton_000
1. Godziny, rozwiązań jest wieeele:
- zawsze możesz wstawić 2 pola a potem przy odebraniu je złączyć.
- ustawić 1 pole i wstaić placeholder
- użyć jakiejść libki JS typu http://firstopinion.github.io/formatter.js/
- użyć HTML5 Pattern

2.Tutaj analogicznie w sumie do ww.
Jesli chodzi o zapisanie to ustawiasz sobie typ DECIMAL(6,1) ZEROFILL
matius71
No to jeśli chodzi o wpisywanie tych godzin to ja nie widzę jakiegoś prostego rozwiązania przez to że będzie więcej niż 24h. Pola typu time odpadają, text odpada no i ręce opadają biggrin.gif
Pyton_000
a jaki to problem? DECIMAL(8,2) i styknie...

Albo po prostu unsigned int i zamiana na minuty wszystkiego.
matius71
Dale chodzi o to żeby wpisywało się w godzinach przy czym format godziny nie jest 24h tylko może być nawet 1000h 23min nie wiem jak zrobić pole które będzie ☐:☐ w takim formacie. do bazy danych też bym chciał żeby było przetrzymywane w takim formacie hh:MM
SmokAnalog
Baza danych nie jest od ładnego wyświetlania, tylko od tego, żeby na danych dało się pracować (np. sortować). Możesz sobie dodać widok dla bazy danych albo od biedy dodatkową kolumnę.
matius71
No dobra tylko że godzina ma 60min a nie 100. Nie ma jakiejś opcji formatu czasowego tylko że długiego np do 10000h?
nospor
Tak czy tam ten temat i czytam i nie moge wyjsc z podziwu jak sam sobie mnozysz trudnosci na sile...
A jaki problem w polu liczbowym (INT) w bazie zapisac 100 czy nawet te 10000? Ktos ci broni? Religia zabrania?
SmokAnalog
UPDATE

Zapisuj to po prostu jako liczbę minut w bazie i zamieniaj tam, gdzie to wyświetlasz. Na przykład tak:

  1. <?php
  2.  
  3. function formatDuration(int $durationMinutes, string $format = '%d:%02d'): string {
  4. $hours = (int) floor($durationMinutes / 60);
  5. $minutes = $durationMinutes % 60;
  6.  
  7. return sprintf($format, $hours, $minutes);
  8. }
  9.  
  10. $test1 = formatDuration(123); // 2:03
  11. $test2 = formatDuration(123, '%dg %dm'); // 2g 3m
  12. $test3 = formatDuration(123, 'Godzin: %d, Minut: %d'); // Godzin: 2, Minut: 3
  13.  
nospor
@SmokAnalog po co zbednie zapisywac to jako sekundy? Wyraznie podane ze najmniejsza wartosc to minuty i w minutach powinno sie to trzymac. No i wejdzie wiecej minut niz sekund wiec bedzie mozna ograniczyc wielkosc pola
SmokAnalog
Aha, nie doczytałem. No to analogicznie, tylko sekundy -> minuty i minuty -> godziny tongue.gif

Wyedytowałem kod. Połowa uwzględniała godziny/minuty, a połowa minuty/sekundy. Chyba się zamyśliłem biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.