Diskuze: if(isset($_GET - 2x

PHP PHP if(isset($_GET - 2x American English version English version

Aktivity (1)
Avatar
M.Szwed
Člen
Avatar
M.Szwed:9.9.2016 13:21

Nazdárek,
potřeboval bych doladit toto :

<?
if(isset($_GET["p­age"]))
{
if(file_exists('in­c/'.$_GET["pa­ge"].'.php'))
{
include 'inc/'.$_GET["pa­ge"].'.php';
}
else
{
echo 'Nic takového tu není :D';
}
}
else
{
include 'inc/neco.php';

}
?>
Jde mi o to aby nehledal jen ve složce inc ale i v jiné složce.
Budu vděčný za každou pomoc.

 
Odpovědět 9.9.2016 13:21
Avatar
Odpovídá na M.Szwed
Michal Struna:9.9.2016 16:10

Jestliže máš nějaký seznam složek, ve kterých chceš hledat, ulož je do pole a procházej je cyklem:

if (isset($_GET['page'])) {

    $dir = ['inc', 'dalsi-slozka']; // Seznam složek, ve kterých se bude hledat

    for ($i = 0, $l = count($dir); $i < $l; $i++) {
        if (file_exists($dir[$i] . '/' . $_GET["page"] . '.php')) { // Pokud se najde soubor, includuje se a cyklus se zastaví
            include $dir[$i] . '/' . $_GET["page"] . '.php';
            break;
        }

        if ($i === $l - 1) { // Pokud je cyklus ve své poslední fázi a stále se nenašla žádná stránka
            echo 'Stránka nenalezena';
        }
    }
}
Editováno 9.9.2016 16:11
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 9.9.2016 16:10
Avatar
M.Szwed
Člen
Avatar
Odpovídá na Michal Struna
M.Szwed:9.9.2016 17:40

Díky moc hned jak to bude možné odskouším ale věřím že to bude ok ! Super hned mám lepší den.

 
Nahoru Odpovědět 9.9.2016 17:40
Avatar
hitzoR
Člen
Avatar
hitzoR:10.9.2016 15:56

Místo foru použij určitě foreach, tohle akorát zbytečně znepřehledňuje kód.

$dirs = [...]
$return = FALSE;
foreach ($dirs as $dir) {
        if (file_exists($dir . '/' . $_GET["page"] . '.php')) {
                $return = include $dir . '/' . $_GET["page"] . '.php'; // include při nalezení souboru vrací 1, což == TRUE
        }
}
if (!$return)
        echo 'Stránka nenalezena';

Zbavíš se dlouhého a nepřehledného zápisu for, plus k tomu ještě nemusíš psát $dir[$i], ale stačí jen $dir. Navíc jde takhle elegantněji vyřešit ten error při nenalezení stránky.

 
Nahoru Odpovědět  +1 10.9.2016 15:56
Avatar
mkub
Redaktor
Avatar
Odpovídá na M.Szwed
mkub:11.9.2016 10:09

nabuduce treba pouzit tlacitko "vlozit kod"

 
Nahoru Odpovědět 11.9.2016 10:09
Avatar
M.Szwed
Člen
Avatar
Odpovídá na Michal Struna
M.Szwed:12.9.2016 20:00

Ahoj ještě jednou díky funguje perfektně.

 
Nahoru Odpovědět 12.9.2016 20:00
Avatar
M.Szwed
Člen
Avatar
Odpovídá na mkub
M.Szwed:12.9.2016 20:01

ok moje chyba,

 
Nahoru Odpovědět 12.9.2016 20:01
Avatar
M.Szwed
Člen
Avatar
Odpovídá na hitzoR
M.Szwed:12.9.2016 20:08

Takhle?
Teprv začínám ... tak se nesměj :D

if (isset($_GET['page'])) {
$dirs = ['inc', 'dalsi-slozka']
$return = FALSE;
foreach ($dirs as $dir) {
        if (file_exists($dir . '/' . $_GET["page"] . '.php')) {
                $return = include $dir . '/' . $_GET["page"] . '.php'; // include při nalezení souboru vrací 1, což == TRUE
        }
}
if (!$return)
        echo 'Stránka nenalezena';
}
 
Nahoru Odpovědět 12.9.2016 20:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.