Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Problem z datą i godziną dodania komentarza do księgi gości
szczurek8005
post 20.07.2009, 15:06:23
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 23.06.2009

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


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. ?>
Go to the top of the page
+Quote Post
Skie
post 20.07.2009, 15:09:36
Post #2





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


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.

Ten post edytował Skie 20.07.2009, 15:27:52


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
szczurek8005
post 20.07.2009, 15:21:05
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 23.06.2009

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


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. ?>
Go to the top of the page
+Quote Post
Skie
post 20.07.2009, 15:25:54
Post #4





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Kurczę, zamiast napisać nowy post, to poprzedni mi się zeedytował.
W moim poprzednim poście masz kolejną odpowiedź.


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
szczurek8005
post 20.07.2009, 15:41:59
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 23.06.2009

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


Kurcze próbuje na wszelkie sposoby i wogóle nie dodaje teraz komentarza:(
Go to the top of the page
+Quote Post
Skie
post 20.07.2009, 15:45:48
Post #6





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Ehh, pokaż kod, który napisałeś i zrzut tabeli z bazy danych (wraz z typami pola)


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
szczurek8005
post 20.07.2009, 15:50:07
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 23.06.2009

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


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


Ten post edytował szczurek8005 20.07.2009, 15:51:48
Go to the top of the page
+Quote Post
Skie
post 20.07.2009, 15:52:48
Post #8





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


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.

Ten post edytował Skie 20.07.2009, 15:53:56


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
szczurek8005
post 20.07.2009, 16:00:00
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 23.06.2009

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


  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. ?>
Go to the top of the page
+Quote Post
Skie
post 20.07.2009, 16:01:39
Post #10





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


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.

Ten post edytował Skie 20.07.2009, 16:03:12


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
szczurek8005
post 20.07.2009, 16:09:54
Post #11





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 23.06.2009

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


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!!
Go to the top of the page
+Quote Post
Skie
post 20.07.2009, 16:14:27
Post #12





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


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


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
szczurek8005
post 20.07.2009, 17:09:04
Post #13





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 23.06.2009

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


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)
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: 14.08.2025 - 00:53