Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Przeładowanie podstron
Kshyhoo
post
Post #1





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Mam stronę opartą na podstronach. Chciałbym przeładowywać automatycznie podstrony. Odliczam czas tak:
[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2. function countTime(tid, how) {
  3. hrs = Math.floor(how / 3600);
  4. min = Math.floor((how - hrs * 3600) / 60);
  5. sec = how - min * 60 - hrs * 3600;
  6. if (hrs < 10) { hrs = "0" + hrs; }
  7. if (min < 10) { min = "0" + min; }
  8. if (sec < 10) { sec = "0" + sec; }
  9. if (how > 0) {
  10. how--;
  11. document.getElementById(tid).innerHTML = hrs + ':' + min + ':' + sec;
  12. setTimeout("countTime('"+tid+"',"+how+")", 1000);
  13. }
  14. }
  15. </script>
[JAVASCRIPT] pobierz, plaintext

Licznik wyświetlam w SPAN. Po odliczeniu czasu, chcę przekierować (odświeżyć) podstronę tak:
  1. header("refresh: ".$event['ft']."; url='index.php?go=account");
  2. // próbowałem też:
  3. echo '<meta http-equiv="'.$event['ft'].'" content="X; URL=index.php?go=account">';

Całość próbnego kodu:
  1. <?php
  2. // DANE DO TESTU
  3. $ref = 0;
  4. $event['ft'] = 10;
  5. $event['type'] = 1;
  6. $event['event'] = 3;
  7.  
  8. if($ref == 0) {
  9. header("refresh: ".$event['ft']."; url='index.php?go=account");
  10. $ref = 1;
  11. }
  12. $ft = $event['ft'];
  13. if($event['type'] == 1) {
  14. ?>
  15. <div style="margin-bottom: 10px">
  16. <?php echo $event['b_name'] ?>
  17. <span style="float: right">
  18. <span id="t<?php echo $event['event'] ?>"></span>
  19. </span>
  20. <script type="text/javascript">countTime('t<?php echo $event['event'] ?>',<?php echo $ft ?>);</script>
  21. </div>
  22. </div><!-- blok -->
  23. <?php
  24. }
  25. ?>

Problem polega na "podskakiwaniu" strony przy uruchamianiu i odświeżaniu, po za tym, nie przeładowuje strony. Problem znika po zakomentowaniu linii z header. DEMO.
Dodam, że używam ob_start / ob_end_flush.


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Skoro odliczanie robisz w js to i przekierowanie masz zrobic w js a nie przez naglowek w php

Poza tym w przekierowaniu php masz blad....
Nie: header("refresh: ".$event['ft']."; url='index.php?go=account");
a:header("refresh: ".$event['ft']."; url=index.php?go=account");
Naprawde nie widziales apostrofu w linku na ktory cie przekierowywalo i nie widziales napisu "STRONA NIE ISTNIEJE"?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kshyhoo
post
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Pewnie przy kolejnej wersji się przypałętał... Nie zmienia to faktu, że nadal strona mi podskakuje i nie przeładowuje po zakończeniu odliczania.


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) Mi przeladowuje sie twoj link
2) Jak juz pisalem, skoro odliczanie robisz w js, to i przeladowanie rob w js a nie oddzielnie w php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kshyhoo
post
Post #5





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Rozumiem, że mogę to zrobić w JS, ale chciałbym rozwiązać i tę zagadkę. Co wykryłem, że pod GCh i IE11 działa, a nie działa pod FF smile.gif


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A mi dziala pod kazdą przeglądarką.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kshyhoo
post
Post #7





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Czyli tak:
  1. <script type="text/javascript">
  2. setTimeout(function() {
  3. window.location.href="index.php?go=<?php echo $_GET['go'] ?>";
  4. }, <?php echo $ft * 1000 ?>);
  5. </script>

Niby ten sam czas, a przeładowuje 2 sek. szybciej.


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




O tu masz zrobic przeladowanie:
if (how > 0) {

how--;

document.getElementById(tid).innerHTML = hrs + ':' + min + ':' + sec;

setTimeout("countTime('"+tid+"',"+how+")", 1000);

}
Jak ci licznik dojdzie do 0.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kshyhoo
post
Post #9





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




No a jak mam w takim razie wywołać kilka zdarzeń tego JS na jednej stronie? Musiałbym przekazać jeszcze adres i $ref do funkcji countTime w innym pliku zresztą...


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to teraz juz nie wiem o czym mowisz


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kshyhoo
post
Post #11





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Np. tak:
  1. <!-- jedno zdarzenie -->
  2. <div style="margin-bottom: 10px">
  3. <?php echo $event['b_name'] ?>
  4. <span style="float: right">
  5. <span id="t<?php echo $event['event'] ?>"></span>
  6. </span>
  7. <script type="text/javascript">countTime('t<?php echo $event['event'] ?>',<?php echo $ft ?>);</script>
  8. </div>
  9.  
  10. <!-- drugie zdarzenie -->
  11. <div style="margin-bottom: 10px">
  12. <?php echo $event['b_name'] ?>
  13. <span style="float: right">
  14. <span id="t<?php echo $event['event'] ?>"></span>
  15. </span>
  16. <script type="text/javascript">countTime('t<?php echo $event['event'] ?>',<?php echo $ft ?>);</script>
  17. </div>

Różnią się jedynie czasem ($ft) i nazwą ($event['event']).


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Dobra nie wnikam po co ci ten kolejny parametr, ale jaki masz problem by go przekazac?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Aktualny czas: 22.08.2025 - 01:12