Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Zmiana daty w bazie MYSQL po edycji pliku.
przem1969
post 18.11.2021, 01:19:37
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 18.08.2013

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


Witam,

Chcę napisać taki kod , który będzie wyświetlał zmianę daty po edycji pliku.

Czas w bazie przechowywany jest w Timestamp. Wkładam artukuł do bazy i przypisany jest czas . plik z tabela jest dołączony do pliku z artykułem . Edytuje ten plik z tabelą i chcę ,żeby data został edycji wyświetlona na stronie . Czy mogę INPUT zmienic czas w bazie (timestamp) ? Wyświetlam to na stronie . Wyświetlenia czasu jest proste . Selectem zapytauje o czas , zapisuje do zmiennej , przekonwertowuje Unixowy na data czyli nazwijmy normalny i mam ale gdy edytuje plik z tabelą czyli zmieniam tam dane chce ,żeby data edycji wyświetliła sie na stronie . Jak to zrobic czy ktos ma jakąs koncepcję ?

Reasumując :

1. plik z artykułem i do niego jest includowany plik z tabelą .
2. Edytuje plik z tabelą i wyswietla się data zmiany.

  1. $query1=$mysqli->query("SELECT * FROM news30_story Where $id=id");
  2.  
  3.  
  4. while ($row = mysqli_fetch_array($query1)) {
  5.  
  6.  
  7. $id = $row['id'];
  8.  
  9.  
  10. $archivedate = $row["timestamp"];
  11.  
  12.  
  13.  
  14.  
  15. $archivedate = date('d.m.Y, H:i:s', $row ['archivedate']);
  16. echo "Ostatnia aktualizacja". " " . $archivedate;
  17.  
  18. }
  19.  



Tak wyciagam z bazy date i konwertuje ja z timestamp ale teraz przy edycji pliku musi zmienic date w bazie. Ma ktos jakies pomysły lub podpowiedź jakis link , kod ?
Go to the top of the page
+Quote Post
viking
post 18.11.2021, 07:46:17
Post #2





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

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


Jeśli wystarczy ci data automatyczna to po prostu przy update robisz set twoja_data = NOW(), jeśli ma być ręcznie wprowadzona z pola input to tak samo ale zapisujesz po prostu tę datę.


--------------------
Go to the top of the page
+Quote Post
przem1969
post 18.11.2021, 13:13:33
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 18.08.2013

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


Dziękuję za podpowiedź ale jesli zrobie tak jak sugerujesz

  1.  
  2. $query = $mysqli->query("UPDATE news30_story SET twoja_data = NOW() WHERE id='$id' LIMIT 1");
  3.  
  4. $twoja_data = date('d.m.Y, H:i:s');
  5. if (!touch('Tabela-kobiety-sezon-2021-2022.php', $archivedate)) {
  6. echo "Nie modyfikowałeś pliku.";
  7. } else {
  8. echo "Ostatnia aktualizacja: . $twoja_data";
  9. }
  10.  
  11. }
  12.  
  13.  
  14.  



to mam date zegara czyli teraźniejsza za kazdym odświerzeniem strony a przeciez plik nie ejst edytowany . Data musi się zmieniąc po edycji pliku i trzymać , więc mniemam ,że musi zapisywac do bazy Inputem nowa date edycji pliku i wtedy odczytywac . Tak mi sie wydaje , tak byłoby logicznie . Tylko nie wiem jak zapisac do bazy nową date w timestamp ?


Mój tok myslenia jest taki :




Selectem wyciagam datę i oan jest na stronie , po edycji pliku zapisywana jest nowa data do bazy na miejsce starej i wtedy odczytywana jest nowa data juz zmieniona.


Czy cos takiego jest logiczne ?
Go to the top of the page
+Quote Post
viking
post 18.11.2021, 16:07:06
Post #4





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

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


Ale to chyba logiczne że datę zmieniasz raz podczas operacji edycji wpisu a nie przy każdej odsłonie?


--------------------
Go to the top of the page
+Quote Post
przem1969
post 19.11.2021, 13:36:06
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 18.08.2013

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


Dzieki poprawiłem ,

  1. $query1=$mysqli->query("SELECT * FROM news30_story Where $id=id");
  2.  
  3.  
  4. while ($row = mysqli_fetch_array($query1)) {
  5.  
  6.  
  7. $id = $row['id'];
  8.  
  9. $archivedate = $row["timestamp"];
  10.  
  11. $archivedate = date('d.m.Y, H:i:s', $row ['archivedate']);
  12.  
  13.  
  14.  
  15.  
  16. }
  17.  
  18.  
  19.  
  20. $query = $mysqli->query("UPDATE news30_story SET archivedate = NOW( $archivedate) WHERE id='$id'");
  21.  
  22.  
  23. $query2 = $mysqli->query("INSERT INTO news30_story('id', 'title', 'story', 'zrodlo', 'napisal', 'author', 'shortstory', 'origauthor', 'ip', 'timestamp', 'allowcomments' ,'short' ,'approved','viewcount', 'archivedate', 'neverarchive' ,'archived', 'commentcount' ,'old' ,'active' ,'created_at') VALUES( $id[0], $title[0], $story[0], $zrodlo[0], $napisal[0], $author[0], $shortstory[0], $origauthor[0], $ip[0], $timestamp[0], $allowcomments[0], $short[0], $approved[0], $viewcount[0], $archivedate, $neverarchive[0], $archived[0], $commentcount[0], $old[0], $active[0], $created_at[0]");
  24.  
  25.  
  26.  
  27.  
  28. if (!touch('Tabela-kobiety-sezon-2021-2022.php', $_SERVER['REQUEST_TIME'])) {
  29. echo "Nie modyfikowałeś pliku.";
  30. } else {
  31. echo "Ostatnia aktualizacja: . $archivedate";
  32. }



nie wiem gdzie popełniam błąd , nie dziła , a jak wsyatwie w archivedate = NOW() to zmienia date w bazie ale na 2038 rok nie wiem skąd to bierze .

Go to the top of the page
+Quote Post
gino
post 20.11.2021, 08:05:35
Post #6





Grupa: Zarejestrowani
Postów: 319
Pomógł: 52
Dołączył: 18.02.2008

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


Funkcja NOW() jest w zasadzie bezargumentowa, opcjonalny argument dotyczy tylko dokładności ułamków sekund, nie możesz więc wrzucić do niej daty i czasu.
mysql NOW()
Chcesz mieć w bazie czas w timestamp to użyj UNIX_TIMESTAMP()
mysql UNIX_TIMESTAMP()
I w niej możesz wrzucić datę i czas jako argument.

edit: Bardzo kombinujesz z tym zapisem, 3 instrukcje slq-a żeby to zapisać...
A tak z ciekawości co to są te $title[0], $story[0] itd?

Ten post edytował gino 20.11.2021, 08:09:01
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: 20.04.2024 - 01:28