[PHP]...jezeli zmienna nieisnieje?


(Exorf) #1

Witam! Mam stronę z funkcją GET, która dostarcza informację id. Id określa stronę, która się wyświetla lecz jak napisać warunek, który będzie się opierał na tym, że ktoś wyświetlił stronę bez podania id??(np. zamiast index.php?id=home wpisał sam index.php) Jaką wartość ma w tedy id?


(Animologic) #2

niema wartości ID,

<?php switch ($_GET['id']){

		default:

		include ("folder/home.php");

		break;

		case home:

	  	include ("folder/home.php");

		break;

?>

zamiast case ... trzeba wpisać default. i to oznacza co domyślnie będzie się otwierało o otwarciu (w tym przypadku) index.php


(Exorf) #3

Nie rozumiesz mnie.... Mam coś takiego:

$_GET['id']=$page;

$page wykorzystuje potem wielokrotnie, lecz chcę napisać coś takiego:

if ($page==FALSE){

$page='home';

}

Tylko, że FALSE w tym wypadku jakoś nie działa....


(Anddezr+Dobreprogramy Pl) #4
if (isset($_GET['id'])) 

   $page=$_GET['id']; 

else $page='home';


include($page.'.php');

(Exorf) #5

nie wiedziałem o isset :smiley: Dzięki za poinformowanie bo szukałem z empty.


(Marcin E Pc) #6

Tak ale może być adres typu index.php?id= i wtedy zmienna istnieje ale jest pusta, i co wtedy?

Ja bym zrobił tak:

if(empty($_GET['id'])!=0 )

{

include ......;

}

else

{

include 'default.php';

}

(Anddezr+Dobreprogramy Pl) #7

Twoje rozwiązanie też jest błędne, wyskoczy błąd. I nie empty($_GET['id'])!=0 tylko !empty($_GET['id']). Ale i tak przy isset i empty wywali błąd. Przy !empty gdy id?=blabla, przy isset zarówno gdy id?=blabla, i id jest puste.

Lepszym rozwiązaniem jest (oczywiście nie idealnym)

$plik=$_GET['id'];

  if (isset($plik) && file_exists($plik.'.php'))

      $page=$plik; 

  else $page='home';

  include($page.'.php');

(Marcin E Pc) #8

z empty zarówno pierwsza i druga konstrukcja poprawna, i nie isset(); tylko empty(); i wtedy sprawda czy $_GET['id']; jest niepusta. Dla isset wystarsczy e zadeklarujemy sobie $plik=; i już zwróci true.