Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odświeżanie strony
Forum PHP.pl > Forum > PHP
pszczola0818
Witam. Czy jest możliwe zrobienie takiego skryptu:

if(warunek)
odśwież

Jeśli tak to jak??
kajzur
Odświerzenie będzie jednocześnie przekierowaniem przeglądarki na stronę która jest aktualnie uruchomiona smile.gif Więc da się smile.gif
np
Kod
if(isset($warunek))

{
$actFile = $_SERVER['SCRIPT_FILENAME'];
echo "<META HTTP-EQUIV=Refresh CONTENT=0; URL=$actFile>";

}

Zobacz tak.

PS. Zobacz pierw co zwraca Ci $_SERVER['SCRIPT_FILENAME'], bo ogólnie na serwerach wartość się różni, a Tobie chodzi o nazwę pliku aktualnie wykonywanego.
pszczola0818
Chodzi mi o to aby to działało gdzieś dalej w skrypcie, tzn:

<html>
<head>
....
</head>
<body>
....
<?php
instrukcja1;
instrukcja2
......
if(warunek)
odśwież;
else
instrukcja3;
......

?>

a jeśli dobrze zrozumiałem Twój skrypt to on działa na samym początku czyli przy wstawianiu znaczników <META>
TomASS
  1. <html>
  2. <head>
  3. ....
  4. </head>
  5. <body>
  6. ....
  7. <?php
  8. instrukcja1;
  9. instrukcja2
  10. ......
  11. if(warunek)
  12. odśwież;
  13. else
  14. instrukcja3;
  15. ......
  16. ?>


oraz:
Cytat
a jeśli dobrze zrozumiałem Twój skrypt to on działa na samym początku czyli przy wstawianiu znaczników <META>

Jaki jest sens wyświetlanie czegoś przed komendą "odśwież"? Ja bym to dał na początku i użył header:

  1. <?
  2. if(warunek) header("Location: nazwa_tego_pliku.php");
  3. ?>
  4. <html>
  5. <head>
  6. ....
  7. </head>
  8. <body>
  9. ....
  10. <?php
  11. instrukcja1;
  12. instrukcja2
  13. ......
  14.  
  15. else
  16. instrukcja3;
  17. ......
#luq
Nagłówki można wysyłać w dowolnym miejscu kodu tyle, że należy wtedy buforować wyjście
ob_start" title="Zobacz w manualu PHP" target="_manual, ob_end_flush" title="Zobacz w manualu PHP" target="_manual
TomASS
Cytat
Nagłówki można wysyłać w dowolnym miejscu kodu tyle, że należy wtedy buforować wyjście
ob_start, ob_end_flush

Można, tylko w jakim celu wysyłać coś do przeglądarki jak zaraz nastąpi przekierowanie?
#luq
Cytat(TomASS @ 8.04.2009, 21:44:08 ) *
Można, tylko w jakim celu wysyłać coś do przeglądarki jak zaraz nastąpi przekierowanie?

Ale można tego nie wiedzieć smile.gif

Ja np. mam szablon header.tpl który składa mi cały początek strony: szkielet, dołączanie styli oraz plików JS, składa zdarzenie onload, wszystko generowane przez PHP. Ten szablon jest dołączany na początku każdej strony, a następnie jest szablon konkretniej z nich w którym wykonywane są konkretne akcje i tutaj np. może być wysyłanie nagłówka ze zmianą lokalizacji, bo dopiero w tym miejscu występuje taka potrzeba i skrypt o tym wie.

Nie wiem czy ktoś mnie zrozumiał, ale w każdym bądź razie, takie sytuacje się pojawiają.
Wszystko zależy od tego jak piszesz - 1 plik = 1 strona czy np. MVC
TomASS
Zrozumiałem.

Coś źle zaprojektowałeś MVC, skoro najpierw generuje kod HTML, wysyła go do przeglądarki, a później zastanawia się czy nie przejść jednak na inną stronę winksmiley.jpg A dopytuję się tak, bo jeszcze nigdy nie znalazłem (za krótko żyję) uzasadnienia umieszczanie hedaera po wysłaniu czegoś do przeglądarki...
#luq
Dlaczego zaraz źle?
Można by zrobić tak aby to działało tak jak Ty tego oczekujesz, ale nie jest to jakiś błąd projektowy myślę. Chodź przyznam szczerze moja wiedz na temat MVC i modelowania frameworka, silnika, czy jakkolwiek inaczej to nazwać, dla stron, nie jest za duża.

Przyznaje, że długo zastanawiałem się nad tym postem wcześniejszym, czy tak to u mnie zadziała i czy jest to ok, ale doszedłem do wniosku, że może być.
iro88
Jestem w trakcie pisania własnego silnika MVC i natknąłem się na pewien problem z działaniem kodu.

index.php wygląda następująco.
  1. <?php
  2. require_once('app/init.php');
  3.  
  4. $router = new Application_Routing();
  5. $httprequest = new Application_Request();
  6.  
  7. $httprequest ->GetParamFromUrl();
  8. $router ->setMVC($httprequest->model,$httprequest->view,$httprequest->controller);
  9. $router ->doAction($httprequest->controller,$httprequest->action,$httprequest->param);
  10.  
  11. ?>

Chyba nie ma co dużo tłumaczyć. Index inicjuje (includuje potrzebne pliki) tworzy obiekty do odczytywania URLa i wczytania na tej podstawie odpowiednich plików Modelu, Widoku i Kontrolera.

Teraz ta część której nie jestem pewny, prawdopodobnie sama filozofia jest rąbnięta, ale już tłumaczę o co mi chodzi...
Następnie gdy mamy wczytany już model, kontroler i widok, aplikacja bierze (jeśli jest coś w url'u) dane do wykonania akcji (wywołania odpowiedniej funkcji) i ją wykonuje.

W widoku mam link, który podaje do url'a dane do akcji. Akcja zostaje wykonana, jednak, aby zobaczyć zmiany muszę ręcznie odświeżyć stronę, bo wszystko dzieje się na pliku index.php i nie odświeża mi go podczas klikania na link.

Teraz pytanie, co można z tym zrobić, aby hulało? Próbowałem z header ale wyskakuje błąd, że nie można przekierować na stronę która jest obecnie wczytana. Za jakiekolwiek wskazówki, podpowiedzi będę bardzo wdzięczny.
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.