Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][SQL][PHP]Coś tu jest nie tak!? (Timer, Mysql, PHP, JS)
Forum PHP.pl > Forum > Przedszkole
MefjuU
Witam otóż mam taki o plik o nazwie test.php

Jego zawartość:

  1. <?php
  2.  
  3. require './site/header.php';
  4. require './config/config.php';
  5. require_once './config/user.class.php';
  6. ?>
  7. Odliczanie: <div id="test"></div>
  8.  
  9. <script>
  10.  
  11. function startTimer(duration, display) {
  12. var timer = duration
  13. var minutes;
  14. var seconds;
  15. countDown();
  16. var interval = setInterval(countDown, 1000);
  17.  
  18. var levelnext = <?php echo $levelnext ?>;
  19.  
  20. function countDown() {
  21. minutes = parseInt(timer / 60, 10)
  22. seconds = parseInt(timer % 60, 10);
  23.  
  24. minutes = minutes < 10 ? "0" + minutes : minutes;
  25. seconds = seconds < 10 ? "0" + seconds : seconds;
  26.  
  27. display.innerHTML=(minutes+":"+seconds);
  28.  
  29. if (--timer < 0) {
  30. display.innerHTML= $levelnext; //PO UPŁYWIE 10 minut powinno załadować mi plik który podałem w $levelnext
  31. clearInterval(interval);
  32. //location.href="./test2.php";
  33. }
  34. }
  35. }
  36.  
  37. (function() {
  38. startTimer(10*60,document.getElementById('test')); // 10 minut
  39. }());
  40.  
  41. </script>
  42. <?php
  43. $sprlevel = require'./test2.php'; // A TO MA ZAŁADOWAĆ INNY PLIK DO KODU .js
  44. $levelnext = $sprlevel // TUTAJ JEST TEN PLIK
  45. ?>
  46. </body>
  47. </html>


I chodzi o to że do kodu .js po upływie tych 10 min powinien zostać załadowany inny plik (test2.php)
i właśnie chodzi o to że jak upłynie 10 min to załaduje mi drugi plik który wykona UPDATE tabeli w bazie danych dla danego użytkownika i zwiększy jego punkty w tym przypadku 'nosmoney'. Ale problem polega w tym pierwszym pliku (test.php) nie wywala mi żadnego błędu, ale również i nic nie odlicza. A powinno. :/

Zawartość pliku test2.php:

  1. <?php
  2. if (user::isLogged()) {
  3. // Widok dla użytkownika zalogowanego
  4.  
  5. // Pobierz dane o użytkowniku i zapisz je do zmiennej $user
  6. $user = user::getData('', '');
  7. echo 'Witam';
  8. mysql_query("UPDATE users SET nosmoney=nosmoney+1 WHERE id='$user[id]';") or die ('<p class="error">Wystąpił błąd.</p>');
  9.  
  10. if (($user['nosmoney']+1)==10) {
  11. echo 'Brawo! masz 10 pkt';
  12. }
  13. }else {
  14. // Widok dla użytkownika niezalogowanego
  15. echo '<center><br/><p1>Witaj nieznajomy!<br/></p1></center>';
  16. }
  17. ?>



Wcześniej zrobiłem to na innej podstawie dokładnie takim sposobem:
  1. //location.href="./test2.php";


ale nie chodzi mi o to żeby po upływie 10 min zmieniało mi stronę tylko żeby akcja dalej toczyła się na tej samej stronie.
Czyli tak jakby żeby połączyć mniej więcej jakoś do .js plik .php ale bez przekierowania.


Ponieważ próbuję zrobić taki prosty system leveli (który dodaje nam punkty za pobyt na stronie.) na stronie że później w index'ie jak i na reszcie stronach będzie odliczać i dodawać do bazy bez przekierowywania nas np. co 10 min na jakąś stronę (w poprzednim przypadku np. jak już podałem poprzez funkcję "location.href="./test2.php";" na stronę test2.php) a wręcz przeciwnie abyśmy pozostali na aktualnie przeglądanej przez nas stronie.
SmokAnalog
Kłaniają się tutaj zupełne podstawy JavaScript i PHP. Łączysz te języki w nieprawidłowy sposób.

Masz dwie podstawowe możliwości:
  • Trzymaj treść tej nowej strony w ukrytym elemencie (display: none) i pokazuj go w momencie upływu czasu timera (element.style.display = 'block')
  • Jeśli treść nowej strony ma się ładować z serwera dopiero po upłynięciu czasu, to pozostaje Ci Ajax lub Fetch API.
MefjuU
No właśnie nigdy czegoś takiego nie łączyłem ;/ (w sensie że js i php)
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.