Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

4 Stron V   1 2 3 > »   
Reply to this topicStart new topic
> [PHP]Odświeżanie diva po wpisie w bazie danych.
P4nch0
post 30.03.2014, 12:32:40
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 30.03.2014
Skąd: Bełchatów

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


Witam. Męczę się z jednym problemem. Otóż na podstawie poradnika swtorzyłem bardzo prostą grę via www, same podstawy, praca trening itp. W osobnym divie mam umieszczone wyciągnięte z bazy danych statystyki.

Problem polega na tym iż po dokonaniu wpisu w bazie danych, przypuscmy ktoś kliknie "zdejmij broń" strona się przeładuje, borń się zdejmie, ale statystyki pozostaną niezmienione, dopiero po kolejnym odświeżeniu statystyki zostaną wczytane już zmienione.


strona stoi pod adresem lifetime.cba.pl.
Konto na którym można sprawdzic działanie
login- test
haslo - test
z tym, że zaznaczam nie jest to gra, a szablon cwiczeniowy wykonany z kursu, prosze nie hejtowac wink.gif grafika też jest wrzucona pierwsza lepsza by milej się pracowało. Php, html i Css już troszkę liznąłem, chcę teraz bawic sie dalej na tym co mam i rozwijac, stad moje pytanie smile.gif

Proszę o pomoc, pozdrawiam. smile.gif
Go to the top of the page
+Quote Post
Turson
post 30.03.2014, 12:37:42
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Wymuś przeładowanie strony po akcji albo zainteresuj się ajaxem
Go to the top of the page
+Quote Post
P4nch0
post 30.03.2014, 12:54:25
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 30.03.2014
Skąd: Bełchatów

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


Wymuszenie przeładowania strony bym musiał dac po kazdej czynnosci wpisu do bazy danych tak?
o jquery czytałem troche, ale niebardzo wiem jak da zapytanie że po zmianie w bazie danych rób coś tam. Jest takowe zapytanie?

Ten post edytował P4nch0 30.03.2014, 12:58:25
Go to the top of the page
+Quote Post
Turson
post 30.03.2014, 13:37:43
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Cytat
Wymuszenie przeładowania strony bym musiał dac po kazdej czynnosci wpisu do bazy danych tak?

Tak

Cytat
o jquery czytałem troche, ale niebardzo wiem jak da zapytanie że po zmianie w bazie danych rób coś tam. Jest takowe zapytanie?

Wysyłasz ajaxem żądanie, w PHP robisz jakąś akcję np. zapisujesz dane do bazy, pobierasz ile teraz złota ma gracz i wstawiasz na stronie wynik
Go to the top of the page
+Quote Post
P4nch0
post 31.03.2014, 07:54:46
Post #5





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 30.03.2014
Skąd: Bełchatów

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


No tak, ale to musiałbym wtedy w bazie zrobic jakąs tabele liczaca zmiany albo cos i również po każdym działaniu php dodawac odpowiednia komende i wtedy ajaxem sprawdzac czy jest zmiana. Czy czegos nie kmninię? ;p

Czy jest jakas bezposrednia komenda wypluwająca, że była jakaś zmiana w bazie danych którą bezpośrednio można sprawdzic?
Jeśli możesz rzuc jakiś przykład komend to załapie i pokombinuje smile.gif
dzięki za dotychczasowe odpowiedzi smile.gif


EDIT

Poczytałem trochę o ajaxie i doszedłem do wniosku ze musiało by się to opierac o ciągłe co kilka sekund sprawdzanie czy zmienio wpis w bazie danych, mam rację? Skoro tak to pewnie mocno obciąża stronę prawda?

Więc chyba lepszym sposobem będzie napisanie funkcji odświeżającej diva i wklejenie jej po każdym wpisie do bazy danych. Jeśli nie mam racji prosze o podpowiedź.

Ten post edytował P4nch0 31.03.2014, 07:55:56
Go to the top of the page
+Quote Post
Turson
post 31.03.2014, 07:55:43
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Cytat
Poczytałem trochę o ajaxie i doszedłem do wniosku ze musiało by się to opierac o ciągłe co kilka sekund sprawdzanie czy zmienio wpis w bazie danych, mam rację? Skoro tak to pewnie mocno obciąża stronę prawda?

Nie, tylko jak gracz cos kupi itd. to dajesz mu np. broń ale zabierasz złoto, zwracasz ile ma teraz złota i tyle.

Jak nie chcesz ajaxa to daj po prostu header refresh po zapytaniu co mu zabiera kase

Ten post edytował Turson 31.03.2014, 07:56:23
Go to the top of the page
+Quote Post
P4nch0
post 31.03.2014, 08:08:10
Post #7





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 30.03.2014
Skąd: Bełchatów

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


A co np ze zdejmowaniem i zakładaniem przedmiotów? też edytują statystyki, pozniej może napisze coś zwiekszające hp i expa co również może nie opierac się na złocie. Ajaxa bym się chętnie nauczył bo jest przydatny, tylko nie wiem jak to ugryźc. Dzięki za cierpliwośc ;p

Ten post edytował P4nch0 31.03.2014, 08:08:56
Go to the top of the page
+Quote Post
Turson
post 31.03.2014, 08:09:24
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Więc po prostu wymuś odświeżenie strony i będzie najprościej smile.gif
Go to the top of the page
+Quote Post
in5ane
post 31.03.2014, 09:15:12
Post #9





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


W jQuery ajax'a używasz w taki sposób:
[JAVASCRIPT] pobierz, plaintext
  1. $('button#button-submit').click(function () {
  2. $.ajax({
  3. url: 'ajax.php?mod=change',
  4. type: 'post',
  5. dataType: 'json',
  6. success: function(data){
  7. if (data != 'error')
  8. {
  9. $('div#div-with-content').html(data);
  10. }
  11. else
  12. {
  13. alert('Wystąpił błąd w zapisie. Skontaktuj się z administratorem.');
  14. }
  15. }
  16. });
  17. });
[JAVASCRIPT] pobierz, plaintext


I dodatkowo robisz zamiast przycisku submit to button o ID button-submit. A w PHP zwracasz sobie ilość złota używająca po prostu echo. W przykładzie dałem adres ajax.php?mod=change. Czyli w PHP robisz to tak:
  1. if ($_GET['change'])
  2. {
  3. /**
  4.   * TUTAJ ROBISZ SOBIE OPERACJE NA BAZIE,
  5.   * JEŚLI SIĘ POWIODŁY TO DAJESZ ILOŚĆ ZŁOTA,
  6.   * A JEŚLI SIĘ NIE POWIODŁY TO DAJESZ NAPIS "error"
  7.   */
  8. if (...)
  9. {
  10. echo $iloscZlota;
  11. }
  12. else
  13. {
  14. echo 'error';
  15. }
  16. }

I ot cała filozofia z ajax'em.

Po udanej zwrotce z PHP w DIV'ie o ID div-with-content zmieni Ci się wartość złota.

Ten post edytował in5ane 31.03.2014, 09:15:25


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Turson
post 31.03.2014, 09:16:42
Post #10





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Nie prościej trzymać informację o złocie w innym pliku i potem tylko $.load('ile_zlota_mam.php') questionmark.gif
Go to the top of the page
+Quote Post
in5ane
post 31.03.2014, 09:51:14
Post #11





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Z tym, że po co mu to, jeśli on zmianę złota będzie robił tylko w momencie wykonania jakiejś czynności. Więc jeśli chce to bez przeładowania strony, to mój przykład będzie idealny.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Turson
post 31.03.2014, 09:54:25
Post #12





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


O tym też mówię, po kliknięciu przycisku na nowo załadować $.load
Go to the top of the page
+Quote Post
ilies
post 31.03.2014, 13:55:01
Post #13





Grupa: Zarejestrowani
Postów: 20
Pomógł: 2
Dołączył: 22.07.2009

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


Ja podobny problem rozwiązałem tak, że najpierw operacja dodania, czy usunięcia, następnie wczytanie wyników i wyświetlenie, tak powinieneś dostać wynik po aktualizacji, lecz pozostaje problem w momęcie odświeżenie strony, bo po każdym odświeżeniu operacja dodania czy usunięcia będzie się powtarzać, ja zawsze dodaje przekierowanie na stronę, tak aby nie było zmiennych do wykonywania początkowych operacji.
Go to the top of the page
+Quote Post
P4nch0
post 31.03.2014, 17:23:55
Post #14





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 30.03.2014
Skąd: Bełchatów

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


Dziekuje za takie zainteresowanie wink.gif
in5ane Twoj sposob pewnie by zadzialal, ale wiekszosc operacji na bazie tak jak pisalem nie opiera sie na zlocie, przypuscmy zdjecie tarczy zmienia statystyki ale nie zmienia stanu zlota, przez co polegajac na zlocie nie odswiezy sie tabela.
Ilies tak mozna zrobic, ale wlasnie musialbym dodawac po kazdej zmianie w bazie takowa funkcje wink.gif chyba ze sie myle? z tego co widze chyba najlepiej chyba bedzie dodac funkcje po kazdym wpisie odswiezajaca div, lecz chcialem sprawdzic czy jest inna droga. chyba ze macie jeszcze jakies propozycje? k)
dzieki za dotychczasowe odpowiedzi wink.gif
Go to the top of the page
+Quote Post
com
post 31.03.2014, 22:05:05
Post #15





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


ja bym się już na Twoim miejscu zainteresował technologia websocket smile.gif
Go to the top of the page
+Quote Post
Damonsson
post 31.03.2014, 22:20:16
Post #16





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Ale w czym masz jeszcze problem, @in5ane podał Ci mniej więcej jak to ma wyglądać i tego się trzymaj. Co za różnica czy to złoto, zbroja czy kilo pietruszek? PHP czy JS mają umysł i lubią sobie tylko zmieniać ilość złota, czy jak?
Go to the top of the page
+Quote Post
P4nch0
post 1.04.2014, 12:01:03
Post #17





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 30.03.2014
Skąd: Bełchatów

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


Okej, mniej więcej się zorientowałem, dziękuję wszystkim smile.gif daje "pomógł" smile.gif jakby coś to będę pytał ;p

EDIT
Wybaczcie, że męczę pytaniami, ale skoro już jest temat chcialbym dowiedzieć się jak najwięcej smile.gif

Otóż co sądzicie o tym żeby rozwiązać to pomysłem podobnym do Ilies, czyli przypuśćmy ktoś klika "trenuj jeden punkt siły" skrypt wykonuje akcje, daje wpis do bazy danych po czym przekierowuje do strony trenowania i wypluwa pop upa "trening się powiódł"? Sprawdziłem i w ten sposób ładnie to działa jak i również blokuje możliwość odświeżania i ponowniego wykonywania skryptu, jednak czego boje się najbardziej w pisaniu to przeciążania i tu chciałbym spytać czy takie rozwiązanie nie będzie obciążało strony?
Go to the top of the page
+Quote Post
com
post 1.04.2014, 15:12:19
Post #18





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


operacje na bazie danych zawsze są wąskim gardłem, dlatego napisałem, żebyś sie zainteresował technologią websoketowom, tam masz komunikacje miedzy klientem a serwerem w czasie rzeczywistym i nie musisz odpytywać bazy co chwile, żeby wykonywać jakieś akcje, wystarczy, że pobierzesz dane z niej a potem co jakiś czas puścisz update, w zależności od tego jak będzie to wymagała gra smile.gif a jeśli już mowa o zabezpieczeniu to ja bym raczej generował coś losowego i po prostu sprawdzał czy suma kontrolna sie zgadza jeśli tak to update jak nie to nie wykona akcji smile.gif
Go to the top of the page
+Quote Post
P4nch0
post 2.04.2014, 17:39:26
Post #19





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 30.03.2014
Skąd: Bełchatów

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


Ok, dziękuję Wam smile.gif
Go to the top of the page
+Quote Post
--P4nch0--
post 5.04.2014, 19:39:43
Post #20





Goście







Cytat(in5ane @ 31.03.2014, 09:15:12 ) *
W jQuery ajax'a używasz w taki sposób:
[JAVASCRIPT] pobierz, plaintext
  1. $('button#button-submit').click(function () {
  2. $.ajax({
  3. url: 'ajax.php?mod=change',
  4. type: 'post',
  5. dataType: 'json',
  6. success: function(data){
  7. if (data != 'error')
  8. {
  9. $('div#div-with-content').html(data);
  10. }
  11. else
  12. {
  13. alert('Wystąpił błąd w zapisie. Skontaktuj się z administratorem.');
  14. }
  15. }
  16. });
  17. });
[JAVASCRIPT] pobierz, plaintext


I dodatkowo robisz zamiast przycisku submit to button o ID button-submit. A w PHP zwracasz sobie ilość złota używająca po prostu echo. W przykładzie dałem adres ajax.php?mod=change. Czyli w PHP robisz to tak:
  1. if ($_GET['change'])
  2. {
  3. /**
  4.   * TUTAJ ROBISZ SOBIE OPERACJE NA BAZIE,
  5.   * JEŚLI SIĘ POWIODŁY TO DAJESZ ILOŚĆ ZŁOTA,
  6.   * A JEŚLI SIĘ NIE POWIODŁY TO DAJESZ NAPIS "error"
  7.   */
  8. if (...)
  9. {
  10. echo $iloscZlota;
  11. }
  12. else
  13. {
  14. echo 'error';
  15. }
  16. }

I ot cała filozofia z ajax'em.

Po udanej zwrotce z PHP w DIV'ie o ID div-with-content zmieni Ci się wartość złota.



Chciałem Panowie spróbowa tą metodą, jednak gdy otaczam działania w php frazą if ($_GET['change']) przestają działac. Możecie mi przybliżyc jak to dokladniej zastosowac? oraz jak odniesc sie do linku url: 'ajax.php?mod=change', który podał Kolega, troche mam braki, ale to początki smile.gif
Go to the top of the page
+Quote Post

4 Stron V   1 2 3 > » 
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: 25.04.2025 - 05:57