Autor | Zpráva | ||
---|---|---|---|
andrej54 Profil |
#1 · Zasláno: 8. 12. 2006, 09:58:29
Poradi niekto?
Som úplný začiatočník v PHP. Skušam rozbehat jednoduché fórum, ale mi to padá: Notice: Undefined variable: jump in c:\inet_srv\http\doc_root\forum\myforum.php on line 26 Notice: Undefined offset: 20 in c:\inet_srv\http\doc_root\forum\myforum.php on line 83 Zdrojak: <? $messagesPerPage=20; //počet správ na stránke $scriptFileName="myforum.php"; //meno súboru so skriptom (meno tohto súboru) $forumDataFile="forum.dat"; //súbor, do ktorého sa uložia príspevky $killHtml=true; //zlikvidovať html značky (kvôli bezpečnosti) $html_AllowBold=true; //povoliť značku <b> a </b> $html_AllowItalic=true; //povoliť <i> a </i> $html_AllowLinks=true; //povoliť <a ...> a </a> $textBeforeNick="<tr bgcolor=\"#d1d1ee\"><td>"; //značky pred napísaním nicku $textAfterNick="</td></tr>"; //značky po nicku $textBeforeMessage="<tr bgcolor=\"#e0e0ff\"><td>"; //značky pred príspevkom $textAfterMessage="</td></tr>"; //značky po príspevku $textBeforeFooter="<tr><td><center>"; //značky pred ukončovacím blokom $textAfterFooter="</center></td></tr>"; //značky po bloku //úvod html dokumentu $begin[1]="<html><head>"; $begin[2]="<title>Naše fórum</title>"; $begin[3]="</head>"; $begin[4]="<body bgcolor=\"white\" text=\"#555555\">"; $begin[5]="<table width=\"550\">"; //koniec html dokumentu $end[1]="<tr><td>"; $end[2]="<form name=\"data\" METHOD=\"POST\" action=" . $scriptFileName . ">"; $end[3]="<input type=\"hidden\" name=\"jump\" value=\"$jump\"></input>"; $end[4]="<img src=\"images/clear_dot.gif\" width=130 height=1>nick:<br>"; $end[5]="<center><input type=\"text\" name=\"nick\" size=35></input></center>"; $end[6]="<img src=\"images/clear_dot.gif\" width=130 height=1>e-mail:<br>"; $end[7]="<center><input type=\"text\" name=\"mail\" size=35></input></center>"; $end[8]="<img src=\"images/clear_dot.gif\" width=130 height=1>text:<br>"; $end[9]="<center><textarea name=\"message\" cols=30 rows=5></textarea></center>"; $end[10]="<center><input type=\"submit\" value=\"Poslať\"></input></center>"; $end[11]="</td></tr></form>"; $end[12]="</table></center></body></html>"; ?> <? if (!IsSet($jump)) $jump=0; //$jump - number of first message on page for ($i=1; $i<=count($begin); $i++) echo ($begin[$i]); $m=$messagesPerPage; // if a message was added --> if ((IsSet($message))&&($message!="")) { // create a good-looking date and timestamp $datum=GetDate(); if ($datum["hours"]<10) $datum["hours"]="0".$datum["hours"]; if ($datum["minutes"]<10) $datum["minutes"]="0".$datum["minutes"]; $fdatum=$datum["hours"].":".$datum["minutes"]." - ".$datum["mday"].".".$datum["mon"].".".$datum["year"]; if ($killHtml) $message=str_replace("<","<",$message); if ($html_AllowBold) $message=str_replace("<b>","<b>",$message); if ($html_AllowItalic) $message=str_replace("<i>","<i>",$message); if ($html_AllowItalic || $html_AllowBold || $html_AllowLinks) $message=str_replace("</","</",$message); if ($html_AllowLinks) $message=str_replace("<a href=","<a href=",$message); $message=str_replace("\r\n","<br>",$message); $message=str_replace("\n","<br>",$message); $nick=str_replace("<","<",$nick); $mail=str_replace("<","<",$mail); // save the whole message w/ nick, e-mail and timestamp $subor=fopen($forumDataFile,"a"); flock($subor,2); fputs($subor,$nick."\n"); fputs($subor,$mail."\n"); fputs($subor,$fdatum."\n"); fputs($subor,$message."\n"); flock($subor,3); fclose($subor); } // print out and format messages $vypis=file($forumDataFile); $myEnd=$m-1; if (($jump+$m)>=(count($vypis)/4)) $myEnd=((count($vypis)/4) - $jump); for ($i=$jump*4; $i<=(($jump+$myEnd)*4); $i=$i+4) { if ($vypis[$i]!="") { echo($textBeforeNick); echo("<a href='mailto:" . str_replace("\n","",$vypis[$i+1]) . "'>" . str_replace("\n","",$vypis[$i]) . "</a> - "); echo($vypis[$i+2].$textAfterNick); echo($textBeforeMessage); echo($vypis[$i+3].$textAfterMessage); } } echo ($textBeforeFooter); if ($jump>0) { echo("<br><a href='". $scriptFileName. "?jump=0'><img src=\"images/move_leftleft.gif\" border=\"0\"></a> "); echo("<a href='". $scriptFileName. "?jump=".($jump-$m)."'><img src=\"images/move_left.gif\" border=\"0\"></a> "); } else { echo("<br><img src=\"images/move_leftleft_deny.gif\" border=\"0\"> "); echo("<img src=\"images/move_left_deny.gif\" border=\"0\"> "); } echo("Strana ".(($jump/$m)+1)." z ".(ceil((count($vypis)/4)/$m))); if (($jump+$m)<(count($vypis)/4)) { echo(" <a href='". $scriptFileName. "?jump=".($jump+$m)."'><img src=\"images/move_right.gif\" border=\"0\"></a> "); echo("<a href='". $scriptFileName. "?jump=".(((ceil((count($vypis)/4) / $m))-1)*$m)."'><img src=\"images/move_rightright.gif\" border=\"0\"></a>"); } else { echo(" <img src=\"images/move_right_deny.gif\" border=\"0\"> "); echo("<img src=\"images/move_rightright_deny.gif\" border=\"0\">"); } echo ($textAfterFooter); for ($i=1; $i<=count($end); $i++) echo ($end[$i]); ?> |
||
peta Profil |
#2 · Zasláno: 8. 12. 2006, 10:29:04
prvni radek kazdeho scriptu by mel zacinat:
error_reporting(E_ALL); take by bylo moc fajn delsi zdrojak odkazovat jako link na *.txt , treba. Jinak lepsi je pouzit SQL: http://www.volny.cz/peter.mlich/www.htm#msub13 # www.volny.cz/peter.mlich (zdroj: minichat.txt 5k) # www.volny.cz/peter.mlich (zdroj: minichat.sql) se soubory byvaji nekdy potize, ale treba ti pomuze: http://www.volny.cz/peter.mlich/www.htm#msub11 # peter-mlich.wz.cz (zdroj: PPguest4.txt 4k) Tve chyby: "Notice: Undefined variable: jump in c:\inet_srv\http\doc_root\forum\myforum.php on line 26" Znamena, ze na radku 26 pracujes s nedefinovanou promennou $jump. Coz je tento radek: $end[3]="<input type=\"hidden\" name=\"jump\" value=\"$jump\"></input>"; A nikde pred nim nevidim nic typu: $jump="neco"; "Notice: Undefined offset: 20 in c:\inet_srv\http\doc_root\forum\myforum.php on line 83" To zase znamena, ze pracujes s nedefinovanym indexem cislo 20 na radku 83. Coz je radek: if ($vypis[$i]!="") kde se ti tam dostane $i=20 if ($vypis[20]!="") a $vypis[20] neni definovan. Obvykle se ve for pouziva jen znamenko "<", takze je mozne, ze se dostanes za hranici souboru. Nebo se do $jump dostane prilis vysoka hodnota. |
||
peta Profil |
#3 · Zasláno: 8. 12. 2006, 11:01:54
Jeste mne tak napada, muzes si vypsat:
u chyby 1: echo "<br>$jump"; u chyby 2: echo "<br>".($jump*4); //minimum FOR echo "<br>".(($jump+$myEnd)*4); //maximum FOR echo "<br>$i: ".$vypis[$i]; // pred IFem ve FOR Snadneji se tak zjisti, co tam vlastne je. |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0