ようこそ! このブログは、PHPとMysqlを使って作成したオリジナルプログラムを、QHMに読み込んで表示させています。

Topic.class.php

FrontPage

topic.class.phpのソースコード

<?php

require_once "BaseDB.class.php";

// ログインをするクラス
class Topic extends BaseDB
{
	public function loadTopic( $topicid='' )
	{
		$qstring = "select  topicid,dt,lastupdate,fdelete,catid," .
				"title,body from b_webdiary  where topicid=$topicid";
		//クエリを実行
		$qresult = mysql_query($qstring);
		if(!$qresult){
			$this->errorm = "DB Error:[$qstring]";
			$this->errors++;
			return false;
		}
		if(!$fresult = mysql_fetch_array($qresult))
		{
			$this->errorm = "日記情報がありません。";
			$this->errors++;
			return false;
		}
		
		$this->topicid = $fresult['topicid'];
		$this->dt = $fresult['dt'];
		$this->lastupdate = $fresult['lastupdate'];
		$this->fdelete = $fresult['fdelete'];
		$this->catid = $fresult['catid'];
		$this->title = $fresult['title'];
		$this->body = $fresult['body'];
		
		return true;
	}

	public function saveTopic( $id='' )
	{
		if( $this->fdelete == '' ){ $delf = 0; } else { $delf = 1; }
		if( $this->topicid == 0 ){
			$qstring = "insert into b_webdiary (dt,lastupdate,fdelete,catid,title,body)values(" .
				"NOW(),NOW(),$delf,$this->catid,'$this->title','$this->body')";
		} else {
			$qstring = "update b_webdiary set ".
				"lastupdate = NOW(), ".
				"fdelete = $delf, ".
				"catid = $this->catid, ".
				"title = '$this->title', ".
				"body = '$this->body' ".
				" where topicid=$this->topicid";
		}
		//クエリを実行
		$qresult = mysql_query($qstring);
		if(!$qresult){
			$this->errorm = "DB Error:[$qstring]";
			$this->errors++;
			return false;
		}
		
		return true;
	}

	public function getTopicsAll()
	{
		$qstring = "select d.topicid,DATE_FORMAT( d.dt,'%Y/%m/%d %T') as  postdatef,d.lastupdate,d.fdelete," .
 			  	"d.catid,b.category,d.title,d.body " . 
				" from b_webdiary d left join b_categories b " .
				" on d.catid = b.catid order by d.dt desc";
		//クエリを実行
		$qresult = mysql_query($qstring);
		if(!$qresult){
			$this->errorm = "DB Error:[$qstring]";
			$this->errors++;
			return false;
		}
		$arr = $this->mysql_fetch_all( $qresult );
		return $arr;
	}

	public function deleteTopics()
	{
		$qstring = "delete from b_webdiary where fdelete = 1";
		//クエリを実行
		$qresult = mysql_query($qstring);
		if(!$qresult){
			$this->errorm = "DB Error:[$qstring]";
			$this->errors++;
			return false;
		}
		
		return true;
	}

	public function getTopics( $linecount )
	{
		$qstring = "select d.topicid,DATE_FORMAT( d.dt,'%Y/%m/%d') as postdatef,DATE_FORMAT( d.dt,'%H:%i') as posttimef,d.lastupdate,d.fdelete," .
			 	"d.catid,b.category,d.title,d.body,YEAR(d.dt) as yyyy,MONTH(d.dt) as mm " . 
				" from b_webdiary d left join b_categories b " .
				" on d.catid = b.catid order by d.dt desc";
		//クエリを実行
		$qresult = mysql_query($qstring);
		if(!$qresult){
			$this->errorm = "DB Error:[$qstring]";
			$this->errors++;
			return false;
		}
		$all = array();
		for ($i=0; $i<$linecount; $i++ ) {
			
			if( $rec = mysql_fetch_assoc($qresult) ){
				$rec['bodyf'] = ereg_replace( "\n","<br>", $rec['body'] );
				$rec['bodyf'] = ereg_replace( "<br><br>","</p>\n<p>", $rec['bodyf'] );
				$rec['bodyf'] = '<p>' . $rec['bodyf'] . '</p>';
				$rec['commentcount'] = $this->getCommentCnt( $rec['topicid'] );
				
				$all[] = $rec;
			}
		}
		return $all;
	}

	public function getTopicsCategory( $catid )
	{
		$qstring = "select d.topicid,DATE_FORMAT( d.dt,'%Y/%m/%d') as postdatef,DATE_FORMAT( d.dt,'%H:%i') as posttimef,d.lastupdate,d.fdelete," .
			  	"d.catid,b.category,d.title,d.body " . 
				" from b_webdiary d left join b_categories b " .
				" on d.catid = b.catid where d.catid=$catid order by d.dt desc";
		//クエリを実行
		$qresult = mysql_query($qstring);
		if(!$qresult){
			$this->errorm = "DB Error:[$qstring]";
			$this->errors++;
			echo( $this->errorm );
			return false;
		}
		$all = array();
		while( $rec = mysql_fetch_assoc($qresult) ){
			$rec['bodyf'] = ereg_replace( "\n","<br>", $rec['body'] );
			$rec['bodyf'] = ereg_replace( "<br><br>","</p>\n<p>", $rec['bodyf'] );
			$rec['bodyf'] = '<p>' . $rec['bodyf'] . '</p>';
			$rec['commentcount'] = $this->getCommentCnt( $rec['topicid'] );
			
			$all[] = $rec;
		}
		return $all;
	}

	public function getTopic( $topicid )
	{
		$qstring = "select d.topicid,DATE_FORMAT( d.dt,'%Y/%m/%d') as postdatef,DATE_FORMAT( d.dt,'%H:%i') as posttimef,d.lastupdate,d.fdelete," .
			 	"d.catid,b.category,d.title,d.body,YEAR(d.dt) as yyyy,MONTH(d.dt) as mm " . 
				" from b_webdiary d left join b_categories b " .
 				" on d.catid = b.catid where topicid=$topicid order by d.dt desc";
		//クエリを実行
		$qresult = mysql_query($qstring);
		if(!$qresult){
			$this->errorm = "DB Error:[$qstring]";
			$this->errors++;
			return false;
		}
		if( $rec = mysql_fetch_assoc($qresult) ){
			$rec['bodyf'] = ereg_replace( "\n","<br>", $rec['body'] );
			$rec['bodyf'] = ereg_replace( "<br><br>","</p>\n<p>", $rec['bodyf'] );
			$rec['bodyf'] = '<p>' . $rec['bodyf'] . '</p>';
			$rec['commentcount'] = $this->getCommentCnt( $rec['topicid'] );
		}
		return $rec;
	}
	
	public function getTopicMonth( $year, $month )
	{
		$qstring = "select DAYOFMONTH( dt ) as dd, topicid " . 
				" from b_webdiary where YEAR(dt)=$year and MONTH(dt)=$month order by dt desc";
		//クエリを実行
		$qresult = mysql_query($qstring);
		if(!$qresult){
			$this->errorm = "DB Error:[$qstring]";
			$this->errors++;
			echo( $this->errorm  );
			return false;
		}
		while( $rec = mysql_fetch_assoc($qresult) ){
			$days[ $rec['dd'] ] = $rec['topicid'];
		}
		return $days;
	}

	public function getTopicsDaily( $year, $month, $day )
	{
		//クエリを実行
		$qstring = "select d.topicid,DATE_FORMAT( d.dt,'%Y/%m/%d') as postdatef,DATE_FORMAT( d.dt,'%H:%i') as posttimef,d.lastupdate,d.fdelete," .
			 	"d.catid,b.category,d.title,d.body " . 
				" from b_webdiary d left join b_categories b " .
				" on d.catid = b.catid where YEAR(dt)=$year and MONTH(dt)=$month and DAYOFMONTH(dt)=$day order by dt desc";
		//クエリを実行
		$qresult = mysql_query($qstring);
		if(!$qresult){
			$this->errorm = "DB Error:[$qstring]";
			$this->errors++;
			echo( $this->errorm );
			return false;
		}
		$all = array();
		while( $rec = mysql_fetch_assoc($qresult) ){
			$rec['bodyf'] = ereg_replace( "\n","<br>", $rec['body'] );
			$rec['bodyf'] = ereg_replace( "<br><br>","</p>\n<p>", $rec['bodyf'] );
			$rec['bodyf'] = '<p>' . $rec['bodyf'] . '</p>';
			$rec['commentcount'] = $this->getCommentCnt( $rec['topicid'] );
			
			$all[] = $rec;
		}
		return $all;

	}
	
	public function makeTopicCalender( $year, $month )
	{
		$calender['datenow'] = sprintf( "%04d/%02d", $year, $month );
		// 指定月 Topic ID 一覧取得
		$topicids = $this->getTopicMonth( $year, $month );
		
		// 指定月 1日の曜日算定 (日曜が0)
		$wday = date("w", $f_day = mktime(0, 0, 0, $month, 1, $year));
		$col = 0;	// 表示位置カウント
		// 
		$cal = '<tr>';
		for( $i=0; $i<$wday; $i++ ){	// 1日まで空欄
			$cal .= '<td>&nbsp;</td>';
			$col++;
		}
		// 日付が 失敗するまで 進める
		$i=0;
		while (checkdate($month, ++$i, $year)) {
			if( $topicids[$i] != '' ){	 	// topic あり
				$cal .= '<td><a href="daily_archives.php?year=' .$year.'&month='.$month.'&day='. $i. '">' .  $i . "</a></td>";
			} else {
				$cal .= "<td>$i</td>";
			}
			$col++;
			if (!( $col % 7 )) $cal .= "</tr><tr>"; 
		}
		for( $i=$wday; $i<7; $i++ ){	// 1日まで空欄
			$cal .= '<td>&nbsp;</td>';
			$col++;
		}
		$cal .= '</tr>';
		
		$calender['view'] = $cal;
		return $calender;
	}
	
	public function getTopicMothlyArc()
	{
		$qstring = "select YEAR(dt) as yyyy,MONTH(dt) as mm,count(topicid) as cnt,MAX( DATE_FORMAT( dt,'%Y/%m') ) as datef " . 
				" from b_webdiary group by  YEAR(dt),MONTH(dt) order by dt desc";
		//クエリを実行
		$qresult = mysql_query($qstring);
		if(!$qresult){
			$this->errorm = "DB Error:[ $qstring]";
			$this->errors++;
			echo( $this->errorm  );
			return false;
		}
		$arr = $this->mysql_fetch_all( $qresult );
		return $arr;
	}
	
	public function getTopicsMonthly( $year, $month ) 
	{
		$qstring = "select d.topicid,DATE_FORMAT( d.dt,'%Y/%m/%d') as postdatef,DATE_FORMAT( d.dt,'%H:%i') as posttimef,d.lastupdate,d.fdelete," .
			 	"d.catid,b.category,d.title,d.body " . 
				" from b_webdiary d left join b_categories b " .
				" on d.catid = b.catid where YEAR(dt)=$year and MONTH(dt)=$month order by d.dt desc";
		//クエリを実行
		$qresult = mysql_query($qstring);
		if(!$qresult){
			$this->errorm = "DB Error:[$qstring]";
			$this->errors++;
			echo( $this->errorm );
			return false;
		}
		$all = array();
		while( $rec = mysql_fetch_assoc($qresult) ){
			$rec['bodyf'] = ereg_replace( "\n","<br>", $rec['body'] );
			$rec['bodyf'] = ereg_replace( "<br><br>","</p>\n<p>", $rec['bodyf'] );
			$rec['bodyf'] = '<p>' . $rec['bodyf'] . '</p>';
			$rec['commentcount'] = $this->getCommentCnt( $rec['topicid'] );
			
			$all[] = $rec;
		}
		return $all;
	}
	
	public function getTopicsSearch( $keywd )
	{
		$qstring = "select d.topicid,DATE_FORMAT( d.dt,'%Y/%m/%d') as postdatef,DATE_FORMAT( d.dt,'%H:%i') as posttimef,d.lastupdate,d.fdelete," .
			 	"d.catid,b.category,d.title,d.body " . 
				" from b_webdiary d left join b_categories b " .
				" on d.catid = b.catid where d.title regexp '$keywd' or d.body regexp '$keywd' order by d.dt desc";
		//クエリを実行
		$qresult = mysql_query($qstring);
		if(!$qresult){
			$this->errorm = "DB Error:[$qstring]";
			$this->errors++;
			echo( $this->errorm );
			return false;
		}
		$all = array();
		while( $rec = mysql_fetch_assoc($qresult) ){
			$rec['bodyf'] = ereg_replace( "\n","<br>", $rec['body'] );
			$rec['bodyf'] = ereg_replace( "<br><br>","</p>\n<p>", $rec['bodyf'] );
			$rec['bodyf'] = '<p>' . $rec['bodyf'] . '</p>';
			$rec['commentcount'] = $this->getCommentCnt( $rec['topicid'] );
			
			$all[] = $rec;
		}
		return $all;
	}
	
	public function getCommentCnt( $topicid )
	{
		$qstring = "select count(*) as cnt from b_comments where topicid=$topicid";
		//クエリを実行
		$qresult = mysql_query($qstring);
		if(!$qresult){
			$this->errorm = "DB Error:[$qstring]";
			$this->errors++;
			return false;
		}
		$rec = mysql_fetch_assoc($qresult);
		return $rec['cnt'];
	}
	// プロパティ参照
	function __get( $property )
	{
		return $this->$property;
	}
	// プロパティセット
	function __set( $property, $value )
	{
		$this->$property = $value;
	}
} //クラス終了
 

?>

powered by Quick Homepage Maker 4.25
based on PukiWiki 1.4.7 License is GPL. QHM

最新の更新 RSS  Valid XHTML 1.0 Transitional