Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z menu.
Forum PHP.pl > Forum > PHP
dundey
Mam taki oto problem:
Pisze sobie stronkę w php. Linki w menu mają następującą postać:

http://localhost/Projekt/index.php?page=felietony

W pliku index.php mam taki oto fragment kodu php:

[php:1:d8cd2972ec]<? if(!isset($page)) {
$page="index";
}
if(file_exists("strony/$page.inc")) {
include "strony/$page.inc";
} else {
echo "Strona niedostępna!";
} ?>[/php:1:d8cd2972ec]

Wszystkie podstrony (np. felietony.inc) mam umieszczone w katalogu strony.
I problem polega na tym, że za gdy będąc off-line, czli korzystając z
jakiegoś serwera (korzystawłem w Apache z php, teraz zainstalowałem FoxServ)
po kliknięciu na link ni pokazuje się treść owego pliku o rozszerzeniu *.inc,
tylko za każdym razem ostrzeżenie "Strona niedostępna!", a adres w polu, w
którym wpisuje się adresu pojawia się taki, jaki ma być, czyli:


http://localhost/Projekt/index.php?page=felietony

Więc dlaczego to nie działa!!!
Pomóżcie proszę!!!
Tylko nie piszcie "zainstaluj krasnala" !!!
spenalzo
Cytat
I problem polega na tym, że za gdy będąc off-line, czli korzystając z jakiegoś serwera

1. To off-line czy nie?!
2. Na pewno istnieje taki plik? Sprawdź rozszerzenia.
3. Spróbuj przeczytać TO i zrobić tak:

[php:1:cd30937569]<?php
if(!empty($HTTP_GET_VARS["page"]))
{
$HTTP_GET_VARS["page"]="index";
}
if(file_exists("strony/".$HTTP_GET_VARS["page"].".inc"))
{
include "strony/".$HTTP_GET_VARS["page"].".inc";
}
else
{
echo "Strona niedostępna!";
}
?>
[/php:1:cd30937569]
Poza tym lepiej stosuj rozszerzenie .inc.php, ponieważ nie wszystkie serwery obsługują rozszerzenie .inc - wtedy wszystko widać na dłoni: hasła, loginy itd.
dundey
Już jest lepiej, bo działa jak klikam na linki aaevil.gif

Tylko, że gdy jest taki adres:

http://localhost/Projekt/index.php

Pokazuje się takie coś

Warning: Undefined index: page in d:phpfoxservwwwprojektindex.php on line 49
Strona niedostępna!


Co teraz??
spenalzo
Zrób tak:
[php:1:69449eff2a]<?php
$page=$HTTP_GET_VARS["page"];
if(!empty($page))
{
$page="index";
}
if(file_exists("strony/".$page.".inc"))
{
include "strony/".$page.".inc";
}
else
{
echo "Strona niedostępna!";
}
?>
[/php:1:69449eff2a]
i powinno być OK.
dundey
Teraz wszedzie pisze strona niedostepna, a w indexie nadal to samo
!!
spenalzo
To zapodaj linię nr 49.
dundey
$page="index";
spenalzo
usuń z linii nr 3 (na tej stronie) wykrzyknik (!).
dundey
wszytsko dziala
tylko znowu to na indexie

Warning: Undefined index: page in d:phpfoxservwwwprojektindex.php on line 46
TO JEST INDEX.php
FiDO
Czy $_GET['page'] tez zwraca ten blad?

Wydaje mi sie, ze masz wlaczone pokazywanie nawet bledow typu E_NOTICE w php.ini, bo one wlasnie takie rzeczy pokazuja...

jesli nie chcesz tego zmieniac to sprobuj tak:
[php:1:19016fe374]<?php
$page = (isset($_GET['page']))?$_GET['page']:"index";
if(file_exists("strony/".$page.".inc"))
{
include "strony/".$page.".inc";
}
else
{
echo "Strona niedostępna!";
}
?>[/php:1:19016fe374]
dundey
Wszystko działa, tylko, że w pliku index.php nadal sie pokazuje taki oto błąd:

Warning: Undefined index: page in d:phpfoxservwwwprojektindex.php on line 46

linia 46 to: $page=$HTTP_GET_VARS["page"];

Jeśli ktoś będzie umiał, bardzo proszę o pomoc!



Następnie jest taka oto sprawa:
Wszystkie strony mam umieszczone w katalogu "strony".
i w plików "liga" o rozszerzeniu *.inc chce zrobić
linki do innych stron (o tym samym rozszerzeniu) w katalogu
"strony/historia". I nie wiem jak ma wyglądać kod, który
powinienem wkleić do pliku "liga.inc", oraz jak powinna wyglądać
składnia linku. Podejrzewam, że coś chyba takiego:
<a href=index.php?page=liga&historia=1>plik 1</a>

Bardzo proszę o pomoc.
spenalzo
start -> uruchom
i wpisz "notepad c:windowsphp.ini"
potem odszukaj linijkę
error_reporting = E_ALL
i zamień na
error_reporting = E_ALL & ~E_NOTICE
amen
dundey
Tak własnie mam ustawione... więc questionmark.gif
spenalzo
Ale tą pierwszą czy drugą linijkę?
Jak masz tą drugą to takie ostrzeżenia nie powinny się pojawiać.
KaMeLeOn
Jemu pojawia się ostrzeżenie (warning), a nie notice...
Oznacza, że nie zdefiniowano $HTTP_GET_VARS['page']...
dundey
wiec jak to zdefiniowac questionmark.gif
spenalzo
Ja na próbę dałem sobie E_ALL i pojawiały się takie same błędy. PRzywróciłem tą drugą linijkę i zniknęły...
KaMeLeOn
Cytat
wiec jak to zdefiniowac questionmark.gif

Zainteresuj się funkcją [manual:09b3ca6652]isset[/manual:09b3ca6652]... Na takie błędy jest niezawodna...
dundey
nie rozumiem......
KaMeLeOn
Jeśli przesyłasz jakąś zmienną w URL'u i robisz takie przypisanie musisz pilnować czy zawsze istnieje zmienna $HTTP_GET_VARS['page']. Jeśli na jakiejkolwiek stronie nie używasz jej to pojawia się tego typu warning oznaczający że po prostu nie została ona zdefiniowana...
Można się przd tym zabezpieczyć funkcją [manual:2e38306736]isset[/manual:2e38306736].
Np.
[php:1:2e38306736]<?php
$page = isset($HTTP_GET_VARS['page']) ? $HTTP_GET_VARS['page'] : 1;
?>[/php:1:2e38306736]
Powyższe oznacza: jeśli istnieje zmienna page w URL'u przypisz jej wartość do zmiennej $page, jeśli nie przypisz np. 1...
dundey
w pliku liga.inc dodaj linijkę
include("historia/".$HTTP_GET_VARS["historia"]."inc");
i linki przekazujesz tak
<a href=index.php?page=liga&historia=1>plik 1</a>


Sorry, sorry - nie kapuje!!
FiDO
Cytat
w pliku liga.inc dodaj linijkę
include("historia/".$HTTP_GET_VARS["historia"]."inc");
i linki przekazujesz tak
<a href=index.php?page=liga&historia=1>plik 1</a>


Sorry, sorry - nie kapuje!!

questionmark.gif do siebie piszesz??

Sprawdzales rozwiazanie, ktore podalem Ci na 1 stronie (tu)
bo odnosze wrazenie, ze go nawet nie przeczytales, bo dalej piszesz o swojej wersji skryptu.
spenalzo
Masz plik liga.inc i wstawiasz do niego linijkę która Ci podałem. Tu nie ma więcej co wyjaśniać!!!

Update: FiDO - rozwiązanie podałem mu na GG stąd taka forma :-)
dundey
Czyli mam teraz taki kod tak?

[php:1:886e4f989a]
<?php
$page=$HTTP_GET_VARS["page"];
if(empty($page))
{
$page="index";
}
if(file_exists("historia/".$page.".inc"))
{
include("historia/".$HTTP_GET_VARS["historia"]."inc");
}
else
{
echo "Strona niedostępna!";
}
?>
[/php:1:886e4f989a]


A link taki:

<a href=index.php?page=liga&historia=1>plik 1</a>

To nie wchodzi!!!

Zaraz po otworzeniu pliku liga.inc jest napis: "Strona niedostepna!"

Więc...

P.S. Metoda KaMeLeOn'a nie pokazuje błędu, ale i też nie otwiera podstron!

?>[/php]
KaMeLeOn
Hmm...
Zastanawiam się tylko jak ponazywałeś pliki i gdzie są
umieszczone, bo taka informacja byłaby istotna...
1.
[php:1:b56f84b49b]<?php
$page = ( isset($HTTP_GET_VARS['page']) && !empty($HTTP_GET_VARS['page']) ) ? $HTTP_GET_VARS['page'] : 'index';
?>[/php:1:b56f84b49b]
2. Domyślam się, że domyślna strona "index" jest w katalogu głównym...
[php:1:b56f84b49b]<?php
if( file_exists($page . ".inc") )
{
include($page . "inc");
}
else
if( file_exists("historia/".$page.".inc") )
{
include("historia/".$HTTP_GET_VARS["historia"]."inc");
}
else
{
echo "Strona niedostępna!";
}
?>[/php:1:b56f84b49b]
dundey
index.php -> główny katalog
index.inc -> katalog strony

W pliku liga.inc chce dodać linki, żeby otywierały się strony z katalogu "strony/historia"

Więc jaki i gdzie dać kod?questionmark.gif
KaMeLeOn
[php:1:e7c3289012]<?php
$page = ( isset($HTTP_GET_VARS['page']) && !empty($HTTP_GET_VARS['page']) ) ? $HTTP_GET_VARS['page'] : 'index';

if( file_exists('strony/' . $page . '.inc') )
{
if( ($page == 'liga') && file_exists('historia/' . $HTTP_GET_VARS['historia'] . '.inc') )
{
include('historia/' . $HTTP_GET_VARS['historia'] . '.inc');
}
else
{
include('strony/' . $page . '.inc');
}
}
else
{
echo "Strona niedostępna!";
}
?>[/php:1:e7c3289012]
Resztę już powinieneś sobie wykombinować...
dundey
Heh...
Teraz znowu taki błąd:

Parse error: parse error in d:phpfoxservwwwprojektstronyliga.inc on line 2

Druga linia to:
[php:1:7ec27f2412]
$page = ( isset($HTTP_GET_VARS['page']) ) && !empty($HTTP_GET_VARS['page']) ) ?[/php:1:7ec27f2412]

Nie znam się dobrze na php, więc sam tego nie wykombinuje. oczekuje podania mi tego na tacy!!! Po to tu napisałem, żeby sie tego dowiedzieć! Gdybym umiał to nawet bym tu nie pisał!!
dundey
Kurcze, bardzo mi na tym zalezy...
Bardzo prosze o pomoc!!!
dundey
Dzięki Kameleonowi problem został zażegnany smile.gif
Wielkie dzięki smile.gif
dundey
[php:1:58c06017b2]<?php
$page = ( isset($HTTP_GET_VARS['page']) && !empty($HTTP_GET_VARS['page']) ) ? $HTTP_GET_VARS['page'] : 'index';

if( file_exists('linki/' . $page . '.inc') )
{
if( $page == 'liga' )
{
if( isset($HTTP_GET_VARS['historia']) && file_exists('linki/historia/' . $HTTP_GET_VARS['historia'] . '.inc') )
{
include('linki/historia/' . $HTTP_GET_VARS['historia'] . '.inc');
}
else
{
include('linki/' . $page . '.inc');
}
}
else
{
include('linki/' . $page . '.inc');
}
}
else
{
echo "Strona niedostępna!";
}
?>[/php:1:58c06017b2]

Potrzebuję ten kod przerobić tak, aby otwierał pliki w katalogach umieszczonych w katalogu linki. Chce, aby obsługiwał jeszcze następujące katalogi:
- foto
- ludzie
- publicystyka
spenalzo
Nie, to już lekka przesada.
dundey
Poprawi ktos dla mnie ten kod?
Proszę...
members_of_mayday
[php:1:2af75058db]<?php

$rozsz=".php";
if(file_exists("poczta/$akcja$rozsz")){ //sprawdza czy plik do wstawienia istnieje
include("poczta/$akcja$rozsz");
}
else {
include("poczta/brak$rozsz"); // jesli nie ma pliku, lub parametru wstawia text dla strony glównej
}

?>[/php:1:2af75058db]

tak jest ok
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.