$_GET else?

porostorm

Registered
Код:
 <?php
      switch($_GET['action']) {
      default: include("default.php"); break;
     case "links"; include("n1.php"); break;    
     case "mail"; include("n2.php"); break;
      }
?>
Как в този код да му дам ако се вкарва страница, която не съществува да изведе "Грешка" ?
 
Защо не използваш изразите "else", "else if" и т.н. Много по-лесно е... или поне за мене, никога не съм разбирал тези "case", "switch" и т.н.

eDiT:
Код:
<?
$action=$HTTP_GET_VARS['action'];
if ($action=="") {
header("Location: default.php");
} elseif ($action=="links") {
header("Location: n1.php");
} elseif ($action=="mail") {
header("Location: n2.php");
} else {
header("Location: err.php")
}
?>
Разбира се може да замениш header(location); със include();
 
Пробвай да сложиш тоя код в default.php

<?php
if($_GET['action'])
{
echo "Несъществуваща страница";
}
else
{
echo "Кода на страницата за default";
}
?>
 
porostorm каза:
Код:
 <?php
      switch($_GET['action']) {
      default: include("default.php"); break;
     case "links"; include("n1.php"); break;    
     case "mail"; include("n2.php"); break;
      }
?>
Как в този код да му дам ако се вкарва страница, която не съществува да изведе "Грешка" ?

Изброяваш всички стойности на ГЕТ и за дефолт слагаш echo 'Грешка';

пп
не инклудвай по този начин файловете. Задавай задължително път до файла, иначе ще позволиш инклудването на външни файлове.
И след case, не се ли слага ":"
 
@Slavei Така става кофти, че когато иска да влезне в интекса, ще трябва да напише не index.php, ами index.php?action=default, защото иначе ще се изпълни - echo("Грешка"); И тогава, някой като иска да влезне в сайта му ще трябва да пише например - site.com/?action=default. :? За да е наред всичко трябва да се сложи Intro-страница, на която бутона "Enter" да води в index.php?action=default

Как в този код да му дам...

Wrox Press Professional PHP Programming book каза:
Conditional Statements

Conditional statements allow us to specify blocks of code which will be executed only if certain
conditions are met. PHP provides two conditional constructions. The first is if ... elseif ...
else, which allows us to test a number of expressions and execute statements according to their value. If
we wish to test a single expression against a number of values, PHP also provides a switch ... case
construction which simplifies this operation.
С две думи - няма начин. :?
 
@gLaVoReZa прав си, не се бях замислил.

Честно казано не знам защо толкова иска да изкарва грешка, вместо да реши проблема като препраща към индекса, когато няма такава страница...
Обаче, може да се направи по следната логика:

ако $action е празно -> index (в случая - default.php)
ако има стойност - > инклудва съответната страница
ако за тази стойност няма зададена страница изкарва грешка

едит
махнах, кода.
 
Мхм, не съм казал, че трябва задължително да извежда грешка. Идеята да върне default страницата е даже по-добра но как ще стане?
 
<?php
switch($_GET['action']) {
case "links": include("n1.php"); break;
case "mail": include("n2.php"); break;
default: include("default.php"); break;
}
?>
 
Добре де?

<?php
switch($_GET['action']) {
default: include("default.php"); break;
case "links"; include("n1.php"); break;
case "mail"; include("n2.php"); break;
}
?>

логиката е лесна:

if ($_GET['action']=="links")
{
include("n1.php");
}
elseif ($_GET['action']=="mail")
{
include("n2.php");
}
elseif ($_GET['action']=="forum")
{
include("forum.php");
}
else
{
include("defalt.php");
}

Няма начин да даде нещо друго освен посочениоте файлове.
Ако искате го направете с if - elseif - else
ако искате с switch .
 
mute каза:
<?php
switch($_GET['action']) {
case "links": include("n1.php"); break;
case "mail": include("n2.php"); break;
default: include("default.php"); break;
}
?>

Мут ме изпревари. :)
Именно.
Ето това трябва да е правилното.
Моя начин е същия но с други думи.
Различно превозно средство с еднакъв резултат.
 
porostorm каза:
Мхм, не съм казал, че трябва задължително да извежда грешка. Идеята да върне default страницата е даже по-добра но как ще стане?


Код:
$masiv = array (
    'links' => 'n1.php',
    'mail' => 'n2.php',
	);
$action = $_GET['action'];
if (array_key_exists($action, $masiv)) include('./'.$masiv[$action]);
else include('default.php');

я изпреварили са ме :)
само дето аз ползвам масив, по-удобно е.
опа и моито не работи.... баси днес не ми е ден

едит:
подмених го с работещ.
 
porostorm каза:
И с на муте case и с на админ if пак неще :lol:

опитай с моя
току що го подмених с нов
в стария имаше излишни ИФ-ове
махнал съм и проверката за празен ГЕТ, след като не ти трябва да правиш разлика между празна стойност на ГЕТ и несъщестуваща страница за стойността на ГЕТ
 
$_GET['page'] му е променливата за скрипта за .. странициране и става дублиране..
 
bafitu каза:
$_GET['page'] му е променливата за скрипта за .. странициране и става дублиране..
не ме издавай бе :oops:

Благодаря на всички Ви. Понеже немога да дам на всички Ви по една точка няма да дам на никой.
 

Back
Горе