Autor | Zpráva | ||
---|---|---|---|
Jura Profil * |
#1 · Zasláno: 22. 8. 2005, 18:05:01
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("  "); 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 * |
#2 · Zasláno: 22. 8. 2005, 18:15:06
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("  "); printf("<INPUT TYPE=\"submit\" NAME=\"choice\" VALUE=\"Pxidat poloku\">"); printf("<BR>"); printf("<BR>"); } proto ta chyba na poslednim radku .... |
||
Jura Profil * |
#3 · Zasláno: 22. 8. 2005, 19:01:07
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 * |
#4 · Zasláno: 22. 8. 2005, 20:18:49
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 * |
#5 · Zasláno: 22. 8. 2005, 20:30:00
$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 * |
#6 · Zasláno: 22. 8. 2005, 20:44:05
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 * |
#7 · Zasláno: 22. 8. 2005, 21:08:12
printf je použito na generování formuláře HTML....
|
||
WertriK Profil * |
#8 · Zasláno: 22. 8. 2005, 21:35:36
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 |
#9 · Zasláno: 22. 8. 2005, 21:54:57
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 * |
#10 · Zasláno: 23. 8. 2005, 11:23:05
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 * |
#11 · Zasláno: 23. 8. 2005, 11:31:09
mozna sou vypnuty register_globals a je potom nutny pouzit $_POST['value']
|
||
luka Profil * |
#12 · Zasláno: 23. 8. 2005, 20:31:20
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 * |
#13 · Zasláno: 23. 8. 2005, 23:12:04
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 * |
#14 · Zasláno: 23. 8. 2005, 23:28:02
mozna sou vypnuty register_globals a je potom nutny pouzit $_POST['value']
register_globals jsou zapnuté... |
||
luka Profil * |
#15 · Zasláno: 24. 8. 2005, 17:50:21
Jura
icq 291-764-943 |
||
Časová prodleva: 20 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0