Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Praca - Gra online
Forum PHP.pl > Forum > Przedszkole
lampard029
Witam
Wgrałem plik praca.php wszystko praktycznie ok. ale moja postać nie idzie do pracy po kliknięciu w odpowiedni odnośnik... Dlaczego ?

strona www.topfifa.pl/praca.php
login; test123
hasło: test123
drozdii07
Nie działa konto testowe - nie ważne.. zarejestrowałem się
Na tym forum nie ma wróżek.. pokaż kod smile.gif - nie ważne biggrin.gif

Wydaje mi się, że błąd leży w linku: topfifa.pl/pracuj.php?pracuj Powinno być chyba: topfifa.pl/pracuj.php?id=pracuj (Ale pewien nie jestem biggrin.gif)
lampard029
login: tester123
hasło; tester123

kod pliku praca.php
  1. <?php
  2. //włączamy bufor
  3.  
  4. //pobieramy zawartość pliku ustawień
  5. require_once('var/ustawienia.php');
  6.  
  7. //startujemy lub przedłużamy sesję
  8.  
  9. //dołączamy plik, który sprawdzi czy napewno mamy dostęp do tej strony
  10. require_once('test_zalogowanego.php');
  11.  
  12.  
  13. //pobieramy nagłówek strony
  14. require_once('gora_strony.php');
  15. ?>
  16.  
  17. <p><b>Praca</b></p><hr/>
  18. <p>
  19. Wpisz tutaj jakiś tekst powitalny, żeby strona nie była zbyt pusta<br/>
  20. Poinformuj gracza ile trwa okres pracy i ile otrzyma złota na sam koniec.<hr/>
  21. </p>
  22. <?php
  23. //sprawdzamy czy gracz pracuje
  24.  
  25. if( ($uzytkownik['pracuje'] > 0) && ($uzytkownik['pracuje'] < time()) ){
  26. //jeżeli gracz ma ustawione, że pracuje, ale czas pracy już się zakończył to wydaj mu odpowiednią ilość złota za pracę i ustaw, że już nie pracuje
  27.  
  28. //w naszym przykładzie ilość otrzymanego złota za wykonanie pracy zależy od posiadanych punktów
  29. $zloto = 15 + 5 * $uzytkownik['punkty'] ;
  30.  
  31.  
  32. //wysyłamy polecenie do bazy danych
  33. mysql_query("update gracze set pracuje = 0, zloto = zloto + ".$zloto." where gracz = ".$uzytkownik['gracz']);
  34.  
  35. //odświeżamy stronę
  36. header("Location: praca.php");
  37. } elseif ($uzytkownik['pracuje'] > 0){
  38. //jeżeli gracz ma ustawione, że pracuje, ale czas pracy jeszcze się nie zakończył
  39.  
  40.  
  41. if(isset($_GET['przerwij'])){
  42. //jeżeli wciśnięto przerwanie pracy
  43. mysql_query("update gracze set pracuje = 0 where gracz = ".$uzytkownik['gracz']);
  44. //odświeżamy stronę
  45. header("Location: praca.php");
  46. }
  47.  
  48. //obliczamy ile czasu pozostało do końca pracy
  49. $pozostalo = $uzytkownik['pracuje'] - time();
  50.  
  51. //dodajemy funkcję liczącą czas
  52. ?>
  53. <script type='text/javascript'>
  54. function liczCzas(ile) {
  55. godzin = Math.floor(ile / 3600);
  56. minut = Math.floor((ile - godzin * 3600) / 60);
  57. sekund = ile - minut * 60 - godzin * 3600;
  58. if (godzin < 10){ godzin = "0"+ godzin; }
  59. if (minut < 10){ minut = "0" + minut; }
  60. if (sekund < 10){ sekund = "0" + sekund; }
  61. if (ile > 0) {
  62. ile--;
  63. document.getElementById("zegar").innerHTML = godzin + ':' + minut + ':' + sekund;
  64. setTimeout("liczCzas("+ile+")", 1000);
  65. } else {
  66. document.getElementById("zegar").innerHTML = "[zakończono]";
  67. }
  68. }
  69. </script>
  70. Twoja postać jest w pracy, do jej zakończenia pozostało: <span id='zegar'></span> <a href='praca.php?przerwij'>[ przerwij ]</a> <?php echo "<script type='text/javascript'>liczCzas(".$pozostalo.")</script>"; ?>
  71. <?php
  72.  
  73. } else {
  74. //gracz nie pracuje
  75.  
  76. if(isset($_GET['pracuj'])){
  77. //jeżeli wciśnięto pracowanie
  78.  
  79. //koniec pracy = aktualny czas + ilość_godzin * 3600
  80. $koniec = time() + 4 * 3600;
  81. mysql_query("update gracze set pracuje = ".$koniec." where gracz = ".$uzytkownik['gracz']);
  82. //odświeżamy stronę
  83. header("Location: praca.php");
  84. }
  85.  
  86. //obliczamy ile otrzyma wynagrodzenia za pracę, u nas 4godziny
  87. $otrzyma = 4 * (1000 + 5 * $uzytkownik['punkty']);
  88.  
  89.  
  90. echo "
  91. <p>
  92. Możesz iść do pracy. Trwa ona <b>4 godziny</b> i otrzymasz za nią <b>".$otrzyma." złota</b> - <a href='praca.php?pracuj'>[ idź do pracy ]</a>
  93. </p>
  94. ";
  95.  
  96. }
  97.  
  98.  
  99. //pobieramy zawartość menu
  100. require_once('menu.php');
  101.  
  102. //pobieramy zawartość prawego bloku
  103. require_once('prawa_kolumna.php');
  104.  
  105. //pobieramy stopkę
  106. require_once('dol_strony.php');
  107.  
  108. //wyłączamy bufor
  109. ?>
drozdii07
  1. if(isset($_GET['pracuj'])){
  2. //jeżeli wciśnięto pracowanie

Zmień na:
  1. if($_GET['id'] == 'pracuj'){
  2. // akcja jeśli nacisnął 'Pracuj'
  3. }

i zmień link na taki jaki ci w tamtym poście napisałem biggrin.gif
lampard029
Tak to teraz wygląda. A bład wyskoczył :/

  1. <?php
  2. //włączamy bufor
  3.  
  4. //pobieramy zawartość pliku ustawień
  5. require_once('var/ustawienia.php');
  6.  
  7. //startujemy lub przedłużamy sesję
  8.  
  9. //dołączamy plik, który sprawdzi czy napewno mamy dostęp do tej strony
  10. require_once('test_zalogowanego.php');
  11.  
  12.  
  13. //pobieramy nagłówek strony
  14. require_once('gora_strony.php');
  15. ?>
  16.  
  17. <p><b>Praca</b></p><hr/>
  18. <p>
  19. Wpisz tutaj jakiś tekst powitalny, żeby strona nie była zbyt pusta<br/>
  20. Poinformuj gracza ile trwa okres pracy i ile otrzyma złota na sam koniec.<hr/>
  21. </p>
  22. <?php
  23. //sprawdzamy czy gracz pracuje
  24.  
  25. if( ($uzytkownik['pracuje'] > 0) && ($uzytkownik['pracuje'] < time()) ){
  26. //jeżeli gracz ma ustawione, że pracuje, ale czas pracy już się zakończył to wydaj mu odpowiednią ilość złota za pracę i ustaw, że już nie pracuje
  27.  
  28. //w naszym przykładzie ilość otrzymanego złota za wykonanie pracy zależy od posiadanych punktów
  29. $zloto = 15 + 5 * $uzytkownik['punkty'] ;
  30.  
  31.  
  32. //wysyłamy polecenie do bazy danych
  33. mysql_query("update gracze set pracuje = 0, zloto = zloto + ".$zloto." where gracz = ".$uzytkownik['gracz']);
  34.  
  35. //odświeżamy stronę
  36. header("Location: praca.php");
  37. } elseif ($uzytkownik['pracuje'] > 0){
  38. //jeżeli gracz ma ustawione, że pracuje, ale czas pracy jeszcze się nie zakończył
  39.  
  40.  
  41. if(isset($_GET['przerwij'])){
  42. //jeżeli wciśnięto przerwanie pracy
  43. mysql_query("update gracze set pracuje = 0 where gracz = ".$uzytkownik['gracz']);
  44. //odświeżamy stronę
  45. header("Location: praca.php");
  46. }
  47.  
  48. //obliczamy ile czasu pozostało do końca pracy
  49. $pozostalo = $uzytkownik['pracuje'] - time();
  50.  
  51. //dodajemy funkcję liczącą czas
  52. ?>
  53. <script type='text/javascript'>
  54. function liczCzas(ile) {
  55. godzin = Math.floor(ile / 3600);
  56. minut = Math.floor((ile - godzin * 3600) / 60);
  57. sekund = ile - minut * 60 - godzin * 3600;
  58. if (godzin < 10){ godzin = "0"+ godzin; }
  59. if (minut < 10){ minut = "0" + minut; }
  60. if (sekund < 10){ sekund = "0" + sekund; }
  61. if (ile > 0) {
  62. ile--;
  63. document.getElementById("zegar").innerHTML = godzin + ':' + minut + ':' + sekund;
  64. setTimeout("liczCzas("+ile+")", 1000);
  65. } else {
  66. document.getElementById("zegar").innerHTML = "[zakończono]";
  67. }
  68. }
  69. </script>
  70. Twoja postać jest w pracy, do jej zakończenia pozostało: <span id='zegar'></span> <a href='praca.php?przerwij'>[ przerwij ]</a> <?php echo "<script type='text/javascript'>liczCzas(".$pozostalo.")</script>"; ?>
  71. <?php
  72.  
  73. } else {
  74. //gracz nie pracuje
  75.  
  76. if($_GET['id'] == 'pracuj'){
  77. // akcja jeśli nacisnął 'Pracuj'
  78. }
  79. //koniec pracy = aktualny czas + ilość_godzin * 3600
  80. $koniec = time() + 4 * 3600;
  81. mysql_query("update gracze set pracuje = ".$koniec." where gracz = ".$uzytkownik['gracz']);
  82. //odświeżamy stronę
  83. header("Location: praca.php");
  84. }
  85.  
  86. //obliczamy ile otrzyma wynagrodzenia za pracę, u nas 4godziny
  87. $otrzyma = 4 * (1000 + 5 * $uzytkownik['punkty']);
  88.  
  89.  
  90. echo "
  91. <p>
  92. Możesz iść do pracy. Trwa ona <b>4 godziny</b> i otrzymasz za nią <b>".$otrzyma." złota</b> - <a href='praca.php?id=pracuj'>[ idź do pracy ]</a>
  93. </p>
  94. ";
  95.  
  96. }
  97.  
  98.  
  99. //pobieramy zawartość menu
  100. require_once('menu.php');
  101.  
  102. //pobieramy zawartość prawego bloku
  103. require_once('prawa_kolumna.php');
  104.  
  105. //pobieramy stopkę
  106. require_once('dol_strony.php');
  107.  
  108. //wyłączamy bufor
  109. ?>
drozdii07
Zamiast komentarza wpisz tam np. echo 'Działa!';

Usuń nawias w 98 linii

  1. else {
  2. //gracz nie pracuje
  3. }
  4. if($_GET['id'] == 'pracuj'){
  5. // akcja jeśli nacisnął 'Pracuj'
  6. }
  7. //koniec pracy = aktualny czas + ilość_godzin * 3600
  8. $koniec = time() + 4 * 3600;
  9. mysql_query("update gracze set pracuje = ".$koniec." where gracz = ".$uzytkownik['gracz']);
  10. //odświeżamy stronę
  11. header("Location: praca.php");
  12.  
  13.  
  14. //obliczamy ile otrzyma wynagrodzenia za pracę, u nas 4godziny
  15. $otrzyma = 4 * (1000 + 5 * $uzytkownik['punkty']);
  16.  
  17.  
  18. echo "
  19. <p>
  20. Możesz iść do pracy. Trwa ona <b>4 godziny</b> i otrzymasz za nią <b>".$otrzyma." złota</b> - <a href='praca.php?id=pracuj'>[ idź do pracy ]</a>
  21. </p>
  22. ";
  23.  

Tak chyba powinno działać biggrin.gif Coś z nawiasami było pomieszane ..
lampard029
w którym miejscu?
drozdii07
Wklej to co jest wyżej w linie od 78 do 98 smile.gif I dodaj sobie akcje do tego ifa if($_GET['id] == 'pracuj'); bo teraz widzę link dobrze działa, ale nic się nie dzieje smile.gif

Ehh.. coś pomieszałem,, widzę błąd na stronie ;P Daj w 78 linijce { przed else smile.gif
lampard029
dalej coś nie tak :/ albo pomieszałem albo nie działa ;/ najlepiej edytuj mi ten pierwszy plik i wstaw a ja to skopiuję i wkleję bo dalej jest błąd :/
drozdii07
Zaraz pomyśle jak to zrobić i ci wkleję .. biggrin.gif

  1. <?php
  2. //włączamy bufor
  3.  
  4. //pobieramy zawartość pliku ustawień
  5. require_once('var/ustawienia.php');
  6.  
  7. //startujemy lub przedłużamy sesję
  8.  
  9. //dołączamy plik, który sprawdzi czy napewno mamy dostęp do tej strony
  10. require_once('test_zalogowanego.php');
  11.  
  12.  
  13. //pobieramy nagłówek strony
  14. require_once('gora_strony.php');
  15. ?>
  16.  
  17. <p><b>Praca</b></p><hr/>
  18. <p>
  19. Wpisz tutaj jakiś tekst powitalny, żeby strona nie była zbyt pusta<br/>
  20. Poinformuj gracza ile trwa okres pracy i ile otrzyma złota na sam koniec.<hr/>
  21. </p>
  22. <?php
  23. //sprawdzamy czy gracz pracuje
  24.  
  25. if( ($uzytkownik['pracuje'] > 0) && ($uzytkownik['pracuje'] < time()) ){
  26. //jeżeli gracz ma ustawione, że pracuje, ale czas pracy już się zakończył to wydaj mu odpowiednią ilość złota za pracę i ustaw, że już nie pracuje
  27.  
  28. //w naszym przykładzie ilość otrzymanego złota za wykonanie pracy zależy od posiadanych punktów
  29. $zloto = 15 + 5 * $uzytkownik['punkty'] ;
  30.  
  31.  
  32. //wysyłamy polecenie do bazy danych
  33. mysql_query("update gracze set pracuje = 0, zloto = zloto + ".$zloto." where gracz = ".$uzytkownik['gracz']);
  34.  
  35. //odświeżamy stronę
  36. header("Location: praca.php");
  37. } elseif ($uzytkownik['pracuje'] > 0){
  38. //jeżeli gracz ma ustawione, że pracuje, ale czas pracy jeszcze się nie zakończył
  39.  
  40.  
  41. if(isset($_GET['przerwij'])){
  42. //jeżeli wciśnięto przerwanie pracy
  43. mysql_query("update gracze set pracuje = 0 where gracz = ".$uzytkownik['gracz']);
  44. //odświeżamy stronę
  45. header("Location: praca.php");
  46. }
  47.  
  48. //obliczamy ile czasu pozostało do końca pracy
  49. $pozostalo = $uzytkownik['pracuje'] - time();
  50.  
  51. //dodajemy funkcję liczącą czas
  52. ?>
  53. <script type='text/javascript'>
  54. function liczCzas(ile) {
  55. godzin = Math.floor(ile / 3600);
  56. minut = Math.floor((ile - godzin * 3600) / 60);
  57. sekund = ile - minut * 60 - godzin * 3600;
  58. if (godzin < 10){ godzin = "0"+ godzin; }
  59. if (minut < 10){ minut = "0" + minut; }
  60. if (sekund < 10){ sekund = "0" + sekund; }
  61. if (ile > 0) {
  62. ile--;
  63. document.getElementById("zegar").innerHTML = godzin + ':' + minut + ':' + sekund;
  64. setTimeout("liczCzas("+ile+")", 1000);
  65. } else {
  66. document.getElementById("zegar").innerHTML = "[zakończono]";
  67. }
  68. }
  69. </script>
  70. Twoja postać jest w pracy, do jej zakończenia pozostało: <span id='zegar'></span> <a href='praca.php?przerwij'>[ przerwij ]</a> <?php echo "<script type='text/javascript'>liczCzas(".$pozostalo.")</script>"; ?>
  71. <?php
  72.  
  73.  
  74. //gracz nie pracuje
  75.  
  76. if($_GET['id'] == 'pracuj'{
  77. echo 'Pracujesz' // Czy co tam chcesz
  78. }
  79.  
  80. //koniec pracy = aktualny czas + ilość_godzin * 3600
  81. $koniec = time() + 4 * 3600;
  82. mysql_query("update gracze set pracuje = ".$koniec." where gracz = ".$uzytkownik['gracz']);
  83. //odświeżamy stronę
  84. header("Location: praca.php");
  85.  
  86.  
  87. //obliczamy ile otrzyma wynagrodzenia za pracę, u nas 4godziny
  88. $otrzyma = 4 * (1000 + 5 * $uzytkownik['punkty']);
  89.  
  90.  
  91. echo "
  92. <p>
  93. Możesz iść do pracy. Trwa ona <b>4 godziny</b> i otrzymasz za nią <b>".$otrzyma." złota</b> - <a href='praca.php?pracuj'>[ idź do pracy ]</a>
  94. </p>
  95. ";
  96.  
  97.  
  98.  
  99.  
  100. //pobieramy zawartość menu
  101. require_once('menu.php');
  102.  
  103. //pobieramy zawartość prawego bloku
  104. require_once('prawa_kolumna.php');
  105.  
  106. //pobieramy stopkę
  107. require_once('dol_strony.php');
  108.  
  109. //wyłączamy bufor
  110. ?>


Powinno działać smile.gif Teraz idę na rolki więc szybko nie odpisze biggrin.gif
lampard029
więc ja to dobrze zrobiłem ale dalej bład wyskakuje
drozdii07
  1. if($_GET['id'] == 'pracuj'){

Zamień linie 78 na to biggrin.gif
lampard029
dalej nie działa :/ Może lepiej sam mi dasz coś co działa. Chodzi mi o to żeby klikając w odnośnik moja postać szła do pracy i po kilku godzinach dostawała pieniądze za pracę.
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.