Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Zapisywanie w bazie daty z formularza + sortowanie wyników wg daty
Lukasso
post 25.02.2020, 01:44:48
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 11.09.2013

Ostrzeżenie: (0%)
-----


Jestem raczej grafikiem niż programistą, poza prostymi formularzami dodającymi rekordy do bazy i wyświetlaniem ich potem na stronie niewiele umiem. Czasem jednak zdarza się sytuacja, kiedy muszę coś zrobić co wymaga odrobiny kodu. Właśnie się taka zdarzyła... :/ Często pomaga kopanie w internetach, ale nie tym razem.

Muszę stworzyć listę koncertów (data wydarzenia i tytuł koncertu), która będzie wyświetlała się na stronie w kolejności chronologicznej - najbliższy koncert na górze listy, następujące po nim niżej. Do tego będzie prosty formularz którym wprowadzane będą rekordy (data, tytuł). Niby sprawa banalnie prosta, jednak dla mnie problematyczne jest przechowywanie daty w bazie, w formacie pozwalającym na sortowanie wyników wg daty.
W bazie znajdują się kolumny id, data, koncert. id: auto-increment, koncert: text, data:... no właśnie. Czytałem o różnych funkcjach PHP związanych z datą, ale one głównie wstawiają aktualną datę w różnych formatach. Mnie chodzi o przechowanie daty wprowadzonej z formularza w formacie który nie będzie traktowany jak liczba tylko jak data - chodzi o prawidłowe sortowanie.
Dla kolumny data wybrałem typ DATE i wpisałem z palca 2020-02-04. Przy próbie wyświetlenia wartości za pomocą
Kod
echo date('d-m-Y',$data)
otrzymuję 01-01-1970.... Czyli nie za bardzo o to chodzi. Jak to powinno być skonfigurowane?

Jak powinienem wysłać datę z formularza do bazy w poprawnym formacie? Obawiam się, że zwykł INSERT INTO... VALUE czy UPDATE... VALUE wpisanej w pole formularza daty "2020-02-04" nie zadziała...

Pomóżcie

Go to the top of the page
+Quote Post
viking
post 25.02.2020, 07:19:46
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Pierwsze z brzegu https://stackoverflow.com/questions/3024377...in-php/30243885
Ustaw wcześniej poprawną strefę czasową.


--------------------
Go to the top of the page
+Quote Post
Lukasso
post 25.02.2020, 14:49:23
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 11.09.2013

Ostrzeżenie: (0%)
-----


OK. Sprawa była mniej skomplikowana niż mi się na wstępie wydawało. Napiszę co i jak, może komuś się przyda.

W bazie danych, dla kolumny "data" ustawiłem typ DATA. Data zapisuje się w formacie YYYY-MM-DD.
Na stronie wyświetlam zawartość jak każda inną

Kod
echo $data;


A w formularzu wpisuję datę z palca YYYY-MM-DD albo YYYY.MM.DD.

Sortowanie rekordów wyświetlanych na stronie wg daty działa

Kod
ORDER by data ASC


Całość można usprawnić dodając w formularzu do pola data mały kalendarz z którego wybierzemy datę zamiast wpisywać z palca, ale jeszcze nie wiem jak to zrobić...
Wolałbym też żeby data na stronie wyświetlała się w kolejności DD-MM-YYYY zamiast YYYY-MM-DD, ale też nie wiem jak to zmienić.

Podpowiecie?
Go to the top of the page
+Quote Post
viking
post 25.02.2020, 14:52:41
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


https://developer.mozilla.org/en-US/docs/We...ment/input/date


--------------------
Go to the top of the page
+Quote Post
dublinka
post 25.02.2020, 18:11:20
Post #5





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


Cytat(Lukasso @ 25.02.2020, 13:49:23 ) *
Podpowiecie?


Bootstrapowy datepicker

  1. <script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
  2. <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/js/bootstrap-datepicker.min.js"></script>
  3. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.1/css/bootstrap-datepicker3.css"/>
  4.  
  5. <form class="form-horizontal" action="<?= $_SERVER['SCRIPT_NAME']; ?>" method="post" id="form">
  6. <input class="form-control" id="date" name="date" placeholder="eg.: <?= date('Y-n-d');?>" type="text"/>
  7. </form>
  8.  
  9.  
  10. $(document).ready(function(){
  11. var date_input=$('input[name="date"]');
  12. var container=$('.bootstrap-iso form').length>0 ? $('.bootstrap-iso form').parent() : "body";
  13. var options={
  14. format: 'yyyy-mm-dd',
  15. container: container,
  16. todayHighlight: true,
  17. autoclose: true,
  18. };
  19. date_input.datepicker(options);
  20. })


Ten post edytował dublinka 25.02.2020, 18:17:32


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 01:28