Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Data edycji MYSQL
Forum PHP.pl > Forum > Przedszkole
adek-
Witam, mam tabelkę DODAWANIA i EDYCJI rzeczy do bazy + zrobiłem datę modyfikacji za pomocą funkcji "data_mod=NOW()". Wszystko działa tylko jako wyświetlenie ROW, czyli obok każdego dodanego, bądź edytowanego przedmiotu pokazuje sie data edycji tylko tego przedmiotu, a chciał bym zrobić to na zasadzie ogólnej, czyli edycja, bądź dodanie jakiegokolwiek rekordu pokaże jeden wynik "daty modyfikacji" całego dokumentu.

Teraz mam:
  1. if(!strcmp($do, "edit")) {
  2. if(isset($_GET['id'])) {
  3. $id = $_GET['id'];
  4. } else {
  5. $id = $_POST['id'];
  6. }
  7. if(!isset($_POST['send'])) {
  8. $q = "SELECT * FROM baza WHERE id=$id";
  9. $r = mysql_query($q);
  10.  
  11. while($row = mysql_fetch_assoc($r)) {
  12. echo "<form name=\"formularz\" action=\"?do=edit\" method=\"post\" enctype=\"multipart/form-data\">"
  13. ."<center><table bgcolor=\"ffffff\"><!--<input type=\"hidden\" name=\"czas\" />-->"
  14. ."<tr><td>PRZEDMIOT:</td><td><b>".$row['item']."</b></td></tr>"
  15. ."<tr><td>DANE1:</td><td><input type=\"text\" name=\"k\" value=\"".$row['k']."\" maxlength=\"6\" size=\"6\" /></td></tr>"
  16. ."<tr><td>DANE2:</td><td><input type=\"text\" name=\"max\" value=\"".$row['max']."\" maxlength=\"6\" size=\"6\" /></td></tr>"
  17. ."<tr><td>DANE3:</td><td><input type=\"text\" name=\"s\" value=\"".$row['s']."\" maxlength=\"6\" size=\"6\" /></td></tr>"
  18. ."<tr><td>DANE4:</td><td><input type=\"text\" name=\"min\" value=\"".$row['min']."\" maxlength=\"6\" size=\"6\" /></td></tr>"
  19. ."</table>"
  20. ."<input type=\"submit\" name=\"send\" value=\"UPDATE\" />"
  21. ."<input type=\"hidden\" name=\"data_mod\" value=\"".$row['data_mod']."\"/>"
  22. ."<input type=\"hidden\" name=\"id\" value=\"".$row['id']."\"/>"
  23. ."</form><br/></center>";
  24. }
  25. } else {
  26.  
  27. $_POST = str_replace(",",".",$_POST);
  28. // upgrade rekordu w bazie
  29. $q = "UPDATE koorsy SET "
  30. ."wal_k='".$_POST['k']."', "
  31. ."wal_max='".$_POST['max']."', "
  32. ."wal_s='".$_POST['s']."', "
  33. ."wal_min='".$_POST['min']."', "
  34. //."czas='$czas'"
  35. ."data_mod=NOW()"
  36. ."WHERE id=$id";
  37.  
  38. //echo $q."<br/>";
  39. header("Location: ?do=add&text=$zaktualizowano");
  40. }
  41. }


i wyświetlam to za pomocą .$row['data_mod']. w tabelce
Jak można do tego podejść?
CuteOne
Dość nie jasno to opisałeś ale może to pomoże ;]

  1. $q = "UPDATE koorsy SET "
  2. ."wal_k='".$_POST['k']."', "
  3. ."wal_max='".$_POST['max']."', "
  4. ."wal_s='".$_POST['s']."', "
  5. ."wal_min='".$_POST['min']."', "
  6. //."czas='$czas'"
  7. ."WHERE id=$id";
  8.  
  9. $q = "UPDATE koorsy SET data_mod=NOW()";
Daimos
nie wiem dokładnie o co chodzi, ale jeśli dobrze się domyślam, to możesz to przecież załatwić na poziomie bazy. Robisz kolumnę typu TIMESTAMP i dajesz on update current time stamp
adek-
CuteOne, fakt dodaje mi wynik data_mod do bazy w każdym przedmiocie jest taki sam, (nie jak uprzednio gdy edytowałem przedmiot o id 1 robiła się data modyfikacji z aktualnym czasem przy przedmiocie o id 1, itd z każdym id osobno, więc ile przedmiotów miałem to każdy miał swoją datę edycji), teraz każde pole data_mod ma tą samą wartość - czyli ostatnio edytowanego dowolnego przedmiotu. A więc wystarczyło by teraz tylko jeden taki niepowielony wynik wyrzucić gdzieś na stronie i voila. Pytanie moje jest czy moge tą wartość wyrzucić bez funkcji row?

  1. $q = "SELECT (data_mod) FROM baza";
  2. $r = mysql_query($q);
  3. $data_mod = $r['data_mod'];

i wyświetlanie za pomocą
  1. echo "<td>" .$data_mod. "</td>";

nie działa

gdy wyświetlam to na zasadzie row'a działa
  1. $q = "SELECT data_mod FROM baza";
  2. $r = mysql_query($q);
  3. while($rows = mysql_fetch_array($r)) {
  4. echo "<tr>"
  5. ."<td align=\"center\" bgcolor=\"#e9e9e9\"><strong>".$rows['data_mod']."</strong></td>"


Daimos, co dokładnie masz na myśli? szukam w google właśnie o timestamp, może zaraz mi się rozjaśni.

------ edytowano -----
Daimos wyszukałem co nieco o timestamp i wydaje mi się, że pierwszą NOW i tą da się zrobić tak, że będą działały w ten sam sposób. Powiedz mi tylko jak ustawić wartość timestampa na on update i gdzie? Bo jak widze każda edycja w bazie odbija się aktualną datą w timestamp (niestety w formacie 20110614170206)?
Chociaż przyznam, że NOW juz mi wrzuca datę i to w formacie zedytowanym już 2011-06-14 17:02:06, teraz tylko ją wyjąć w postaci jednego wyniku i było by juz git, co nie chce mi działać niestety.

--------edytowano ------
sorka pomroczność jasna... już wszystko działa... wyświetla mi jeden rekord, obojętnie który bo i tak każdy ma taką samą wartość, więc pokazuje datę ostatniej aktualizacji bazy.
  1. $q = "SELECT * FROM koorsy WHERE id =1";
  2. $r = mysql_query($q);
  3. while( $rows = mysql_fetch_array($r)){
  4. echo "<b>" .$rows['data_mod']. "</b>";
  5. }
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.