IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: if(isset($_GET - 2x

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
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
Michal
Člen
Avatar
Odpovídá na M.Szwed
Michal: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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
9.9.2016 16:10
Avatar
M.Szwed
Člen
Avatar
Odpovídá na Michal
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
10.9.2016 15:56
Avatar
mkub
Tvůrce
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
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.