Autor Zpráva
sailen
Profil
Dobrý den, pokusila jsem se napsat svou první funkci v PHP, ale nefunguje (přesněji nehlásí žádné errory, ale také nevypíše požadovaný text). Jde o menu, které na další stránky vkládám pomocí include. Stránky se nacházejí ve třech úrovních adresářů, tudíž na každý dokument existují z různých míst tři varianty relativních odkazů a já potřebuji, aby fungoval ten správný. Podařilo se mi sepsat kód, který to řešil, ale protože bych ho musela u každého odkazu opisovat, chtěla bych to řešit funkcí. Ta bohužel nefunguje a na webu jsem řešení nedohledala.

 <!-- obdobný funkční kód //-->

      <br>  <?php
              $recenze_odkaz1 = "clanky/recenze.php";
              $recenze_odkaz2 = "recenze.php";
              $recenze_odkaz3 = "../recenze.php";

              if(file_exists($recenze_odkaz1)) echo "<a href=" . $recenze_odkaz1 . ">";
              elseif(file_exists($recenze_odkaz2)) echo "<a href=" . $recenze_odkaz2 . ">";
              elseif(file_exists($recenze_odkaz3)) echo "<a href=" . $recenze_odkaz3 . ">";
            ?>
        Recenze</a>

      <!-- deklarace funkce na stejném principu //-->

      <?php
      function vyber_funkcniho_odkazu($nazev_stranky) {

      $odkaz1 = "clanky/" . $nazev_stranky . ".php";
      $odkaz2 = $nazev_stranky . ".php";
      $odkaz3 = "../" . $nazev_stranky . ".php";
              // načte všechny možnosti do proměnných

      if(file_exists($odkaz1)) echo "<a href=" . $odkaz1 . ">";
      elseif(file_exists($odkaz2)) echo "<a href=" . $odkaz2 . ">";
      elseif(file_exists($odkaz3)) echo "<a href=" . $odkaz3 . ">";
              // vybere správnou možnost a použije ji v odkazu
      } ?>

      <!-- vyvolání funkce, které nevrátí žádný výsledek //-->

      <br><?php vyber_funkcniho_odkazu('uvaha'); ?>

          Úvahy, fejetony</a>

Jsem úplný začátečník, takže se omlouvám za fatální chyby a prosím o radu.
ShiraNai7
Profil
sailen:
Doporucuji spis definovat konstantu smerujici do "rootu" nebo zmenit aktivni adresar. Testovat vsechny mozne varianty neni moc dobry postup.
sailen
Profil
ShiraNai7:
Aha, tak to je pro mne úplně nová varianta. Takže potom by kód měl vypadat nějak takhle? Ono to sice zadá zcela správnou cestu k souboru, ale potom to hlásí "Typ adresy je neznámý nebo není podporován", takže na domácím počítači nevím, jestli to funguje,

<br><?php echo "<a href=" . $_SERVER['DOCUMENT_ROOT'] . "/clanky/uvaha.php>" ?>

          Úvahy, fejetony</a>

A jinak jsem zjistila, že můj původní kód je funkční, jenom stačilo dát odkazovaný soubor na své místo (předtím jsem zapomněla).
Alphard
Profil
sailen:
Stačí vést relativní adresy z rootu. Např. /clanky/recenze.php Máte-li doménu example.com, takováhle adresa bude z jakéhokoliv místa směřovat na example.com/clanky/recenze.php
sailen
Profil
Ok. Děkuji, vyřešeno.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0