게시판을 만들고 있는데...
제대로 안되고 미치겠습니다.
저는 인포믹스를 사용하고 있구...
PHP 로 게시판을 만들고 있습니다.
제발 봐주세요..
board_write.php 로 글을 쓰고 저장버튼 클릭하면
board_list.php로 글이 올라가야 하는데...
전혀 올라가질 않고..
아래와 같은 에러 메세지가 나타납니다.
Warning: Prepare fails (E [SQLSTATE=42 000 SQLCODE=-201]) in /usr/local/apache/htdocs/myung/mtboard.php on line 90
E [SQLSTATE=42 000 SQLCODE=-201]게시판의 리스트를 가지고 올 수 없습니다.
테이블만 제대로 보임.
Fatal error: Call to undefined function: off() in /usr/local/apache/htdocs/myung/mtboard.php on line 195
---- mtboard.php 소스 ----
<?
require("./board.ini");
class mtboard
{
var $con=false;
var $rlt;
var $allarticle; //전체 글 개수
var $alllist; //전체 리스트 개수
var $mode;
var $keywork;
function mtboard($mode="", $keyword="")
{
global $server, $userid, $passid, $bd_num_article;
$this->mode = $mode;
$this->keyword=$keyword;
$this->con=ifx_connect($server, $userid, $passid);
if(!$this->con)
die ("데이터베이스와 연결이 되지 않습니다.");
if(strlen($this->mode) && strlen($this->keyword)){
$search = $this->makeSearchSQL($this->mode,$this->keyword);
$que= "select count(*) from board $search";
}
else $que = "select count(*) from board";
$rlt = ifx_prepare($que, $this->con);
if(!ifx_do($rlt)){
echo ifx_error();
die ("전체 글의 개수를 알수 없습니다.");
return;
}
else {
$tmp = ifx_fetch_row($rlt);
$this->allarticle=(int)$tmp["(count(*))"];
ifx_free_result($rlt);
//전체 글 리스트의 개수
$this->alllist=$this->allarticle / $bd_num_article;
$this->alllist = (int)$this->alllist;
$mod = $this->allarticle % $bd_num_article;
if($mod!=0)
++$this->alllist;
}
//답변글
// session_start();
}
function close()
{
@ifx_free_result($this->rlt);
ifx_close($this->con);
}
function getlist($list)
{
global $bd_num_article;
$tmplist=($list-1) * $bd_num_article;
if(strlen($this->mode) && strlen($this->keyword)) {
$search = $this->makeSearchSQL($this->mode, $this->keyword);
$que = "select num, parent_id, child_id, title, name, date, readed
from board $search order by parent_id DESC, child_id ASC";
}
else {
$que="select num, parent_id, child_id, title, name, date, readed
from $board order by parent_id DESC, child_id ASC";
}
if(!$this->rlt = ifx_query($que, $this->con)) { ======> 90
echo ifx_error();
echo ("게시판의 리스트를 가지고 올 수 없습니다.<br>");
return ;
}
/* $rlt = ifx_prepare($que, $this->con);
if(!ifx_do($rlt)){
echo ifx_error();
die ("게시판의 리스트를 가지고 올 수 없습니다.");
} */
//lists의 오브젝트 생성
$rtnlists=new lists($list, $this->mode, $this->keyword);
//현재 리스트 글 개수
$rtnlists->num_articles = $list==$this->alllist ?
$this->allarticle-($bd_num_article*($list-1)) : 15;
if($list>1)
for($i=$tmplist; $i>0 ; --$i)
$row = ifx_fetch_row($this->rlt, "next");
for($i=0; $i<$rtnlists->num_articles; ++$i){
$row = ifx_fetch_row($this->rlt, "next");
//주의요망
$row[Xnum] = $this->allarticle-$tmplist-$i;
$rtnlists->article[$i] = $row;
}
ifx_free_result($this->rlt);
return $rtnlists;
}
//읽은글 1증가시키기
function readed($num)
{
$que="update board set readed = readed+1 where num=$num";
if(!$this->rlt = ifx_query($que, $this->con)){
echo "글의 읽은 수를 +1 올릴 수 없습니더<br>";
echo ifx_error();
return;
}
}
function getarticle($num, $list)
{
//글 가져오기
$que = "select num, parent_id, child_id, title, content, name, date, readed
from board where num=$num";
if(!$this->rlt = ifx_query($que, $this->con)){
echo "게시판의 글을 가지고 올 수 업심더";
echo ifx_error();
return;
}
$row = ifx_fetch_row($this->rlt, "first");
ifx_free_result($this->rlt);
if(strlen($this->mode) && strlen($this->keyword))
$rtnarticle= new article($row, $list, $mode, $keyword);
else
$rtnarticle= new article($row, $list);
//같은 부모글에 달린 형제글 개수 가져오기
$que = "select count(*) from board where parent_id=$row[parent_id]";
if($this->rlt = ifx_query($que, $this->con))
{
//형제글 개수
$tmp= ifx_fetch_row($this->rlt);
$rtnarticle->num_brother = $tmp["(count(*))"];
$que = "select num, parent_id, child_id, title, name, date, readed
from board where parent_id=$row[parent_id] order by child_id ASC";
$this->rlt = ifx_query($que, $this->con);
for($i=0; $i<$rtnarticle->num_brother; ++$i){
$rtnarticle->brother[] = ifx_fetch_row ($this->rlt, "next");
}
ifx_free_result($this->rlt);
}
else $rtnarticle->num_brother= 0;
return $rtnarticle;
}
function eclistlink($list=1)
{
global $htmlist, $bd_num_article, $bd_num_list;
//리스트 시작
if($list%$bd_num_list)
{
$start_list=off($list, 1, $bd_num_list) +1; =======>195
}
else
$start_list=$list-$bd_num_list+1;
//리스트 끝
$end_list=min($start_list + $bd_num_list, $this->alllist);
for($i=$start_list; $i<=$end_list; ++$i)
{
if($i != $list)
{
if(strlen($this->mode) && strlen($this->keyword))
$arg="list=".$i."&mode=".$this->mode."&keyword=".$this->keyword;
else
$arg= "list=".$i ;
$link="<font size=2>[".taghyperlink($i,$htmlist,$arg)."]</font>";
echo $link;
}else {
$str = "<font size=3><b><i> ".$i." </i></b></font>";
echo $str;
}
}
}
//현재 리스트에서 이전으로
function ecbeforelistlink($list)
{
global $htmlist, $bd_num_list;
if($list>$bd_num_list){
$list=off($list, 1, $bd_num_list) - $bd_num_list + 1;
if(strlen($this->mode) && strlen($this->keyword))
$arg = "list=".$list."&mode=".$this->mode."&keyword=".$this->keyword;
else
$arg="list=".$list;
$link="<font size=2>".taghyperlink ("<_before",$htmlist,$arg)."</font>";
echo $link;
}
}
function ecnextlistlink($list)
{
global $htmlist, $bd_num_list;
$list=up($list, 1, $bd_num_list) +1;
if($list <= $this->alllist)
{
if(strlen($this->mode)&& strlen($this->keyword))
$arg="list=".$list."&mode=".$this->mode."&keyword=".$this->keyword;
else
$arg="list=".$list;
$link="<font size=2>".taghyperlink("next_>",$htmlist,$arg)."</font>";
echo $link;
}
}
function eccurrentlistlink($list)
{
global $htmlist;
if(strlen($this->mode)&& strlen($this->keyword))
$arg="list=".$list."&mode=".$this->mode."&keyword=".$this->keyword;
else
$arg="list=".$list;
$link="<font size=2>".taghyperlink("<img src='./img/list.gif' border=0 >", $htmlist, $arg)."</font>";
echo $link;
}
function ecfirstlistlink()
{
global $htmlist;
$link ="<font size=2>".taghyperlink("<img src='./img/list.gif' border=0 width='85' height='17' align='absmiddle'>",
$htmlist)."</font>";
echo $link;
}
function ecnewwrite($list)
{
global $htmwrite;
$link=taghyperlink("<img src='./img/write.gif'>", $htmwrite, "list=".$list);
echo $link;
}
function ecmodify()
{
global $htmmodify;
$link= taghyperlink("<img src='./img/modify.gif'>", $htmmodify, "list=".$list."&no=".$this->article[no]);
echo $link;
}
function delete($num, $password)
{
$password = crypt($password, $password);
$que="select num from board where num=$num and password='$password'";
$this->rlt = ifx_prepare($que, $this->con);
ifx_do($this->rlt);
ifx_fetch_row($this->rlt);
$num_row= ifx_num_rows($this->rlt);
if(ifx_num_rows($this->rlt)){
ifx_free_result($this->rlt);
$que="delete from board where num=$num";
return ifx_query($que, $this->con);
}
else return false;
}
function modify($name,
$password,
$title,
$content,
$num)
{
$password = crypt($password, $password);
//암호가 맞는지
$que = "select num from board where num=$num and password='$password'";
$this->rlt = ifx_query($que, $this->con);
ifx_fetch_row($this->rlt);
if(ifx_num_rows($this->rlt))
{
ifx_free_result($this->rlt);
$title=htmlspecialchars($title);
$name=addslashes($name);
$title=addslashes($title);
$content=addslashes($content);
$blob_content=ifx_create_blob(1, 0, $content);
$blob_id[] = $blob_content;
$que="update board set title='$title', name='$name', content=? where num='$num'";
return ifx_query($que, $this->con, $blob_id);
}
else return false;
}
//글쓰기
function write($name,
$password,
$title,
$content,
$email,
$homepage)
{
$que="select max(parent_id) from board";
$this->rlt = ifx_query($que, $this->con);
$parent_id = ifx_fetch_row($this->rlt, "first");
$max_parent_id = $parent_id["(max)"] + 1;
ifx_free_result($this->rlt);
$title=htmlspecialchars($title);
$name=addslashes($name);
$title=addslashes($title);
$content=addslashes($content);
$date=date("Y.m.t");
$time=date("h:i:s");
$password=crypt($password, $password);
$blob_content=ifx_create_blob(1, 0, $content);
$blob_id[] = $blob_content;
$que="insert into board(parent_id, name, title, content, date, time, password, email, homepage) values
('$max_parent_id','$name','$title',?,'$date', '$time', '$password','$email', $url)";
$rid=ifx_prepare($que, $this->con, $blob_id);
if(!ifx_do($rid)){
echo "글쓰기에 문제가 째끔 있네요";
echo ifx_error();
return;
}
}
//수정
function replywrite($name,
$password,
$title,
$content,
$parent_id,
$ori_child_id,
$depth)
{
$que="select child_id from board where parent_id=$parent_id and child_id like
'".$ori_child_id."_' order by child_id DESC";
$this->rlt = ifx_prepare($que, $this->con);
ifx_do($this->rlt);
if(@ifx_num_rows($this->rlt)){
$child_id = ifx_fetch_row($this->rlt, "FIRST");
$child_id=$child_id[child_id];
ifx_free_result($this->rlt);
$tmp = $child_id[$depth];
$tmp = ord($tmp) + 1;
$child_id[$depth] = chr($tmp);
}
else $child_id = $ori_child_id."A";
$title=htmlspecialchars($title);
$name=addslashes($name);
$title=addslashes($title);
$content=addslashes($content);
$blob_content=ifx_create_blob(1, 0, $content);
$blob_id[] = $blob_content;
$date = date("Y.m.t");
$time=date("h:i:s");
$password=crypt($password, $password);
$que="insert into board(parent_id, child_id, name, title, content, date, time, password) values
('$parent_id','$child_id','$name','$title',?,'$date', '$time', '$password')";
$rid=ifx_prepare($que, $this->con, $blob_id);
if(!ifx_do($rid)){
echo "답글 쓰기에 문제가 있습니다.";
echo ifx_error();
}
}
function makeSearchSQL($mode, $keyword)
{
switch($mode)
{
case 0:
$que = "title like '%$keyword%'";
break;
case 1:
$que = "content like '%$keyword%'";
break;
case 2:
$que = "name like '%$keyword%'";
break;
}
return "where".$que;
}
}
class lists
{
var $article;
var $num_articles;
var $mode;
var $keyword;
var $list;
function lists($list, $mode, $keyword)
{
$this->list = $list;
$this->mode= $mode;
$this->keyword = $keyword;
}
function getarticle($number= 0){
if(strlen($this->mode) && srtlen($this->keyword))
$rtn = new article($this->article[$number], $this->list, $this->mode, $this->keyword);
else
$rtn= new article($this->article[$number], $this->list);
return $rtn;
}
}
class article
{
var $article;
var $list;
var $mode;
var $keyword;
var $num_brother;
var $brother;
function article($article, $list, $mode="", $keyword="")
{
$this->list=$list;
$this->list=$mode;
$this->keyword=$keyword;
$this->article=$this->filter($article);
}
function filter($row)
{
global $htmread, $bd_title_length;
if(isset($row[content]))
{
$row[content] = stripslashes($row[content]);
$row[Hcontent] = nl2br($row[content]);
$row[Hcontent] =
tagreplaceemaillink($row[Hcontent]);
$row[Hcontent] =
tagreplacehttplink($row[Hcontent]);
$row[Hcontent] = tagreplaceftplink($row[Hcontent]);
}
$row[depth] = strlen($row[child_id]);
$row[htitle] = stripslashes($row[title]);
$row[htitle] = ksubstr($row[htitle], 0, $bd_title_length);
if(strlen($this->mode) && strlen($this->keyword)){
$row[htitle] = taghyperlink($row[htitle], $htmread,
"list=".$this->list."$parent_id=".$row[parent_id].
"$num=".$row[num]."$mode=".$this->mode."&keyword=".$this->keyword);
}
else{
$row[htitle] = taghyperlink($row[htitle], $htmread, "list=".$this->list.
"&parent_id=".$row[parent_id]. "&num=".$row[num]);
}
$row[name] = stripslashes($row[name]);
$row[email]=stripslashes($row[email]);
$row[email] = tagemaillink($row[email], $row[email]);
return $row;
}
function getbrother($i)
{
if($i>$this->num_brother || $i<0 || $this-> num_brother<2)
return false;
if(strlen($this->mode) && strlen($this->keyword))
$rtn = new article($this->brother[$i], $this->list, $this->mode, $this->keyword);
else
$rtn = new article($this->brother[$i], $this->list);
return $rtn;
}
function ecreplywrite()
{
global $htmreplywrite, $child_id, $depth, $ori_num, $parent_id;
$child_id = $this->article[child_id];
$depth = $this->article[depth];
$ori_num = $this->article[num];
$parent_id = $this->article[parent_id];
session_start();
session_register("parent_id");
session_register("child_id");
/* session_register("depth"); */
session_register("ori_num");
$link = taghyperlink("<img src='./img/write.gif'>", $htmreplywrite, "list=".$this->list);
echo $link;
}
function ecmodify()
{
global $htmmodify;
$link = taghyperlink("<img src='./img/modify.gif'>", $htmmodify,
"list=".$this->list."&num=".$this->article[num]);
echo $link;
}
function ecdelete()
{
global $htmdelete;
$link = taghyperlink("<img src='./img/delete.gif'>", $htmdelete,
"list=".$this->list."&num=".$this->article[num]);
echo $link;
}
};
?>
|