Autor Zpráva
David1256
Profil
Dobrý den, potřeboval bych, aby se mi po zadání dvou určitých údajů do formuláře načetla do divu footer stránka třeba formulare.php. Normálně by to zajistila funkce ajaxLoader(), která normálně funguje. Ale, jak to mám v php tak mi to napíše tuto chybu.
Fatal error: Call to undefined function: ajaxloader() in c:\inet_srv\http\doc_root\index.php on line 107

Tzn. jako, že php si neumí poradit s tou funkcí, i když je nadefinovaná ve scriptu v hlavičce webu?
Jinak tady mám php script.
<?php 
if (isset($_POST["jmeno"]) and  isset($_POST["heslo"]))
{if (empty($_POST["jmeno"]) or empty($_POST["heslo"]))
echo "<font color=red>Nevyplnili jste potřebná pole.</font>" ;
else
{if ($jmeno == "Holy" && $heslo == "kodecek")
ajaxLoader('formulare.php','footer') ;
else
{
echo "<font color=red>Zadali jste nesprávné údaje.</font>";
}}} ?>
Jostram
Profil *
To znamená, že skript nenašel tuto funkci definovanou. Děje se to tehdy, když máte funkci v nějaké knihovně (třeba lib.php) a zapomene ji includovat do svého kódu.
David1256
Profil
Ja jí mám v kódu, ale je to Javascriptova funkce. Je možné, že proto jí to nebere?
Jostram
Profil *
Aha. ano, nemůžete volat javascriptovou fci v PHP! zkuste toto:

<?php 
if ( isset($_POST["jmeno"]) and isset($_POST["heslo"]) )
{
	if ( empty($_POST["jmeno"]) or empty($_POST["heslo"]) ) echo "<font color=red>Nevyplnili jste potřebná pole.</font>" ;
	else
	{
		if ($jmeno == "Holy" && $heslo == "kodecek") echo 'ajaxLoader(\'formulare.php\',\'footer\');';
		else echo "<font color=red>Zadali jste nesprávné údaje.</font>";
	}
}
?>

a pokud bych mohl poradit, učesejte si ten kód - třeba nějak takto:
<?php 
if ( isset($_POST["jmeno"]) && isset($_POST["heslo"]) )
{
	if ($jmeno == "Holy" && $heslo == "kodecek") echo 'ajaxLoader(\'formulare.php\',\'footer\');';
	else echo '<font color="red">Zadali jste nesprávné údaje.</font>';
}
else echo '<font color="red">Nevyplnili jste potřebná pole.</font>';
?>
David1256
Profil
Hm, tak to nefunguje :-(. Vypíše to jen ten text s tím ajaxLoader…., zkrátka ho to vezme jen jako text. Takže nemáte někdo ještě nějaký nápad? Jestli ne, tak se ještě poptám v rámci nového dotazu ohledně toho, jak by šel můj problém vyřešit. (Jinak než ajaxLoaderem)
Jostram
Profil *
David1256:
ta funkce ajaxLoader je javacript, takže samozřejmě musí být v tagu <script>. Ten kód jsem psal jako jakýsi nástřel s tím, že zbytek uděláte sám...
David1256
Profil
Tak bohužel, i když to dám mezi tagy <script> vrací se to k původní chybě a sice
Fatal error: Call to undefined function: ajaxloader() in c:\inet_srv\http\doc_root\index.php on line 107
TomášK
Profil
David1256:
Je důležité, abyste si uvědomil, proč ta chyba vzniká, proč to ani fungovat nemůže. PHP generuje kód na serveru, Javascript se vykonává až v prohlížeči. Není tedy možné volat v PHP funkci javascriptu, jedině vygenerovat validní javascriptový kód, který se pak v prohlížeči spustí. Nešlo by použít
include
?
Davex
Profil
David1256:
PHP skript se provede na serveru a prohlížeči posílá až výsledný HTML kód. Pokud chceš vypisovat JavaScript, který se provádí až v prohlížeči, tak ho musíš vypsat jako součást HTML kódu a nemít ho jako součást PHP.
Keeehi
Profil
David1256:
ak bohužel, i když to dám mezi tagy <script> vrací se to k původní chybě a sice
To si proto, že neumíš zapisovat řetězce. Ukaž jak jsi to vykoumal a my ti to opravíme
David1256
Profil
TomášK:
Include mi ale jen dopíše obsah scriptu za již vytvořený obsah v divu footer, ale já ho chci jakoby přepsat tím ajaxloaderem. Tzn. že se mi dosavadní obsah divu footer přepíše stránkou formulare.php, ale to mi include nezajistí.
David1256
Profil
Keeehi:
<?php
 {if (isset($_POST["heslo"]))
if (empty($_POST["heslo"]))
echo "<br><font color=red>Nejdříve vyplňte pole.</font>";
else
if (isset($_POST["heslo"]))
{if ($heslo != "kodecek" )
echo "<br><font color=red>Zadané heslo není správné.</font>" ;}
}?>
<br><br>
<center><input type=submit value="Přihlásit se"></center>
</form>
<?php 
if (isset($_POST["jmeno"]) and  isset($_POST["heslo"]))
{if (empty($_POST["jmeno"]) or empty($_POST["heslo"]))
echo "<font color=red>Nevyplnili jste potřebná pole.</font>" ;
else

{if ($jmeno == "Holy" && $heslo == "kodecek")
 echo "<script>ajaxLoader(\'formulare.php\',\'footer\')</script>";
else
{
echo "<font color=red>Zadali jste nesprávné údaje.</font>";
}}} ?>
David1256
Profil
Tak ještě změna už to funguje vlastně, ale nepřepíše mi to ten obsah toho divu, ale zase to hromadí obsah formularu.php až za již vytvořený obsah, takže to vypadá, že ten ajaxloader "funguje jako include".
Keeehi
Profil
David1256:
Tak ještě změna už to funguje vlastně, ale nepřepíše mi to ten obsah toho divu, ale zase to hromadí obsah formularu.php až za již vytvořený obsah, takže to vypadá, že ten ajaxloader "funguje jako include".
Toto zase budeš muset řešit v JS, který tu změnu obstarává. Kód nemáme, takže nemůžeme radit.
David1256
Profil
Tak již naposled měl sem tam menší chybičku, takže už to funguje, jak jsem chtěl, díky všem za rady.

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: