Autor Zpráva
wasek2611
Profil
Dobrý den,

opět sem musím napsat, protože už jsem z toho na nervy...Mám soubor s funkcemi, které chci volat z jiných souborů. Všechny volat jsou...(includoval jsem soubor s funkcemi). A u jedné mi to píše, že funce neexistuje.
<fieldset><legend>kniha</legend>
<? zobrazKnihu(); ?> 
 </fieldset>
podotýkám, že ve stejném souboru vypisuji jiné funkce, které bezproblmu fungují...Ve funcích mám:
<?php
function zobrazKnihu() {

        $sql = "SELECT * FROM bd_kniha";
        $res = mysql_query($sql);
        while ($row = mysql_fetch_array($res)) {
            echo '<table class="kniha">
<tr><td><h3>' . $row['nick'] . '</h3></td><td><p>' . $row['datum'] . '</p></td></tr>
<tr><td colspan="2"><p>' . $row['text'] . '</p></td></tr>
</table>';
        }
    }
?>

píše mi to: Fatal error: Call to undefined function zobrazKnihu() in /home/users/wasek2611/bloody-donuts.4fan.cz/web/obsah/administrace.php on line 77
přitom ta funkce definovaná je!

Tato funkce se nachází asi až na řádku 300.....mě jen napadá, jestli neni kod nějak limitovanej počtem řádků...i když kámoš co propojuje wowko s webovou databází má kod třeba na 4000 řádků...
Joker
Profil
wasek2611:
Tato funkce se nachází asi až na řádku 300
Call to undefined function (…) on line 77
Není tedy funkce definovaná až později, než se (na řádku 77) volá?

mě jen napadá, jestli neni kod nějak limitovanej počtem řádků
Ne, v tom problém nebude.
Bude to jedna ze tří věcí:
1. Funkce sice někde v kódu definovaná je, ale volá se už před tou definicí.
2. Definice funkce se nevloží (např. include je ve větvi kódu, skrz kterou se nešlo) anebo není dostupná (špatný kontext; ale toto v PHP nebývá problém).
3. Překlep v názvu funkce (v definici nebo volání).

Edit: Pozměnil jsem textaci bodu 1, aby to bylo lépe pochopitelné.
mimochodec
Profil
Joker:
Není tedy funkce definovaná až později, než se (na řádku 77) volá?

To chybu nezpůsobí.


wasek2611:

Chyba bude skoro jistě mimo to, cos tady napsal. Napadá mě: nemůžeš mít třeba špatně spočítané závorky? Jak by se php zachovalo, kdyby byla jedna funkce uvnitř druhé?
Tori
Profil
mimochodec:
Jak by se php zachovalo, kdyby byla jedna funkce uvnitř druhé?
Zajímavý nápad, díky za něj. :)

Tohle funguje, takže na pořadí volání a definice nezáleží:
a();
function a() { }
Tohle projde, ale jen jednou. Při druhém volání a() skript selže s „Fatal error: Cannot redeclare b()“:
a();
b(); // Funkce b() je globálně přístupná (ne jako třeba lokální funkce v JS)
function a() {
    function b() { }
}
Pokud se ale při stejné definici pokouším volat b() dřív než a(), selže skript na „Fatal error: Call to undefined function b()
b();
a();
function a() {
    function b() { }
}

Což je vlastně logické, protože když includuji soubor s definicemi funkcí uvnitř jiné funkce (nazvěme ji např. loadModule), tak to je napoprvé taky v pořádku. U druhého volání loadModule() už ale bude záležet, jestli jsem použila include nebo include_once, a před prvním voláním loadModule() nebudou includované funkce dostupné.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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