Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Podstrony na podstawie zmiennych $_GET
Forum PHP.pl > Forum > Przedszkole
annalisa
mam problem z predefiniowanymi tablicami GET i POST
nie wiem jak do jednej strony php podłączyc inne tak żeby po kliknięciu na link tamte się otwierały, na zajęciach tworzyliśmy takie coś
Kod
<?
if (!array_key_exists('zalogowany',$_GET) || $_GET["menu"]==="info") {
echo "<b>Informacje </b
else {
echo "<a href=\"strona.php?menu=info\">Informacje </a>";
}
echo "
";
if (!array_key_exists('menu',$_GET) || $_GET["menu"]==="opis") {
echo "<b>Opis</b>";
} else {
echo "<a href=\"strona.php?menu=opis\">Opis kursu</a>";}
echo "
"; if (array_key_exists('menu',$_GET) && $_GET["menu"]==="zaliczenie") {
echo "<b>Warunki zaliczenia</b>";
} else {
echo "<a href=\"strona.php?menu=zaliczenie\">zaliczenia</a>";
}
echo "
";
if (array_key_exists('menu',$_GET) && $_GET["menu"]==="prot{
echo "<b> prot</b>";
} else {
echo "<a href=\"strona.php?menu=prot\"> projekty</a>";
}
echo '';
if (array_key_exists('zalogowany',$_SESSION) && $_SESSION["zalogowany"]===1) {
echo "<a href=\"strona.php?menu=logowanie&zalogowany=0\">Wyloguj</a>";
} else {
if (array_key_exists('menu',$_GET) && $_GET["menu"]==="logowanie") {
echo '<b>Logowanie</b>';
} else {
echo "<a href=\"strona.php?menu=logowanie\">Logowanie</a>";

}
?>

tyle że to nie działa a ja wolałaby żeby ja głównej stronie były po prostu zwykłe odnośniki do podstron *.php
albo żeby coś w tym stylu działało tylko nie wiem jak to zrobić...
a co do Posta to potrzbuje go jakkolwiek użyć tylko że zawsze pojawia mi się coś nie zdefiniowanego i nie wiem jak sobie z tym poradzić
osl
po pierwsze, witam na forum winksmiley.jpg
po drugie, bbcode.
po trzecie - Twój opis jest nieco chaotyczny.
Co konkretnie nie działa?
Podstrony *.php - czyli każda podstrona w osobnym pliku php? Póki co widać, że wszystko jest na jednej stronie i taki kod rzeczywiście może być trudny do utrzymania...

Ale więcej dokładnego opisu prosze winksmiley.jpg
annalisa
przepraszam za to ale po prostu php mnie trochę przytłacza.
chodzi mi o to że mam zrobione wszystkie podstrony bo musiałam zacząć od html. i chciałabym teraz to połączyć.
tylko że nie do końca wiem jak to zrobić. czy musze to zrobić wklejajać wszystko na jedną stronę czy też da się to zrobić za po mocą kodów?questionmark.gif
osl
na początek tak może bardziej łopatologicznie - nie powinno się tak robić dla stron 'live', ale tu podejrzewam że jest potrzebne jakieś zaliczenie winksmiley.jpg
Skoro masz strony w HTMLu, znajdź w nich takie fragmenty które się powtarzają (np. sekcja head, układ strony).
Możesz to wywalić do osobnych plików, np. head.php.
potem w 'głównej' stronie wrzucasz w odpowiednie miejsca coś w guście:
  1. <?php
  2. include "head.php";
  3. ?>


w ten sposób masz wspólną część stron w jednym pliku.
Dalej, zawartość dla poszczególnych podstron ("główna zawartość") wrzucasz do innych plików php (w sumie HTML też się nada), a w stronie głównej doklejasz odpowiedni fragment kodu.

Nie rozpisuje się dalej, bo nie jestem pewny czy o to chodzi smile.gif
Poza tym dalej nie wiem co nie działa (pierwszy post) smile.gif
annalisa
zaczynam coś tam rozumieć tylko mam problem z kodem jak dać wyświetl to jeśli naciśnie ten przycisk:
Kod
if (!array_key_exists('menu',$_GET) || $_GET["menu"]==="opis") {
echo "<b>Opis</b>";
} else {
echo "<a href=\"strona.php?menu=opis\">Opis </a>";}

i wcześniej mi się pojawiało że nie mam zdefiniowanego menu i ajk je mam zdefiniować oraz czy zamiast
Kod
else {
echo "<a href=\"strona.php?menu=opis\">Opis </a>";}

mam dodać to co mi napisałeś questionmark.gif
wizard144
Hmmm ja mam u siebie zrobione w ten sposób smile.gif ->

plik index.php

CODE

<?php
include("gora.php"); //head, info o stronie i takie tam, cały "górny" html

include("srodek.php"); // instrukcja switch pobiera dane z tablicy GET itd smile.gif

include("dol.php"); // Stopka , ob_end_flush() itd...
?>



plik gora.php

CODE

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Windows-1250">
<link rel="STYLESHEET" type="text/css" href="style.css">
<META NAME="description" CONTENT="">
<META NAME="Copyright" CONTENT="">
<META NAME="Author" CONTENT="">
<TITLE>Tytuł Strony Internetowej</TITLE>
</HEAD>
<body>
<center>
<table class="tabelaGlowna" cellspacing="0" cellspanding="0">
<tr>
<td colspan="2"><img src="grafika/.gif"></td>
</tr>
<tr>
<td class="tdMenu">
MENU
<hr />
<a href="?id=start">Start</a><hr>
<a href="?id=rejestruj">Rejestracja</a><hr>

...

</td>



srodek.php

CODE


<td class="tdSrodek">
<table class="tabelaSrodek">
<?php

switch($_GET['id']) // pobiera id z adresu
{
case index:include("start.php");break; // jeśli id= index
case rejestruj:include("rej.php");break; // jeśli id=rejestruj
default :include("start.php");break; //
}

?>
</table>
</td>



Pliku trzeciego nie podaje bo jest nie potrzebny, zamyka tylko tabele itd...

Jeśli dobrze zrozumiałem to o coś takiego Ci chodziło ? myślę że ze zmienną z tablicy POST nie ma sensu sie bawić...

Pozdrawiam!

EDIT:

Co do zmiennej z Postem zrób może formularz kontaktowy na stronie czy coś

P.s

Mam nadzieję że dobrze zrozumiałem Twój problem....
annalisa
no mniej więcej o to tylko czy zamiast tego id moge użyć czegoś innego czy też będe musiała to definiować?
wizard144
Słuchaj ogólnie link to przykładowo

CODE

<a href="index.php?page=opis">

//nazwa zmiennej to może być coś dowolnego np 'page', 'strona', 'id', tak samo jak wartosc tyle tylko że...

switch($_GET['page'])
{
case opis :include("opis.php");break;

default :include("start.php");break;

}



teraz tak...

tą instrukcję ze switchem wstawiasz w miejscu w którym chcesz żeby zmieniała się treść (czyli no zależnie od układu strony, powiedzmy po środku)

Po kliknięciu w link adres przeglądarki będzie posiadał zmienną $_GET['page'] o wartości (w w/w przypadku) "opis"

Switch zobaczy że jest zdefiniowana taka zmienna i przyporządkuje do niej odpowiedni plik - zaincluduje go smile.gif

jedyne co trzeba tu definiować to

A: Linki -zmienne itd
B: Instrukcję switchowania (czyli co ma wczytywać kiedy, przy jakiej zmiennej etc)

Jak by być upartym to można ew i zmienne linkowe i zmienne switchowe wrzucić do bazy danych i wybierać, oszczędność w pisaniu kodu przy dużych projektach itd smile.gif

A co do tego POST-a

Użyć w jakikolwiek sposób hmmm...

To ma być na jakieś zaliczenie więc może wystarczy zwykły formularz z wysłaniem wyników np na maila (jakaś ankieta typu "czy podoba Ci sie mój projekt?") Przyciski Radio, albo lista Select smile.gif no i to ja to tak widzę jak coś to mogę coś takiego napisać jeśli chcesz smile.gif, choć wskazane jest dawanie wskazówek a nie gotowców smile.gif
annalisa
już prawie wszystko działa tylko pojawia się komunikat: że mam nie zdefiniowaną stałą opis?
jak mam ją zdefiniować?
wizard144
Yyyy... Wiesz co, miałem kiedyś podobny błąd, ale tkwił on nie w tym switchu całym czy w tej stałej tylko w zupełnie innym miejscu skryptu.

poza tym to nie jest stała tylko wartosc zmiennej page smile.gif
annalisa
no bo wiesz pojawia mi się taki komunikat:
Cytat
"Use of undefined constant ciekawostki - assumed 'ciekawostki'"

i tak do każdego
wydaje mi się że ja hyba zrobiłam jakiś błąd bo zależy co nacisne.
jeśli jest pierwsze to tylkojeden taki błąd a jeśli kolejne to więcej podobnych...
wizard144
robi więcej bo przechodzi przez wszystkie case'y. Sprawdza po kolei warunki i wyrzuca błędy. Błąd musi być gdzieś w zapisie głównego skryptu który to wszystko wyświetla i wczytuje. I pewnie to jest jakiś drobny błąd znając życie a robi tyle zamieszania że szok. Pamiętam że też coś takiego mi wyskoczyło jak robiłem jakieś zmiany w grze, includowałem plik i coś nie tak było. Ale nie pamiętam dokładnie. Musisz przeanalizować cały kod (wcześniejszy, ten główny) to napewno dojdziesz do tego co jest grane i co jest źle smile.gif Więcej zrobić nie mogę.

w ostateczności, żeby nie wyrzucało błędów to można dodać "@"

np:

@case 1: include("blabla.php");break;

powinno pomóc z wyrzucaniem błędu ale to żadne rozwiązanie...

dlatego lepiej przeanalizować jeszcze kod głównego skryptu
annalisa
ok dziękuje wstydnis.gif
znalazłam bład brakowało mi cudzysłowu po każdy case tak miało być
case 'opis'
wizard144
Swoją drogą ciekawe smile.gif Bo ja tych "ciapków" nie mam i mi działa smile.gif może inna wersja php na serwerze smile.gif

W każdym bądź razie polecam się na przyszłość smile.gif

Pozdrawiam!
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.