Diskuze: if(isset($_GET - 2x

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

Avatar
M.Szwed
Člen
Avatar
M.Szwed:

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. září 13:21
Avatar
Oxtimus
Člen
Avatar
Odpovídá na M.Szwed
Oxtimus:

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. září 16:11
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 9. září 16:10
Avatar
M.Szwed
Člen
Avatar
Odpovídá na Oxtimus
M.Szwed:

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. září 17:40
Avatar
hitzoR
Člen
Avatar
hitzoR:

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. září 15:56
Avatar
mkub
Redaktor
Avatar
Odpovídá na M.Szwed
mkub:

nabuduce treba pouzit tlacitko "vlozit kod"

 
Nahoru Odpovědět 11. září 10:09
Avatar
M.Szwed
Člen
Avatar
Odpovídá na Oxtimus
M.Szwed:

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

 
Nahoru Odpovědět 12. září 20:00
Avatar
M.Szwed
Člen
Avatar
 
Nahoru Odpovědět 12. září 20:01
Avatar
M.Szwed
Člen
Avatar
Odpovídá na hitzoR
M.Szwed:

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. září 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.