Autor Zpráva
Jura
Profil *
Ahoj. Potřeboval bych prosím poradit. Mám jednoduchou aplikaci v php, která ukládá data do databáze MySQL. Má sloužit jako adresář. Skládá se z 8 souborů - main.php, common.php, globals.php, add.php, delete.php, modify.php, update.php a search.php. Na svém PC mám nainstalováno PHPTriad. Problém je v tom, že při spuštění souboru main.php na localhost se zobrazí část stránky správně, ale php vypíše následující chyby...

Parse error: parse error in c:\apache\htdocs\adresar\common.php on line 52

Fatal error: Call to undefined function: generatefrontpage() in c:\apache\htdocs\adresar\main.php on line 12

Kód je psán podle příručky, ale přesto nevím, zda to může být právě chybou v kódu nebo třeba špatným nastavením konfiguračního souboru php.ini na mém počítači? Možná jde o úplnou banalitu, ale v php teprve začínám... Tady jsou zdrojové kdy těch dvou "chybových" stránek.

<?php

//common.php

function GenerateHTMLHeader($message) {
printf("<HEAD><TITLE>Adresar na webu</TITLE></HEAD>");
printf("<BODY TEXT=\"#000000\" BGCOLOR=\"#999999\" LINK=\"\" VLINK=\"\" ALINK=\"\">\n");
printf("<H1><FONT SIZE=+4>Myj adresax</FONT></H1><BR><BR>");
printf("<TABLE CELLPADDING=4 CELLSPACING=0 BORDER=0 WIDTH=600>");
printf("<H1><TR BGCOLOR=\"#DCDCDC\"><TD><FONT FACE=Arial><B>");
printf("%s</B></FONT><BR></TD>", $message);
printf("<TD ALIGN=right>");
printf("</FONT></TD></TR>");
printf("</TABLE>");
printf("<BR>");
printf("<BR>");
}

function GenerateFrontPage(){
printf("<FORM METHOD=post ACTION=main.php>");
printf("<INPUT TYPE=\"submit\" NAME=\"choice\" VALUE=\"Vyhledavanm\">");
printf("&nbsp; &nbsp; &nbsp");
printf("<INPUT TYPE=\"submit\" NAME=\"choice\" VALUE=\"Pxidat poloku\">");
printf("<BR>");
printf("<BR>");

function DisplayErrMsg($message) {
printf("<BLOCKQOUTE><BLOCKQOUTE><BLOCKQOUTE><H3><FONT COLOR=\"#CC0000\">%s</FONT></H3></BLOCKQOUTE></BLOCKQOUTE>
</BLOCKQOUTE>\n", $message);
}

function GenerateHTMLForm($formValues, $actionScript, $submitLabel) {
printf("<FORM METHOD="post" ACTION=\"%s\"><PRE>\n", $actionScript);
printf("<FORM METHOD=post ACTION=\"%s \"><PRE>\n", $actionScript);
printf("Jméno:<INPUT TYPE=text SIZE=35 NAME=jmeno VALUE=\"%s \"><BR>\n",
($formValues) ? $formValues ["jmeno"] :"";
printf("E-mail:<INPUT TYPE=text SIZE=35 NAME=mail VALUE=\"%s \"><BR>\n",
($formValues) ? $formValues ["mail"] :"";
printf("Město:<INPUT TYPE=text SIZE=35 NAME=mesto VALUE=\"%s \"><BR>\n",
($formValues) ? $formValues ["mesto"] :"";
printf("Popis:<INPUT TYPE=text SIZE=35 NAME=popis VALUE=\"%s \"><BR>\n",
($formValues) ? $formValues ["popis"] :"";
printf("Telefon:<INPUT TYPE=text SIZE=35 NAME=telefon VALUE=\"%s \"><BR>\n",
($formValues) ? $formValues ["telefon"] :"";
printf("<INPUT TYPE=submit VALUE=\"%s\">", $submitLabel);
printf("</PRE></FORM>");
}

function ReturnToMain() {

printf( "<BR><FORM ACTION=\"main.php\" METHOD=post>\n" );
printf( "<INPUT TYPE=submit VALUE=\"Klikněte zde\">\n" );
}
?> ...toto je řádek 52, což je zvláštní...

a druhý...

<?php

// main.php

require("common.php");

if (!isset($choice)) $choice=false;
if (!$choice){

GenerateHTMLHeader("Pro přístup k adresáři klepněte níže");

GenerateFrontPage(); ...toto je řádek 12...

} else if ($choice == "Vyhledávání") {
GenerateHTMLHeader("Vyhledávání podle následujících kritérií");
GenerateHTMLForm(0,"search.php","Vyhledat");
}

} else if ($choice == "Přidat položku") {
GenerateHTMLHeader("Vyplňte prosím pole Jméno a E-mail");
GenerateHTMLForm(0,"add.php","Přidat");
}

?>

Děkuji předem za odpovědi!
WertriK
Profil *
chybu mas v tom ze neuzaviras funkci function GenerateFrontPage() - chybi ti tam slozena zavorka na konci


GenerateFrontPage() {
printf("<FORM METHOD=post ACTION=main.php>");
printf("<INPUT TYPE=\"submit\" NAME=\"choice\" VALUE=\"Vyhledavanm\">");
printf("&nbsp; &nbsp; &nbsp");
printf("<INPUT TYPE=\"submit\" NAME=\"choice\" VALUE=\"Pxidat poloku\">");
printf("<BR>");
printf("<BR>");
}

proto ta chyba na poslednim radku ....
Jura
Profil *
Díky, já jsem si myslel, že to bude nějaká banalitka... ale teď mám další problém. Při kontrole zadání údajů do povinných polí při přidávání záznamu se zobrazí chybová zpráva i v případě, že jsou všechna pole vyplněná...

<?php

// add.php

require("globals.php");
require("common.php");

$addStmt ="Insert into $nazev_tabulky(jmeno,mail,mesto,popis,telefon) values('%s ','%s
','%s ','%s ','%s ')";

if (!$jmeno ||!$email ||!$mesto ||!$popis ||!$telefon) {
DisplayErrMsg("Chyba: Všechna pole jsou povinná");
exit();
}

if (!($link = mysql_pconnect($nazev_hostitele, $jmeno_uzivatele, $heslo))) {
DisplayErrMsg(sprintf("Chyba při připojování uživatele %s k hostiteli %s",
$jmeno_uzivatele, $nazev_hostitele));
exit();
}

if (!mysql_select_db($nazev_databaze, $link)) {
DisplayErrMsg(sprintf("Chyba při výběru databáze %s", $nazev_databaze));
DisplayErrMsg(sprintf("Chyba: %d %s ", mysql_errno($link), mysql_error($link)));
exit();
}

if (!mysql_query($stmt=sprintf($addStmt, $jmeno, $mail, $mesto, $popis, $telefon), $link)) {
DisplayErrMsg(sprintf("Chyba při provádění příkazu %s", $stmt));
DisplayErrMsg(sprintf("Chyba: %d %s ", mysql_errno($link), mysql_error($link)));
exit();
}

GenerateHTMLHeader("Položka byla úspěšně přidána");

ReturnToMain();

?>
luka
Profil *
prepac ale neviem naco mas toto? '%s ','%s','%s ','%s ','%s '
inak mas tam dost funkcie print, skus vyjst z kodu php a napisat to normalne v xhtml.Vlastne pozeram ze tam mas printf a to je na tlac nie?nerozumiem
Jura
Profil *
$addStmt ="Insert into $nazev_tabulky(jmeno,mail,mesto,popis,telefon) values('%s ','%s
','%s ','%s ','%s ')";

V příručce, podle které jsem psal ten kód je k tomu tento komentář - "$addStmt obsahuje šablonu pro vkládání řádku odpovídajícího nové položce tabulky databáze"
luka
Profil *
no neviem , ale skus toto je to rozumnejsie
$addStmt ="Insert into $nazev_tabulky(jmeno,mail,mesto,popis,telefon) values('$jmeno ','$mail
','$mesto ','$popis ','telefon ')";

rob veci ktorym rozumies, lebo inak sa zamotas v tom a budes sa len motkat a nic z toho a mas to moc zlozite.Ved chces len z formulára dat data do db tak preco takym zlozitym sposobom?A vysvetli naco mas tam to printf
Jura
Profil *
printf je použito na generování formuláře HTML....
WertriK
Profil *
printf mas to stejne jako echo...
jestli tam mas napsane ze to na genrovani formulare tak mi napis co to je za prirucku abych si ji nekoupil...
Tomas_cze
Profil
No vidim ze nejsem sam s tim problemem. Dnes jsem dělal taky s něčím podobným a dělalo mi to same, oboji chyby, nevěděl jsem c os tím tak jsem to smazal a nahradil jinym.

To druhe bych udělal trochu jednodušeji v JS pokud to je kontrola jestli se vyplnili vsechny pole aby uzivatel necekal nez se mu nacta dalsi strana. A neni nahodou to procento a pismeno z ASP? Jsem vzivote nevidel ze by se toto v PHP pouzivalo. A mate to nahrane někde na nějakéhm serveru abych víděl co je to zač?
Jura
Profil *
To WertriK: Tohle celé bylo myšleno jako generování formuláře HTML.

function GenerateHTMLForm($formValues, $actionScript, $submitLabel) {
printf("<FORM METHOD="post" ACTION=\"%s\"><PRE>\n", $actionScript);
printf("<FORM METHOD=post ACTION=\"%s \"><PRE>\n", $actionScript);
printf("Jméno:<INPUT TYPE=text SIZE=35 NAME=jmeno VALUE=\"%s \"><BR>\n",
($formValues) ? $formValues ["jmeno"] :"";
printf("E-mail:<INPUT TYPE=text SIZE=35 NAME=mail VALUE=\"%s \"><BR>\n",
($formValues) ? $formValues ["mail"] :"";
printf("Město:<INPUT TYPE=text SIZE=35 NAME=mesto VALUE=\"%s \"><BR>\n",
($formValues) ? $formValues ["mesto"] :"";
printf("Popis:<INPUT TYPE=text SIZE=35 NAME=popis VALUE=\"%s \"><BR>\n",
($formValues) ? $formValues ["popis"] :"";
printf("Telefon:<INPUT TYPE=text SIZE=35 NAME=telefon VALUE=\"%s \"><BR>\n",
($formValues) ? $formValues ["telefon"] :"";
printf("<INPUT TYPE=submit VALUE=\"%s\">", $submitLabel);
printf("</PRE></FORM>");
}
Robotus
Profil *
mozna sou vypnuty register_globals a je potom nutny pouzit $_POST['value']
luka
Profil *
pardon sekol som sa s tym printf, ale aj tak nechapem preco to tak robis, tak zlozito a uplne neprehledne.Myslim tym formular vypisovat v php, ved to je blbost. Print , echo a sql dopyty su tazke na spracovanie, tak naco to este stazovat. Skus si pozriet nejake skripty, ale od nejakeho normalneho developera.
Jura
Profil *
To luka: to bych se moc rád podíval na nějaké další skripty s podobným tématem, můžes mi, prosím, něco doporučit? Díky moc... Jsou to pro mě cenné informace, třeba dozvědět se, že se dá pro stejnou funkci napsat jednodušší skript. Jsem v php teprve začátečník... Ale trochu mě zaráží, že si člověk pořídí odbornou publikaci za ne málo peněz a pak zjistí, že se učí nějaké nestandardní či snad nesmyslné věci :-(
Jura
Profil *
mozna sou vypnuty register_globals a je potom nutny pouzit $_POST['value']

register_globals jsou zapnuté...
luka
Profil *
Jura

icq 291-764-943
Toto téma je uzamčeno. Odpověď nelze zaslat.

0