Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Problem z datą i godziną dodania komentarza do księgi gości
Forum PHP.pl > Forum > Przedszkole
szczurek8005
Witam!!

Mam problem w związku z godziną i datą dodania komentarza do mojej strony.

A mianowicie sugerując sie tutorialem jaki znalazłem w sieci stworzyłem prosty skrypt oparty o baze mysql który umożliwia dodanie komentarza do

mojej strony wszystko działa jak należy lecz mam problem gdyż serwer jest w innej strefie czasowej i jeżeli dodam komentarz o 13:00 to po

wyświetleniu komentarzy pokazuje że został dodany o 23:13. Czy może mi ktoś pomóc jak to zmienić by pokazywało mi date i godzine zgodną z

naszą strefą czasową . Tu zamieszczam kawałek kodu odpowiedzialnego za dodanie wpisu:
  1. <?
  2.  
  3.  
  4. $nick=$_POST['nick'];
  5. $tytul=$_POST['tytul'];
  6. $komentarz=$_POST['komentarz'];
  7.  
  8.  
  9. mysql_connect('localhost',$username,$password);
  10. @mysql_select_db($database) or die("Nie znaleziono bazy danych");
  11.  
  12. $query = "INSERT INTO contacts VALUES ('','$nick','$tytul','$komentarz',NOW())";
  13.  
  14.  
  15. mysql_query($query);
  16. ?>


czy użycie
  1. <?php
  2. NOW()
  3. ?>
jest w tym miejscu poprawne
w tabeli mam pole
  1. <?php
  2. `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
  3. ?>


kod wyświetlający:
  1. <?php
  2. mysql_connect('localhost',$username,$password);
  3. @mysql_select_db($database) or die("Nie odnaleziono bazy danych");
  4. $query="SELECT * FROM contacts ORDER BY id DESC";
  5.  
  6. $result=mysql_query($query);
  7.  
  8. $num=mysql_numrows($result);
  9.  
  10.  
  11. echo "<b><center>Struktura bazy danych</center></b><br><br>";
  12.  
  13. $i=0;
  14. while ($i < $num) {
  15.  
  16. $nick=mysql_result($result,$i,"nick");
  17. $tytul=mysql_result($result,$i,"tytul");
  18. $komentarz=mysql_result($result,$i,"komentarz");
  19. $data=mysql_result($result,$i,"data");
  20.  
  21.  
  22.  
  23. echo "<h3><b>$tytul</b></h3>Dodana: $data przez: <b>$nick</b><br>$komentarz<br><hr><br>";
  24. $i++;
  25. }
  26.  
  27. ?>


W manualu jest kod do zmian stref czasowych ale nie bardzo wiem gdzie go użyć sad.gif

  1. <?php
  2. date_default_timezone_set('Europe/Warsaw');
  3.  
  4. $script_tz = date_default_timezone_get();
  5.  
  6. if (strcmp($script_tz, ini_get('date.timezone'))){
  7.    echo 'Script timezone differs from ini-set timezone.';
  8. } else {
  9.    echo 'Script timezone and ini-set timezone match.';
  10. }
  11. ?>
Skie
A jaki masz tam format daty?

Bo jak np: 00:00:00 to wpisz:

Kod
date('H:i:s',time()-36000);


jak: 0000-00-00 00:00:00

to

Kod
date('y-m-d H:i:s',time()-36000);


itd.

Poza tym:
Kod
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP


to pole powinno być DATETIME zamiast TIMESTAMP.
szczurek8005
A czy powinienem coś zmienić w tabeli ponieważ nie działa jak zamieniłem
  1. <?php
  2. NOW()
  3. ?>


  1. <?php
  2. date('y-m-d',time()-36000);
  3. ?>
Skie
Kurczę, zamiast napisać nowy post, to poprzedni mi się zeedytował.
W moim poprzednim poście masz kolejną odpowiedź.
szczurek8005
Kurcze próbuje na wszelkie sposoby i wogóle nie dodaje teraz komentarza:(
Skie
Ehh, pokaż kod, który napisałeś i zrzut tabeli z bazy danych (wraz z typami pola)
szczurek8005
Przyznam że jestem zielony tzn początkujący w PHP

  1. <?php
  2. $query = "INSERT INTO contacts VALUES ('','$nick','$tytul','$komentarz',date('y:m:d H:i:s',time()-36000))";
  3. ?>


A tabele zmieniłem
  1. <?php
  2. `data` DATETIME NOT NULL
  3. ?>
Skie
Powinno być:

  1. <?php
  2. $query = "INSERT INTO contacts VALUES ('','$nick','$tytul','$komentarz','".date('y-m-d H:i:s',time()-36000)."')"
  3. ?>


O ile zmieniłeś pole date z TIMESTAMP na DATETIME.
szczurek8005
  1. <?php
  2. include("dbinfo.inc.php");
  3.  
  4. $nick=$_POST['nick'];
  5. $tytul=$_POST['tytul'];
  6. $komentarz=$_POST['komentarz'];
  7.  
  8.  
  9. mysql_connect('localhost',$username,$password);
  10. @mysql_select_db($database) or die("Nie znaleziono bazy danych");
  11.  
  12. $query = "INSERT INTO contacts VALUES ('','$nick','$tytul','$komentarz','".date('y:m:d H:i:s',time()-36000."'))";
  13.  
  14. header("Location: index.php");
  15.  
  16. mysql_query($query);
  17. ?>


Tak to wygląda i delej nic sie nie dzieje a w tabeli zmienłem na
  1. <?php
  2. `data` DATETIME NOT NULL
  3. ?>
Skie
Bo źle przepisałeś - zobacz jak to było u mnie a jak jest u Ciebie.

A to - po jakiego grzyba Ci w kodzie?
Kod
header("Location: index.php");

?

Przekierowujesz w ten sposób nagłówki strony zanim wyślesz zapytanie do bazy.
szczurek8005
Dalej nic z tego chyba sie poddam może jakimś trafem dojde gfzie jest błąd
a ten kod
  1. <?php
  2. header("Location: index.php");
  3. ?>


dałem żeby po dodaniu wpisu przekierowało automatycznie do strony na której te wpisy się ukazują :/


Dzięki za pomoc exclamation.gif!!
Skie
Tak, ale może zanim przekierujesz stronę warto wykonać zapytanie SQL które dałeś w zmiennej $query ?
Teraz przekierowujesz stronę zanim wyślesz zapytanie - to jedno, a drugie to to, że źle przepisałeś kod związany z date();

Powinno być tak:
  1. <?php
  2. $query = "INSERT INTO contacts VALUES ('','$nick','$tytul','$komentarz','".date('y-m-d H:i:s',time()-36000)."')";
  3.  
  4. mysql_query($query);
  5.  
  6. header("Location: index.php");
  7. ?>
szczurek8005
Dzięki twojej pomocy SKIE wszystko działa oto końcowy kod
  1. <?
  2. include("dbinfo.inc.php");
  3.  
  4. $nick=$_POST['nick'];
  5. $tytul=$_POST['tytul'];
  6. $komentarz=$_POST['komentarz'];
  7. $czas=date('y-m-d H:i:s',time()+18000);
  8.  
  9. mysql_connect('localhost',$username,$password);
  10. @mysql_select_db($database) or die("Nie znaleziono bazy danych");
  11.  
  12. $query = "INSERT INTO contacts VALUES ('','$nick','$tytul','$komentarz','$czas')";
  13.  
  14.  
  15.  
  16.  
  17. mysql_query($query);
  18. header("Location: index.php");
  19. ?>


Dodałem linię 8 i zmieniłem w 13
  1. <?php
  2. $czas
  3. ?>



Wszystko działa jak należy teraz trochę popracuje nad administracją i zabezpieczeniami przed spam i tagi html. no i można wrzucać na serwer smile.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.