Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] Problem z Include, $_GET
Forum PHP.pl > Forum > Przedszkole
miku
Witam wstawilem sobie ten kod php w znaczniki tresci "content" bo tu to chyba powinno byc co nie;p? I cos mi to nie dziala bo zamiast wstawiac tylko tresc danej podstrony wczytuje mi wszystkie w tym wypadku 2 bo narazie tyle dodalem jedna po 2.

Kod PHP w tresci:

  1.  
  2. <div id="content">
  3.  
  4. <?php
  5.  
  6. if (empty($_GET['page']))
  7. {
  8. $sPage = 'index.php';
  9. }
  10. else
  11. {
  12. $sPage = basename($_GET['page']);
  13. }
  14. $sFileName = './id/' . $sPage . '.php';
  15. if (!file_exists($sFileName))
  16. {
  17. $sFileName = './id/info.php';
  18. }
  19. include ($sFileName);
  20. {
  21. $sFileName = './id/oferta.php';
  22. }
  23. include ($sFileName);
  24.  
  25. ?>
  26.  
  27. </div>


A tu menu

  1. <a href="index.php?id=home">Home</a>
  2. <a href="index.php?id=info">Informacje</a>
  3. <a href="index.php?id=oferta">Oferta</a>


mam folder "id" i tam plik info.php i oferta.php . I jak pod home podlaczyc index php zeby to bylo dobrze?

Odswiezam. Nikt nie zna rozwiazania :/??
nospor
include ($sFileName);
{
$sFileName = './id/oferta.php';
}
include ($sFileName);
Dwa razy robisz include, przy czym przed drugim razem zmieniasz nazwe pliku to logiczne, że ci dwa razy include wykona.
miku
Czyli jak ten kod ma poprawnie wgladac?

Jak zrobie tak:

  1. <div id="content">
  2.  
  3. <?php
  4.  
  5. if (empty($_GET['page']))
  6. {
  7. $sPage = 'index.php';
  8. }
  9. else
  10. {
  11. $sPage = basename($_GET['page']);
  12. }
  13. $sFileName = './id/' . $sPage . '.php';
  14. if (!file_exists($sFileName))
  15. {
  16. $sFileName = './id/info.php';
  17. }
  18. {
  19. $sFileName = './id/oferta.php';
  20. }
  21. include ($sFileName);
  22.  
  23. ?>
  24.  
  25. </div>


to mi wczytuje na "Oferta" tylko oferte ale jak dam na informacje to mi tez wczytuje oferte

Odswiezam
nospor
O to: $sFileName = './id/oferta.php';
tworzysz bezwarunkowo. Zawsze. Skoro wiec tworzysz to zawsze, to zawsze będziesz wczytywał ten plik.... no pomyśl chwilkę.
miku
Sry ale dlatego pisze tu bo jestem poczatkujacy jesli chodzi o php;) I chodzi mi o to zeby ktos poprostu podal jak to ma wygladac poprawnie bo nie wiem nadal :/
CuteOne
google -> php warunek if else
kadlub
include powinno zawierać się między klamerkami warunku czyli jak warunek jest spełniony to inkludujesz to jak nie to inkludujesz tamto
miku
Ech ok thx za pomoc ale sry ze to powiem, jest to dzial "przedszkole" dla osob ktore zaczynaja z php a wy mowicie do mnie jezykiem ktorego naprawde nie rozumiem smile.gif Mozliwe ze prosciej sie nie da. Ale ja prosilem o wklejenie poprawnego kodu smile.gif
strife
Cytat(miku @ 6.03.2012, 10:37:18 ) *
Ech ok thx za pomoc ale sry ze to powiem, jest to dzial "przedszkole" dla osob ktore zaczynaja z php a wy mowicie do mnie jezykiem ktorego naprawde nie rozumiem smile.gif Mozliwe ze prosciej sie nie da. Ale ja prosilem o wklejenie poprawnego kodu smile.gif

Czego dokładnie nie rozumiesz? Napisz czego nie rozumiesz w wypowiedzi ludzi, którzy chcą Ci pomóc wtedy jest szansa abyś otrzymał jeszcze bardziej szczegółowy opis. Nikt Ci tutaj nie da gotowca. Owszem jest to Przedszkole, dlatego ludzie pomagają Ci zacząć przygodę z językiem PHP. Ale żaden nauczyciel nigdy nie będzie Ci dawał gotowców bo się nigdy nic byś nie nauczył.

Więc jeszcze raz, z czym dokładnie masz problem?

Hint: http://php.net/manual/en/control-structures.if.php
miku
Koledzy wyzej mowili ze tworze bezwarunkowo nie bardzo wiem o co chodzi, 2 kolega podal mi "if else" probowlaem pododawac "if" i miedzy znacznikami "else" ale to nic nie daje, zawarlem tez include miedzy klamerki tak jak kazal 3 kolega i dalej mam to samo ze includuje mi oba pliki zamiast 1 na 1 podstronie 2 na 2:/

.
CuteOne
  1. if (!file_exists($sFileName))
  2. {
  3. $sFileName = './id/info.php';
  4. }
  5. {
  6. $sFileName = './id/oferta.php';
  7. }

widzisz klamerki bez warunku... a powinien być else {}
miku
  1. <div id="content">
  2.  
  3. <?php
  4.  
  5. if (empty($_GET['page']))
  6. {
  7. $sPage = 'index.php';
  8. }
  9. else
  10. {
  11. $sPage = basename($_GET['page']);
  12. }
  13. $sFileName = './id/' . $sPage . '.php';
  14. if (!file_exists($sFileName))
  15. {
  16. $sFileName = './id/info.php';
  17. }
  18. else {
  19. $sFileName = './id/oferta.php';
  20. }
  21. include ($sFileName);
  22.  
  23. ?>
  24.  
  25. </div>


No dodalem else przy tym 2 bo przy tym 1 nie moge bo blad wywala ale mam tylko przy tym 2 to juz mi nie wyswietla obu, ale jest inny problem bo wyswietla mi dzial "info" na obu podstronach oferty tak jak by nie bylo:/
peter13135
Nie chce być złośliwy, ale może zanim będziesz uczył się PHP, poznasz trochę język polski, albo interpunkcje chociaż ? Bo trudno zrozumieć o co Ci chodzi.

A jak tak patrzę na kod, to przypomina mi się taki dowcip:
Kod
Żona prosi męża, informatyka, żeby poszedł do sklepu.
- Idź kup parówki, jak będą jajka, kup dziesięć.
Mąż, informatyk, zadowolony, że dostał nowe zadanie do wykonania, z uśmiechem wchodzi do sklepu i pyta:
- Są jajka?
- Są.
- W takim razie, poproszę dziesięć parówek.


Mianowicie: Najpierw sprawdzasz, czy w $_GET['page'] jest jakaś wartość i w zależności od tego warunku, przpisujesz zmiennej $sPage wartość. Troche to kuleje, bo z góry zakładasz, że w tablic $_GET jest element z indexem 'page'. A co jeśli go nie ma ? A no wtedy będzie błąd (NOTICE raczej), undefined index. żeby sprawdzić, czy zmienna istnieje trzeba użyć isset(). W tym przypadku jeśli isset() zwróci true, to można zakładać, że zmienna nie jest pusta.
Następnie tworzysz zmienną $sFileName z wykorzystaniem $sPage. Fajnie, ale gdy $sPage ma wartość 'index.php', to $sFileName będzie miała wartość : './id/'index.php.php';
Czy jesteś pewny, że taki plik istnieje ?

Idąc dalej, jeśli nie istnieje plik, którego ścieżka znajduje się w $sFileName to includujesz './id/info.php';, a jeśli istnieje to includujesz './id/oferta.php' .
No ale po co w takim razie było konstrukować tą sciężkę w $sFileName z wykorzystaniem $sPage, skoro i tak nie zostanie to wykorzystane questionmark.gif


miku
Teraz ja cie zbytnio nie rozumiem smile.gif ale to dlatego zapewne ze malo wiem. Ogolnie bazowałem na tym przykladzie robiac to. http://phpedia.pl/wiki/Jak_do%C5%82%C4%85c...i_$_GET%3F
peter13135
Cieszy nas to wink.gif
Ale ja niezbyt rozumiem teraz jakiej pomocy oczekujesz. Nie wiem jak Jak mam do Ciebie pisać, żebyś mnie zrozumiał tongue.gif
miku
Ok np. Nie rozumiem 1 rzeczy po co ktos dodaje tematy do "phpedia" ze skryptami ktore nie chodza smile.gif
peter13135
Kto powiedział, że nie chodzą ?
On "chodzi", tylko Ty go popsułeś tongue.gif
miku
Ok niech bedzie ze popsulem.

  1. <?php
  2. switch ($_GET['page'])
  3. {
  4. case 'info':
  5. case 'oferta':
  6. $sPage = $_GET['page'];
  7. break;
  8. case 'index':
  9. default:
  10. $sPage = 'index';
  11. break;
  12. }
  13. $sFileName = './page/' . $sPage . '.php';
  14. include ($sFileName);
  15. ?>


Zrobilem tak dzialaja mi teraz te podstrony dobrze, tylko mam jeszcze jedno pytanie jak ustawic "index.php" jako glowna strone zeby to chodzilo bo podstrony mam w folderze "pages" a index.php na serwerze w glownym "public_html" jak wpisze adres/index.php to bledy sa dopiero jak wejde na podstrone wyswietla sie dana tresc. Ale strona glowna mi nie dziala.

UP.
peter13135
$sPage = './../index';

powinno zadziałać tongue.gif
miku
Ech .. o tym moglem rzeczywiscie sam pomyslec tongue.gif Ok mam ostatnie pytanie i juz cie nie mecze wink.gif Mianowicie na stronie glownej chce miec system newsow "cutenews" i nie wiem jak mam poprawnie dodac kod "cutenews" do tego skryptu od include w index.php

Tu kod od newsow:

<?PHP
$number = "5";
$template = "Nowy";
include("news/show_news.php");
?>

Bo jak sobie tak dodam jako 2 kod php to mi includuje go na kazdej stronie. Podejrzewam ze trzeba to jakos wlaczyc do tamtego kodu i polaczyc ze stroną glowna tylko nie bardzo wiem gdzie i jak.
peter13135
nie wiem czy dobrze rozumiem, ale chyba o coś takiego CI chodzi :
  1. if($_GET['page']=='index')
  2. {
  3. $number = "5";
  4. $template = "Nowy";
  5. include("news/show_news.php");
  6. }
d3ut3r
można np tak:

  1.  
  2. $strona="";
  3. switch ($_GET['page']){
  4.  
  5. case 'news':
  6. $number = "5";
  7. $template = "Nowy";
  8. include("news/show_news.php");
  9. break;
  10.  
  11. case 'info':
  12. $strona="info.php";
  13. break;
  14. case 'oferta':
  15. $strona="oferta.php";
  16. break;
  17. case 'index':
  18. default:
  19. $strona="index.php";
  20. }
  21.  
  22. if ($strona!=""){
  23. include('./page/'.$strona);
  24. }

miku
Cytat(d3ut3r @ 9.03.2012, 11:57:00 ) *
można np tak:

  1.  
  2. $strona="";
  3. switch ($_GET['page']){
  4.  
  5. case 'news':
  6. $number = "5";
  7. $template = "Nowy";
  8. include("news/show_news.php");
  9. break;
  10.  
  11. case 'info':
  12. $strona="info.php";
  13. break;
  14. case 'oferta':
  15. $strona="oferta.php";
  16. break;
  17. case 'index':
  18. default:
  19. $strona="index.php";
  20. }
  21.  
  22. if ($strona!=""){
  23. include('./page/'.$strona);
  24. }



Jak zrobie tak to mi wywala blad "Parse error: syntax error, unexpected T_VARIABLE in C:\xampp\htdocs\index.php on line 80" to jest ta linia $number = "5"; , probowalem ze zmiana " na ' ale nic to nie dało.

W tym od petera probowalem tak

  1. <?php
  2. switch ($_GET['page'])
  3. if($_GET['page']=='index')
  4. {
  5. $number = "5";
  6. $template = "Nowy";
  7. include("news/show_news.php");
  8. }
  9. {
  10. case 'info':
  11. case 'oferta':
  12. $sPage = $_GET['page'];
  13. break;
  14. case 'index':
  15. default:
  16. $sPage = 'index';
  17. break;
  18. }
  19. $sFileName = './page/' . $sPage . '.php';
  20. include ($sFileName);
  21. ?>


Ale tez nic
d3ut3r
  1. $strona="";
  2. switch ($_GET['page']){
  3.  
  4. case 'news':
  5. $strona='news';
  6. break;
  7.  
  8. case 'info':
  9. $strona="info.php";
  10. break;
  11. case 'oferta':
  12. $strona="oferta.php";
  13. break;
  14. case 'index':
  15. default:
  16. $strona="index.php";
  17. }
  18.  
  19. if ($strona!="news"){
  20.  
  21. include('./page/'.$strona);
  22.  
  23. } else {
  24.  
  25. $number = "5";
  26. $template = "Nowy";
  27. include("news/show_news.php");
  28.  
  29. }


heh ciężko tak bez kodu tongue.gif
peter13135
bo do switcha nie wrzuca się warunków :/
Mój kod miał być poza nim.
miku
Tak zrobilem 2 osobne kody w znacznikach PHP

  1. if($_GET['page']=='index')
  2. {
  3. $number = "5";
  4. $template = "Nowy";
  5. include("news/show_news.php");
  6. }


  1. <?php
  2. switch ($_GET['page'])
  3. {
  4. case 'info':
  5. case 'oferta':
  6. $sPage = $_GET['page'];
  7. break;
  8. case 'index':
  9. default:
  10. $sPage = 'index';
  11. break;
  12. }
  13. $sFileName = './page/' . $sPage . '.php';
  14. include ($sFileName);
  15. ?>


I juz dziala ale nie do konca, kazda strona pokazuje sie tylko to co ma byc bez newsow, i na glownej sa newsy tylko ale strona pokazuje sie tylko do newsow nie konczy mi strony, nie ma footera i lewej czesci strony. I jak schodze scrolem w dol to mi to powiela. (Dzieje sie tak tylko na glownej, reszta dziala poprawnie)
Co zauwazylem teraz jak dam adres "localhost/index.php" to mi nic nie dziala wywala mi blad i powiela taki "Notice: Undefined index: page in C:\xampp\htdocs\index.php on line 93

Notice: Undefined index: page in C:\xampp\htdocs\index.php on line 102" te linie to " if($_GET['page']=='index')" i "switch ($_GET['page'])" a jak dam na "Strona glowna" w menu to mam taki adres "http://localhost/index.php?page=index" i wtedy pokazuja sie newsy ale tak jak pisalem brak reszty strony.

up

up

up
peter13135
Pisz po polsku. Używaj częściej znaków interpunkcyjnych, bo brak interpunkcji w połączeniu z Twoją nieznajomością tematu, powoduje, że trudno CIę zrozumieć.
Poza tym, pytasz się o podstawy PHP. Nie lepiej wziąć książkę, albo jakiś tutorial i nauczyć się chociaż podstaw ?

Undefined index, jest dlatego, bo tablica $_GET nie ma indeksu 'page'. Zanim się odwołujesz do tego zmiennej, lub elementu tablicy (który w sumie też jest zmienną), musisz upewnić, że ta zmienna istnieje. A możesz to zrobić za pomocą isset. Pisałem Ci już o tym wcześniej, ale Ty to olałeś, napisałeś, że "nie rozumiem Cię".
Taka pomoc nie ma sensu, skoro Ty nie masz żadnych podstaw programowania i nie jesteś w stanie zrozumieć naszej pomocy.

Nawet na przedszkolu powinno być jakieś minimum. Nie będziemy Cię uczyć pętli i ifów.
miku
No ok srki ale niektore osoby w tych czasach nie mogą sobie pozwolić nawet na zakup książki a z lączem 256kb, szukanie odpowiedniego tutorialu to też wyższa szkoła jazdy, potrzebuje poprostu zrobić 1 strone w php dla siebie i dlatego szukałem tu pomocy. Ale dzięki dużo mi pomogłes może wkoncu dojde do tego jak to poprawić.
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.