Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zmiana daty w bazie MYSQL po edycji pliku.
Forum PHP.pl > Forum > Przedszkole
przem1969
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 ?
viking
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ę.
przem1969
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 ?
viking
Ale to chyba logiczne że datę zmieniasz raz podczas operacji edycji wpisu a nie przy każdej odsłonie?
przem1969
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 .

gino
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?
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.