Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] podwójne ładowanie: if(!isset..
Forum PHP.pl > Forum > Przedszkole
M@X
Witam.
Mam strone w postaci:
TOP
MENU
i poniżej dwie wersje okna głównego:
albo: z dwiema kolumnami
albo: z trzema kolumnami
zrobiłem to na zasadzie includów:
  1. <?php 
  2. if(!isset($ver)) $ver = 1;
  3. if($ver == 1 || $ver == 2) include "ver1.php";
  4. elseif($ver == 20 || $ver == 21) include "ver2.php";
  5. ?>

i wchodzac na strone .../index.php ładuje mi się standardowo index.php?ver=1
ale w pliku ver1.php mam kolejne includy:

  1. <?php
  2.  if(!isset($pid)) $pid = 1;
  3. elseif($pid == 1) include "mods/aktualnosci.php";
  4. elseif($pid == 2) include "mods/artykuly.php";
  5. else echo('');
  6. ?>

i tutaj już pojawia się problem bo nie chce ładować standardowo ?pid=1
Po wejściu w .../index.php ścieżka powinna wyglądać tak: .../index.php?ver=1&pid=1
Ktoś wie jak uzyskać taki efekt ?
potreb
  1. <?php
  2. $ver = $_GET['ver'];
  3. if(!isset($ver)) $ver = 1;
  4. ..................................................................
  5.  
  6.  
  7. $pid = $_GET['pid'];
  8. if(!isset($pid)) $pid = 1;
  9. .................................................................
  10. ?>
M@X
niestety nie o to chodzi...
te dwie linijki mam już uwzględnione w pliku index.php...

z resztą nawet jak dodaje tak jak napisałeś to i tak dalej nic nie daje...


Jakieś inne sugestie ?
arecki
Jeżeli dobrze zrozumiałem (chociaż jakoś tego nie czuje smile.gif) to Twój problem polega na tym że zmienną $ver ostawiasz w pliku index.php a zmienną $pid ustawiasz z pliku includowanym a chciałbyś aby zmienne te były już widoczne w URL'u zanim zaincludujesz pliki ? Jeżeli tak to nie pozostaje nic innego jak sprawdzanie warunków dotyczących zmiennej $pid przenieść do pliku index.php.

Jeżeli źle Ciebie zrozumiałem to przepraszam i proszę o bardziej szczegółowe wyjaśnienie tongue.gif.
Grzyw
Opisz M@X dokładniej problem, bo mamy problem ze kminieniem, o co chodzi.
Pamiętaj, że nie ma sensu przesyłać w URL'u zmiennych z includowanymi plikami. To nie jest, że PHP jest do bani, nie pozwala na przykład na:

  1. <?php
  2. include('costam.cos?ale=walek');
  3. ?>


Bo i po co przesyłać coś przez HTTP, skoro masz do tego dostęp z poziomu skrypty. Include tylko "wkleja" kod, więc jeżeli masz:

  1. <?php
  2. $ale = 'walek';
  3. include('costam.coc');
  4. $nowaWartosc = funkcjaIncludowanaZcostam($ale); # Tu masz dostep do zmiennej, którą chciałeś doklejać do URL'a :)
  5. ?>
M@X
hmmm chyba dobrze mnie zrozumiałeś.. chociaz ja sam chyba ciebie nie do konca zrozumiałem smile.gif
tak naprawde to gdy łąduje strone .../index.php powinno w standardzie załadować $ver któa jest w pliku index.php oraz zmienną: $pid która jest w includowanym pliku.
Myślałem że to powinno tak działać: if(!isset
ale ładuje tylko pierwszą zmienną...
arecki
Nie możesz zobaczyć zmiennej, w pliku index.php która pochodzi z innego includowanego pliku PRZED zaincludowaniem go. Takie rzeczy to tylko w Erze smile.gif Może w wersji PHP 9.2.19 będzie moduł wróżki. Zrób sobie plik np. config.php w ktorym będziesz ustawiał domyślne wartości i includuj go przed wszystkimi działaniami i wtedy w każdym następnym załączanym pliku będziesz miał do tych zmiennych dostęp.
M@X
chyba zrozumiałem że jednak to o co mi chodzi jest niemożliwe... :/
ale można troszke bardziej wyjaśnić tego config.php ? co i jak tam załadować ?
arecki
To był taki tylko obrazowy przykład aby pokazać że można zrealizować to co chcesz w inny sposób. Generalnie nie wiem co Ci się nie podoba w URL'u że koniecznie musi mieć podane oba warunki...
M@X
Wszytsko jest ok.. i wlasnie o to mi chodzi aby miał obydwa warunki w postaci: .../index.php?ver=1&pid=1
jeśli sie wpisze taki adres w przeglądarce to wszystko jest ok...
ale cały problem w tym że po wpisaniu w przeglądarce samego: .../index.php nie łąduje standardowo tych dwóch zmiennych.. tylko pierwszą...
arecki
W takim bądź razie musisz teraz się zastanowić w którym miejscu potrzebujesz zmiennej $pid. Bo jeżeli sprawdzasz ją tylko w pliku ver1.php to nie ma problemu. Możesz zostawić tak jak jest. A jeżeli wykorzystujesz ją w innych plikach załączanych przed include('ver1.php'); to musisz sprawdzenie zrobić wcześniej.
potreb
  1. <?php 
  2. $ver = $_GET['ver'];
  3. if(!isset($ver)) {include "ver1.php";}
  4. if($ver == 1 || $ver == 2) {include "ver1.php";}
  5. elseif($ver == 20 || $ver == 21) {include "ver2.php";}
  6. ?>
  7.  
  8. <?php 
  9. $pid = $_GET['pid'];
  10. if(!isset($pid)) {include "mods/aktualnosci.php";}
  11. elseif($pid == 1) {include "mods/aktualnosci.php";}
  12. elseif($pid == 2) {include "mods/artykuly.php";}
  13. else {echo 'cos';}
  14. ?>


Tak ma być okey.
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.