Autor Zpráva
janek007
Profil
Zdravím,

měl bych takový dotaz, který sice vím čím je zapříčiněn, ale zajímalo by mě, jestli existuje nějaké obecně používané řešení.

mám soubor index.php kde si načtu přes include sobor config.php kde se includujou další php soubory s funkcema např. pro připojení do MySQL.
pak mám include hlavičky, souboru s obsahem podle zvolené stránky a patičky. Právě v hlavičce mám jquery funkci na fulltext dynamické vyhledávání, kde se živě zobrazují výsledky odpovídající začátku.
A právě tady je ten problém, jelikož jquery.load volám konkrétn php soubor a né index chybí mu ty funkce které se volají v index.php. Jak to nějak elegantně pořešit?
Mě jako lajka napadá založit proměnnou $config a testovat jí na hodnotu true a pokud nebude, tak znovu načíst soubor config.php.

index.php
require(__DIR__ . "/config.php");

if ($_GET["o"]) {
  $o = $_GET["o"];
} else {
  $o = "recepty";
}  

include(__DIR__ . "/inc/header.php");

?>

        <div class="article">
        
<?php include(__DIR__ . "/page/$o.php"); ?>        
                  
        </div>

        <p class="pages"><small>Stránka 1 z 2</small> <span>1</span> <a href="#">2</a> <a href="#">&raquo;</a></p>

<?php include(__DIR__ . "/inc/footer.php"); ?>

script v header na živé vyhledávání
<script>
$(document).ready(function(){
  $("#editbox_search").click(function(){      
      if ($(this).val() == "Vyhledat recept:") {        
        $(this).val("");
      }
  });

  $('#editbox_search').keyup(function() {
    $(".article").empty();
    $(".article").load("page/recepty.php?s=" + $(this).val());    
  });  
});
</script>

Děkuji
juriad
Profil
janek007:
Jednoduché řešení: přidej potřebné includy do recepty.php.
Složité řešení: přesměruj všechny dotazy na index.php, který na začátku nastartuje samotnou aplikaci (tím myslím provede všechny potřebné includy, zajistí konfiguraci) a následně podle typu dotazu/parametrů deleguje práci na některý ze skriptů, který může a nemusí vypsat hlavičku a patičku. Ty skripty dokonce můžou na výstup třeba vypisovat jen JSON, ze kterého v JS nabídku vyhledávání sestavíš.
Použitím .htaccess můžeš zajistit, že nikdo nepozná, že vše obsluhuje jen index.php.
janek007
Profil
U mě to tak je, že vše obsluhuje jen index.php, přes ?o parametr se vkládá příslušný php soubor s obsahem. To pro to, abych všechny includy měl jen v jednom souboru a nemusel se o ně starat v každém soboru zvlášť. Jedinou vyjímku jsem tedy udělal v souboru recepty.php kde si testuju proměnnou $setup na true a když není provedu znovu require soboru config.php. To mi vyřešilo problém.
Lépe a jednodušeji to asi udělat nejde, že? Mysle jsem, jestli třeba někde nejde nastavit nějaký autorequire který by si php načítalo automaticky samo.
Keeehi
Profil
janek007:
Existuje autoload ale pro třídy.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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