Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] GET & switch
Forum PHP.pl > Forum > Przedszkole
krystian1991x
Chciałbym ustawić domyślną wartość get gdy nie jest ona zainicjowana nawet aktualnie mam coś takiego
  1. $site = $_GET['id'];
  2. if($site != "") {
  3. switch($site) {
  4. case $site:
  5. require("$site.php");
  6. break;
  7. }
  8. }

ale za bardzo nie wiem jak to zrobić ;/ i mam jeszcze jeden problem czy da się przekazywać 2 wartości w jednej zmiennej get ?
Benkowik
Cześć.

Nie ustawiaj domyślnej wartości. Jeśli ona nie istnieje daj taki warunek:
  1. if (isset($_GET['id'])) {
  2. // tutaj sprawdzasz jaką wartość ma $_GET['id']
  3. } else {
  4. // tutaj gdy nie istnieje, np. www.adres.com/index.php czy www.adres.com/
  5. }


W jednej zmiennej da się ale jest to niewygodne bo trzeba zrobić sztuczne rozpoznawanie kiedy się kończy pierwsza wartość a zaczyna druga, (np. www.adres.com/index.php?id=abc7def). W tym przykładzie rozdzielnikiem może być 7 ale po co komplikować sobie życie? Lepiej dać dwie zmienne i już:
  1. ..../index.php?id1=abc&id2=def


Pozdrawiam.
krystian1991x
coś mi nie wyszło chyba ^^

  1. if (isset($_GET['id'])) {
  2. switch($site) {
  3. case $site:
  4. require("$site.php");
  5. break;
  6. }
  7. }
  8. else {
  9. switch($site) {
  10. case 'news':
  11. require("news.php");
  12. break;
  13. }
  14. }
  15.  


hmm ?
Wicepsik
bo nie myślisz, dlatego Ci nie działa, popatrz parę razy na kod i zobacz co zrobiłeś
krystian1991x
nie wiem sciana.gif
PlayKiller
Po co switch skoro jest tylko jedna opcja? Opisz dokładnie co to ma robić...


z:
  1. if (isset($_GET['id'])) {
  2. switch($site) {
  3. case 'site':
  4. require($site.'.php');
  5. break;
  6. }
  7. }
  8. else {
  9. switch($site) {
  10. case 'news':
  11. require('news.php');
  12. break;
  13. }
  14. }


bez:
  1. if (isset($_GET['id'])) {
  2. require($site.'.php');
  3. }
  4. else {
  5. require('news.php');
  6. }
krystian1991x
to pobiera z pliku tpl zmienną get np news potem w switch pobiera news.php do pliku index i ładuje to w pliku index.tpl do include jako podstrone teraz chce aby domyślnie gdy wejdzie ktoś na strone wczytało mu news.tpl smile.gif
PlayKiller
Robisz w ten sposób:

  1. switch ($_GET['id']) {
  2. case "nazwa":
  3. require("nazwa.php");
  4. break;
  5.  
  6. case "nazwa2":
  7. require("nazwa2.php");
  8. break;
  9.  
  10. case "nazwa3":
  11. require("nazwa3.php");
  12. break;
  13.  
  14. default:
  15. require("nazwa1.php");
  16. break;
  17. }


Pod konkretne wartości (nazwa, nazwa2, nazwa3) podstawiasz wartości zmiennej ID i przypisujesz im nazwę pliku który mają wczytywać np.

  1. case "strona_glowna":
  2. require("home.php");
  3. break;


default wykonuje się, gdy żadna z podanych wartości nie została podana lub po prostu jest pusta.
krystian1991x
nie działa
  1. $site = $_GET['id'];
  2.  
  3.  
  4. switch($site) {
  5. case $site:
  6. require("$site.php");
  7. break;
  8. default:
  9. require("news.php");
  10. break;
  11. }


nie moge dodawać każdej podstrony osobno bo jest to niewygodne jak jest ich więcej a na 5 czy 15 się nie kończy ...
PlayKiller
Nie działa bo źle robisz... najlepiej zrób tak:

  1. if (isset($_GET['id'])) {
  2. require($_GET['id'].'.php');
  3. }
  4. else {
  5. require('news.php');
  6. }
krystian1991x
zamiast strony domyślnej news.php pojawia się teraz taki błąd smile.gif dopiero jak wprowadze wartość do zmiennej get np news to wtedy dopiero wczytuje news.php
Cytat
Fatal error: Uncaught exception 'Exception' with message 'Unable to load template file '.tpl'' in /home/edesing/public_html/libs/sysplugins/smarty_internal_template.php:167 Stack trace: #0 /home/edesing/public_html/libs/sysplugins/smarty_internal_template.php(538): Smarty_Internal_Template->isExisting(true) #1 /home/edesing/public_html/templates_c/c0360d049dff10f364dfc53ba2cc3958abf6ee6d.file.index.tpl.php(52): Smarty_Internal_Template->getRenderedTemplate() #2 /home/edesing/public_html/libs/sysplugins/smarty_internal_template.php(425): include('/home/edesing/p...') #3 /home/edesing/public_html/libs/sysplugins/smarty_internal_template.php(542): Smarty_Internal_Template->renderTemplate() #4 /home/edesing/public_html/libs/Smarty.class.php(339): Smarty_Internal_Template->getRenderedTemplate() #5 /home/edesing/public_html/libs/Smarty.class.php(383): Smarty->fetch('index.tpl', NULL, NULL, NULL, true) #6 /home/edesing/public_html/index.php(22): Smarty->display('index.tpl') #7 {main} thrown in /home/edesing/public_html/libs/sysplugins/smarty_internal_template.php on line 167


ha działa ostateczne rozwiązanie to
  1. if (!isset($_GET['id'])) { $_GET['id'] = 'news'; }
  2. $site = $_GET['id'];
  3.  
  4. if($site != "") {
  5. switch($site) {
  6. case $site:
  7. require("$site.php");
  8. break;
  9. }
  10. }
Wicepsik
  1. switch($site) {
  2. case $site:
  3. require("$site.php");
  4. break;
  5. }


Wiesz co ten kod robi? Bo ja wiem, że nie wiesz haha.gif
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.