Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[php] Nieaktywna pozycja w menu

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

[php] Nieaktywna pozycja w menu

Post 02.04.2003, 17:12:05

Witam!

Przeszukałem niniejsze forum w poszukiwaniu rozwiązań menu opartym na PHP. Jest podanych troche prostych przykładów opartych o "include".

Wszystko OK, tylko, ja bym chciał zrobić tak, żeby po kliknięciu na link, który zmieni środkową zawartość pliku "index.php", ten link, wskazujący aktualnie odwiedzaną stronę był nieaktywny. Czyli po prostu tak, jak w HTML-u zastępuje się link na stronie aktualnie przeglądanej, zwykłym tekstem, na który nie można kliknąć.

Czyli moje pytania:
1. Jak wykonać w PHP "nieaktywną" pozycję menu?

Drugie pytanie przy okazji pokrewne:
2. Czy da się jakoś zrobić, żeby tytuł strony wyświetlany w górnym pasku przeglądarki (znacznik <title>) był inny dla każdej podstrony, jeśli menu witryny jest oparte na "systemie include", gdzie zmienia sie jedynie środkowa zawartość strony.

Mam nadzieję, że w miarę jasno opisałem moje problemy.

Pozdrawiam i góry dzięki za pomoc.
maro
Posty: 16
Dołączył(a): 18.09.2002

Post 02.04.2003, 17:31:59

Co do drugiego pytania, to stwórz sobie plik, powiedzmy navigator.php i zapisz w nim
Kod: Zaznacz cały
<?
if ($action==download) echo "Download";
else if ($action=="dfaq") echo "Download F.A.Q.";
else if ($zly_link) echo "Zgłaszanie złych linków";
else if ($action=="pp")   echo "Private Policy";
else if ($rom_details) echo "Detale na temat romu";
else if ($action=="dodaj_opis")   echo "Dodawanie opisu";
?>
Odpowiednio zmodyfikowany oczywiscie zeby korzystal z uzywanych przez Ciebie zmiennych i includuj go w znaczniku TITLE.
Avatar użytkownikaBTM
Bartosz Szczeciński

No Life
No Life

Posty: 6160
Dołączył(a): 04.07.2002
Lokalizacja: Łódź

Post 03.04.2003, 20:06:38

Dzięki bardzo BTM. Przydało się.

Tylko, co do pierwszego pytania nie mam od nikogo rozwiązania.

Czy ktoś może mi pomóc?

Przecież informowanie w ten sposób użytkownika, którą stronę aktualnie przegląda jest bardzo popularne w Sieci. W HTML-u zawsze takie coś robiłem, a w PHP się nie da?

Czy jest tutaj ktoś, kto by był na tyle mocny w PHP, żeby to rozwiązać? Naprawdę bardzo mi na tym zależy.
maro
Posty: 16
Dołączył(a): 18.09.2002

Post 03.04.2003, 20:24:19

ja mam inne rozwiązanie do 2
po prostu w includowanym pliku wpisujesz <title> a nierobisz tego w pliku do którego inny jest includowany

inaczej:
index.php NIEMA <title>
a w plik który zaincludujesz wbijasz sobie <title>

a 1 można zapętlić to w H****** to jakoś to sie zrobi

powiedzmy że używamy to co BTM napisal i za plik który jest includowany odpowiedzialna jest zmienna $action
menu.php
Kod: Zaznacz cały
<?
... // cos tu jest
if ($action == downlad) {echo 'downlad'} else {echo'<a href="index.php?action=download">Downlad</a>' // i tak dla każdego
... // coś tu jest
?>

Avatar użytkownikamamut
Posty: 1068
Dołączył(a): 15.11.2002

Post 03.04.2003, 21:16:08

maro napisał(a):Dzięki bardzo BTM. Przydało się.
Tylko, co do pierwszego pytania nie mam od nikogo rozwiązania.
Czy ktoś może mi pomóc?
Przecież informowanie w ten sposób użytkownika, którą stronę aktualnie przegląda jest bardzo popularne w Sieci. W HTML-u zawsze takie coś robiłem, a w PHP się nie da?
Czy jest tutaj ktoś, kto by był na tyle mocny w PHP, żeby to rozwiązać? Naprawdę bardzo mi na tym zależy.


Tu nie trzeba być mocnym.
Nie ma jakiejś funkcji która robiła by "niekatywne menu". W kodzie ktory wyświetla twoje menu jest być może coś takiego.
Kod: Zaznacz cały
echo('<a href="omnie.php">Strona o mnie</a>');

wiec zrob warunki dla kazdej z podstron na przykład takie
Kod: Zaznacz cały
if(ereg("omnie.php",$HTTP_SERVER_VARS[REQUEST_URI]))  {
 echo('O mnie');
}
else {
 echo('<a href="omnie.php">Strona o mnie</a>');
}


Poczytaj sobie jakiś kurs. PHP uzywa się m.in. do generowania zawartości stron, czyli sam deklarujesz jaką zawartość w zależności od jakiegoś warunku musisz zbudować.
Avatar użytkownikasmook
Piotr Czyż

straszny

Posty: 2448
Dołączył(a): 08.02.2003
Lokalizacja: Kraków

Post 04.04.2003, 12:51:26

Dzięki za odpowiedzi - ukierunkowały mnie, przetestowałem i działają na takiej zasadzie, jak chciałem.
Tylko, że już w konkretnym zastosowaniu na stronie pojawiają się następujące pewne problemy.

Klikając na link, który ma postać href="index.php?id=dzial" do strony przekazywana jest zmienna $id, która ma wartość "dzial". I tą zmienną można dalej wykorzystywać, ale jest ona dostępna od momentu jest wywołania, czyli od linku, który ją wywołał. A ja potrzebuję ją wykorzystać jeszcze w dwóch miejscach przed jej wywołaniem. Wiem, że nie można użyć zmiennej, której jeszcze nie ma, ale jak to można inaczej rozwiązać, żeby była ona dostępna od samej góry strony.

Konkretnie:
Zmienną $id wywołaną przez link potrzebuję wykorzystać:

1. W znaczniku <title> - sposób BTM wyżej.
(na marginesie: sposób mamuta na <title> jest fajny i prosty, tylko że wtedy znacznik <title> jest includowany gdzieś między <body></body>, a ja jednak wolałbym mieć go w sekcji <head>)

2. W menu w linku, który ją wywołuje, żeby po załadowaniu strony ?id=dzial, ten link zmienił się na "nieaktywny" - wg kodu:
Kod: Zaznacz cały
<?php if ($id == dzial) {echo "Dział";} else {echo "<a href="index.php?id=dzial">Dział</a>";} ?>

w takiej postaci mam teraz linki


Jak można rozwiązać ten problem?
maro
Posty: 16
Dołączył(a): 18.09.2002

Post 04.04.2003, 14:42:14

maro napisał(a):Klikając na link, który ma postać href="index.php?id=dzial" do strony przekazywana jest zmienna $id, która ma wartość "dzial". I tą zmienną można dalej wykorzystywać, ale jest ona dostępna od momentu jest wywołania, czyli od linku, który ją wywołał. A ja potrzebuję ją wykorzystać jeszcze w dwóch miejscach przed jej wywołaniem. Wiem, że nie można użyć zmiennej, której jeszcze nie ma, ale jak to można inaczej rozwiązać, żeby była ona dostępna od samej góry strony.

Jeśli zmienna może przyjmować różne wartości w zależności od linku, to skąd skrypt ma wiedzieć w który link zamierzasz kliknąć? Jeśli dobrze Cię rozumiem. A dostepna jest ona na stronie której adres zawiera już w sobie wyrażenie typu ?id=costam jako $id lub $_GET[id] i trzeba to tylko w odpowiednie miejsce wstawić.

Konkretnie:
Zmienną $id wywołaną przez link potrzebuję wykorzystać:
1. W znaczniku <title> - sposób BTM wyżej.
(na marginesie: sposób mamuta na <title> jest fajny i prosty, tylko że wtedy znacznik <title> jest includowany gdzieś między <body></body>, a ja jednak wolałbym mieć go w sekcji <head>)

To go tam zaincluduj. Przecież to nie jest skomplikowane, tymbardziej, że masz już kod i musisz go wstawić w inne miejsce. Nie oczekuj, że napiszemy ci całą stronę, a Ty zrobisz CTRL-C CTRL-V całości i gotowe. Od tego sa kursy, jesli czegoś tam niema albo jest niejasne odwołujesz się do forum.

2. W menu w linku, który ją wywołuje, żeby po załadowaniu strony ?id=dzial, ten link zmienił się na "nieaktywny" - wg kodu:
Kod: Zaznacz cały
<?php if ($id == dzial) {echo "Dział";} else {echo "<a href="index.php?id=dzial">Dział</a>";} ?>

W tej linii masz błąd w funkcji echo (chodzi o cudzysłowy - zmień na ( {echo "Dział";} else {echo "<a href="index.php?id=dzial">Dział</a>";} ). To świadczy o tym, że nawet nie sprawdzasz co kopiujesz. Działał ci ten kod, czy nawet go nie próbowałeś?

Jak można rozwiązać ten problem?

Popatrzeć do jakiegoś kursu. A serio to ja problemu nie widze, albo Cie nie zrozumiałem.
Ostatnio edytowano 04.04.2003, 14:50:54 przez smook, łącznie edytowano 2 razy
Avatar użytkownikasmook
Piotr Czyż

straszny

Posty: 2448
Dołączył(a): 08.02.2003
Lokalizacja: Kraków

Post 04.04.2003, 14:46:22

Kod: Zaznacz cały
if (!$id) { $id = main; }


jeśli niema podanej wartości id podstawiane jest main chyba o to chodziło :mrgreen:
Avatar użytkownikamamut
Posty: 1068
Dołączył(a): 15.11.2002

Post 05.04.2003, 12:22:43

smook napisał(a):(...) Jeśli dobrze Cię rozumiem.

(...)albo Cie nie zrozumiałem.


No niestety nie zrozumiałeś mnie w ANI JEDNEJ kwestii!

I nie oczekiwałem rozwiązań, z którymi bym zrobił Ctrl-C i Ctrl-V. Skrypty napisałem samodzielnie i potrzebowałem tylko wskazówek.

Co do wstawienia \ przed cudzysłowami, to doskonale o tym wiem. Kod, który napisałem ręcznie na forum (nie kopiowałem ze swojego) miał służyć jako wzór, żeby było wiadomo, o co mi chodzi. Mój rzeczywisty kod na stronie jest bardziej złożony, funkcja echo zawiera znaczniki komórek, klasy styli, zdarzenia onmouseover, onmouseout, onclick. Jak bym to wszystko napisał, łącznie ze wszystkimi znakami \, nie byłoby to zbyt czytelne, a kierowałem się w tym momencie "przejrzystością przekazu treści" i zrobiłem to celowo.

No ale wczoraj w końcu doszedłem do sedna problemu, pozmieniałem skrypty, no i UDAŁO SIĘ. Rozwiązałem kłopot.

Dzięki wszystkim, którzy mnie ukierunkowali w tym poście - przydało się bardzo.

Pozdrawiam.
maro
Posty: 16
Dołączył(a): 18.09.2002


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Bing [Bot], Exabot [Bot], Google [Bot] i 11 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 50892 zarejestrowanych użytkowników.
Najnowszy użytkownik: OrenTenn


Nasi użytkownicy napisali:

  • 936374 wiadomości
  • w 246837 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)