Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ขอถามเกี่ยวกับการทำ nested comment หน่อยครับ..............?



 

ขอถามเกี่ยวกับการทำ nested comment หน่อยครับ..............?

 



Topic : 078491



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์




ที่ต้องการจะทำ
คือผมจะทำให้มีการแสดงความคิดเห็นเป็นแบบไล่ลำดับ เหมือนกับลำดับของหมวดหมู่แบบนั้นน่ะครับ
อย่างเช่นคนแรกตอบ พอมีคนกดตอบต่อจากคนแรก ก็จะลำดับย่อยลึกเข้าไปตามนี้ครับ
1
-1.1
--1.1.1
---1.1.1.1
-1.2
2

ซึ่งตัวเลขก็คือสมมุติว่าเป็นคำตอบนะครับ คำตอบของคนแรกคือ 1
พอคนเข้ามาตอบคนแรกก็คือ 1.1 ลึกเข้าไปเรื่อยๆตามนี้น่ะครับ



ผมมีตารางดังนี้
ตารางคคห.
โดย parent_id จะอ้างอิงไปยัง comment_id
post_id คือ id โพสต์หรือบทความ

ตรง thread เนี่ย ผมดูไอเดียจาก drupal มันจะเป็นแบบนี้
ตามลำดับจากตัวอย่างต้นแบบข้างบนนะครับ
01/
01.00/
01.00.00/
01.00.00.00/
01.01/
02/



คำถามคือ
ผมจะเขียนโค้ดยังไงให้มันแสดงออกมาเป็นแบบนี้
Code (PHP)
<article>1</article>
    <div class="indent">
        <article>1.1</article>
        <div class="indent">
            <article>1.1.1</article>
            <div class="indent">
                <article>1.1.1.1</article>
            </div>
        </div>
        <article>1.2</article>
    </div>
<article>2</article>


และผมจะเขียนโค้ด insert ยังไงครับเนี่ย @_@ ??



Tag : PHP, MySQL









ประวัติการแก้ไข
2012-05-16 17:40:31
2012-05-16 17:40:54
2012-05-16 17:41:11
2012-05-16 17:41:23
2012-05-16 17:42:09
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-05-16 17:40:08 By : mr.v View : 118876 Reply : 15
 

 

No. 1



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์









แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-17 17:59:48 By : mr.v
 


 

No. 2



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ผมพอคิดลักษณะง่ายๆ คล้ายๆ ด้านบนคับ แต่ไอ้ด้านบนที่บอกมาคิดว่าจะยากสำหรับผม นะ

ลองดูละกัน ว่าพอจะปรับได้ไหม
Code (PHP)
$posts = array();
$posts[] = array('thread' =>'01', 'body'=> 'test1');
$posts[] = array('thread' =>'01.00', 'body'=> 'test2');
$posts[] = array('thread' =>'01.00.00', 'body'=> 'test3');
$posts[] = array('thread' =>'01.00.01',  'body'=> 'test4');
$posts[] = array('thread' =>'01.00.00.00', 'body'=> 'test5');
$posts[] = array('thread' =>'01.01', 'body'=> 'test6');
$posts[] = array('thread' =>'02', 'body'=> 'test7');

$last_stack = -1;
$stack = 0;
foreach ($posts as $post)
{
	$stack = count(explode('.', $post['thread'])) - 1;
	
	if ($last_stack != $stack)
		echo '<div style="color:red; margin-left:'.(20 * $stack).'px">'.$post['thread'].'</div>';
	$last_stack = $stack;
	
	echo '<div style="margin-left:'.(20 * $stack).'px">';
	echo $post['body'];
	echo '</div>';
}


ลองเทสต์ดูคับ


ประวัติการแก้ไข
2012-05-17 20:31:38
2012-05-17 20:33:04
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-17 20:26:16 By : pjgunner.com
 

 

No. 3



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


เทสต์แล้วไม่ได้อะครับ ผมทำส่วน insert เสร็จหมดแล้ว ทีนี้ตรงแสดง comment แบบลำดับชั้น (nested) มันยากจริง!

คุณเอี่ยวลองโหลดไปทดลองดูครับ
http://code.google.com/p/agni-cms/downloads/list อันที่เขียนว่า 1.0.6.1 นะครับ

จากข้างบน มันไม่ได้แสดงมาเป็นลำดับๆอะครับ คือมันลำดับ indent ก็จริง แต่มันไม่ได้คลุมพวก child ด้วย
มันคล้ายๆแบบนี้
Code (PHP)
<ul>
    <li>1
        <ul>
            <li>1.1</li>
       </ul>
    </li>
    <li>2</li>
</ul>


แต่อยากให้มันเป็นแบบนี้.
Code (PHP)
<article>1</article>
    <div class="indent">
        <article>1.1</article>
        <div class="indent">
            <article>1.1.1</article>
            <div class="indent">
                <article>1.1.1.1</article>
            </div>
        </div>
        <article>1.2</article>
    </div>
<article>2</article>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-17 22:20:16 By : mr.v
 


 

No. 4



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


แล้วจะต้องแบ่งหน้าด้วยอีกนี่ล่ะครับ -__________-"
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-17 22:31:35 By : mr.v
 


 

No. 5



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

คิดว่าโค้ดนี้น่าจะโอเค ผมทดสอบใช้ด้วย ul

Code (PHP)
$posts = array();
$posts[] = array('thread' =>'01', 'body'=> 'test1');
$posts[] = array('thread' =>'01.00', 'body'=> 'test2');
$posts[] = array('thread' =>'01.00.00', 'body'=> 'test3');
$posts[] = array('thread' =>'01.00.01',  'body'=> 'test4');
$posts[] = array('thread' =>'01.00.00.00', 'body'=> 'test5');
$posts[] = array('thread' =>'01.01', 'body'=> 'test6');
$posts[] = array('thread' =>'02', 'body'=> 'test7');
$posts[] = array('thread' =>'02.00', 'body'=> 'test8');
$posts[] = array('thread' =>'02.01', 'body'=> 'test9');
$posts[] = array('thread' =>'02.02', 'body'=> 'test10');
$posts[] = array('thread' =>'02.02.00', 'body'=> 'test11');

$last_stack = -1;
$stack = 0;

echo '<ul>';
foreach ($posts as $post)
{
	$stack = count(explode('.', $post['thread'])) -1;
	
	if ($last_stack == -1 || $last_stack == $stack)
	{
//		if ($last_stack == -1) //  stack title
//			echo '<li style="color:green">'.$post['thread'].'</li>'; //  stack title

		echo '<li>'.$post['body'].'</li>';
	}
	elseif ($stack > $last_stack)
	{
		echo '<ul>';
//		echo '<li style="color:green">'.$post['thread'].'</li>';//  stack title
		echo '<li>'.$post['body'].'</li>';
	}
	elseif ($stack < $last_stack)
	{
		$back_stack = $last_stack - $stack;
		for ($i=0; $i < $back_stack; $i++)
			echo '</ul>';
		
		echo '<li>'.$post['body'].'</li>';
	}
	
	$last_stack = $stack;
}
echo '</ul>';


tttttttt

ไม่เคยใช้ <article>
เอา คอมเมนต์ บรรทัดที่ มี stack title ออก เพื่อแสดงหัว


ประวัติการแก้ไข
2012-05-17 23:56:48
2012-05-18 00:05:21
2012-05-18 00:10:00
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-17 23:55:11 By : pjgunner.com
 


 

No. 6



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


ul li มันไม่ซ้อนกันอย่างถูกต้องอะครับคุณเอี่ยว

Code
-- phpMyAdmin SQL Dump
-- version 3.3.10
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: May 18, 2012 at 12:30 AM
-- Server version: 5.5.23
-- PHP Version: 5.3.11

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Database: `v_agni`
--

-- --------------------------------------------------------

--
-- Table structure for table `an_comments`
--

CREATE TABLE IF NOT EXISTS `an_comments` (
`comment_id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NOT NULL DEFAULT '0',
`post_id` int(11) DEFAULT NULL,
`account_id` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL COMMENT 'comment author''s name',
`subject` varchar(255) DEFAULT NULL,
`comment_body_value` longtext,
`email` varchar(255) DEFAULT NULL COMMENT 'comment author''s email',
`homepage` varchar(255) DEFAULT NULL COMMENT 'comment author''s homepage',
`comment_status` int(1) NOT NULL DEFAULT '0' COMMENT '0=not publish, 1=published',
`comment_spam_status` varchar(100) NOT NULL DEFAULT 'normal' COMMENT 'comment spam status (normal, spam, ham, what ever)',
`ip_address` varchar(50) DEFAULT NULL,
`user_agent` varchar(255) DEFAULT NULL,
`comment_add` bigint(20) DEFAULT NULL,
`comment_add_gmt` bigint(20) DEFAULT NULL,
`comment_update` bigint(20) DEFAULT NULL,
`comment_update_gmt` bigint(20) DEFAULT NULL,
`thread` varchar(255) DEFAULT NULL,
PRIMARY KEY (`comment_id`),
KEY `account_id` (`account_id`),
KEY `post_id` (`post_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=30 ;

--
-- Dumping data for table `an_comments`
--

INSERT INTO `an_comments` (`comment_id`, `parent_id`, `post_id`, `account_id`, `name`, `subject`, `comment_body_value`, `email`, `homepage`, `comment_status`, `comment_spam_status`, `ip_address`, `user_agent`, `comment_add`, `comment_add_gmt`, `comment_update`, `comment_update_gmt`, `thread`) VALUES
(1, 0, 37, 1, 'admin', '1', '1', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337200900, 1337175700, 1337200900, 1337175700, '1/'),
(2, 0, 37, 1, 'admin', '2', '2', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337200905, 1337175705, 1337200905, 1337175705, '2/'),
(3, 0, 37, 1, 'admin', '3', '3', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337200910, 1337175710, 1337200910, 1337175710, '3/'),
(4, 1, 37, 1, 'admin', '1.1', '1.1', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337200973, 1337175773, 1337200973, 1337175773, '1.1/'),
(5, 1, 37, 1, 'admin', '1.2', '1.2', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337200982, 1337175782, 1337200982, 1337175782, '1.2/'),
(6, 4, 37, 1, 'admin', '1.1.1', '1.1.1', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337200995, 1337175795, 1337200995, 1337175795, '1.1.1/'),
(7, 4, 37, 1, 'admin', '1.1.2', '1.1.2', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337201001, 1337175801, 1337201001, 1337175801, '1.1.2/'),
(8, 5, 37, 1, 'admin', '1.2.1', '1.2.1', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337201023, 1337175823, 1337201023, 1337175823, '1.2.1/'),
(9, 5, 37, 1, 'admin', '1.2.2', '1.2.2', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337201029, 1337175829, 1337201029, 1337175829, '1.2.2/'),
(10, 6, 37, 1, 'admin', '1.1.1.1', '1.1.1.1', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337201156, 1337175956, 1337201156, 1337175956, '1.1.1.1/'),
(14, 0, 37, 1, 'admin', '4', '4', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337252839, 1337227639, 1337252839, 1337227639, '4/'),
(15, 14, 37, 1, 'admin', '4.1', '4.1', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337252851, 1337227651, 1337252851, 1337227651, '4.1/'),
(16, 15, 37, 1, 'admin', '4.1.1', '4.1.1', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337252860, 1337227660, 1337252860, 1337227660, '4.1.1/'),
(17, 15, 37, 1, 'admin', '4.1.2', '4.1.2', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337255387, 1337230187, 1337255387, 1337230187, '4.1.2/'),
(18, 15, 37, 0, 'chrome', '4.1.3', '4.1.3', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19', 1337255539, 1337230339, 1337255539, 1337230339, '4.1.3/'),
(19, 15, 37, 0, 'chrome', '4.1.4', '4.1.4', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19', 1337255656, 1337230456, 1337255656, 1337230456, '4.1.4/'),
(20, 15, 37, 1, 'admin', '4.1.5', '4.1.5', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337255813, 1337230613, 1337255813, 1337230613, '4.1.5/'),
(21, 15, 37, 0, 'chrome', '4.1.6', '4.1.6', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19', 1337255850, 1337230650, 1337255850, 1337230650, '4.1.6/'),
(22, 15, 37, 0, 'chrome', '4.1.7', '4.1.7', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19', 1337256370, 1337231170, 1337256370, 1337231170, '4.1.7/'),
(23, 15, 37, 0, 'chrome', '4.1.8', '4.1.8', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19', 1337256512, 1337231312, 1337256512, 1337231312, '4.1.8/'),
(24, 15, 37, 0, 'chrome', '4.1.9', '4.1.9', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19', 1337256626, 1337231426, 1337256626, 1337231426, '4.1.9/'),
(25, 15, 37, 0, 'chrome', '4.1.10', '4.1.10', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19', 1337256709, 1337231509, 1337256709, 1337231509, '4.1.10/'),
(26, 14, 37, 1, 'admin', '4.2', '4.2', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', 1337256909, 1337231709, 1337256909, 1337231709, '4.2/'),
(27, 2, 37, 0, 'chrome', '2.1', '2.1', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19', 1337266122, 1337240922, 1337266122, 1337240922, '2.1/'),
(28, 2, 37, 0, 'chrome', '2.2', '2.2', NULL, NULL, 1, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19', 1337266197, 1337240997, 1337266197, 1337240997, '2.2/'),
(29, 0, 37, 0, 'chrome', '5', '5', NULL, NULL, 0, 'normal', '::1', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19', 1337266529, 1337241329, 1337266529, 1337241329, '5/');


ลอง sql ไปดู

Code (PHP)
select * from an_comments where 1 and comment_status = 1 and post_id = '37' order by abs(thread) asc 




มันออกมาเป็น Code
<ul><li>1</li><ul><li>1.1</li><ul><li>1.1.1</li><li>1.1.2</li><ul><li>1.1.1.1</li></ul></ul><li>1.2</li><ul><li>1.2.1</li><li>1.2.2</li></ul></ul><li>2</li><ul><li>2.1</li><li>2.2</li></ul><li>3</li><li>4</li><ul><li>4.1</li><ul><li>4.1.1</li><li>4.1.2</li><li>4.1.3</li><li>4.1.4</li><li>4.1.5</li><li>4.1.6</li><li>4.1.7</li><li>4.1.8</li><li>4.1.9</li><li>4.1.10</li></ul><li>4.2</li></ul>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-18 00:33:53 By : mr.v
 


 

No. 7



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ผืดอะไรตรงไหนเหรอคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-18 00:46:41 By : pjgunner.com
 


 

No. 8



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


มันไม่ได้ลำดับซ้อนกันอะครับ

<ul><li>1</li><ul><li>1.1</li><ul><li>1.1.1</li><li>1.1.2</li><ul><li>1.1.1.1</li></ul></ul><li>1.2</li><ul><li>1.2.1</li><li>1.2.2</li></ul></ul><li>2</li><ul><li>2.1</li><li>2.2</li></ul><li>3</li><li>4</li><ul><li>4.1</li><ul><li>4.1.1</li><li>4.1.2</li><li>4.1.3</li><li>4.1.4</li><li>4.1.5</li><li>4.1.6</li><li>4.1.7</li><li>4.1.8</li><li>4.1.9</li><li>4.1.10</li></ul><li>4.2</li></ul>

มันเรียงติดทางซ้ายเป็นพรืดเลยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-18 00:52:54 By : mr.v
 


 

No. 9



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

<ul><li>1</li><ul><li>1.1</li><ul><li>1.1.1</li><li>1.1.2</li><ul><li>1.1.1.1</li></ul></ul><li>1.2</li><ul><li>1.2.1</li><li>1.2.2</li></ul></ul><li>2</li><ul><li>2.1</li><li>2.2</li></ul><li>3</li><li>4</li><ul><li>4.1</li><ul><li>4.1.1</li><li>4.1.2</li><li>4.1.3</li><li>4.1.4</li><li>4.1.5</li><li>4.1.6</li><li>4.1.7</li><li>4.1.8</li><li>4.1.9</li><li>4.1.10</li></ul><li>4.2</li></ul>

555


หมายความว่า มันเรียงลำดับ html ไม่ถูกต้อง หรือมัน ไม่ขึ้นบรรทัดใหม่ ไม่ indent ?

หรือว่ารูปแบบที่ต้องการไม่ใช่ตามในรูป ?


ประวัติการแก้ไข
2012-05-18 00:59:49
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-18 00:57:52 By : pjgunner.com
 


 

No. 10



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

พอเข้าใจละ คับ เด๋วนอนก่อน เป็นไข้ ไว้จะดูทีหลังคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-18 01:02:30 By : pjgunner.com
 


 

No. 11



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


ครับ

ทั้ง html ไม่ถูก ทั้งไม่ indent อะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-18 01:05:06 By : mr.v
 


 

No. 12



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


ได้แล้วครับคุณเอี่ยว ผมเอาของคุณเอี่ยวมาแปลง
Quote:
#No. 5


ออกมาได้อย่างเป๊ะ แล้วยังทำ paginate ได้เป๊ะอีกด้วย

คุณเอี่ยวต้องการลง credit มั้ยครับ ถ้าลงเอาชื่อ url หรืออื่นๆที่จะลงใน
/**
@ <-- ตรงนี้มาให้ผม เดี๋ยวผมลงให้


ตัวอย่าง

/**
* @author vee w.
* @link http://www.domain.tld
*
*/
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-18 07:34:53 By : mr.v
 


 

No. 13



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

คิดว่าโค้ดนี่จะได้ html ที่ถูกต้องที่สุดนะคับ เพียงแต่การทำ indent มันลำบากยิ่งกว่าอีก

Code (PHP)
$posts = array();
$posts[] = array('thread' =>'01', 'body'=> 'test1');
$posts[] = array('thread' =>'01.00', 'body'=> 'test2');
$posts[] = array('thread' =>'01.00.00', 'body'=> 'test3');
$posts[] = array('thread' =>'01.00.01',  'body'=> 'test4');
$posts[] = array('thread' =>'01.00.00.00', 'body'=> 'test5');
$posts[] = array('thread' =>'01.01', 'body'=> 'test6');
$posts[] = array('thread' =>'02', 'body'=> 'test7');
$posts[] = array('thread' =>'02.00', 'body'=> 'test8');
$posts[] = array('thread' =>'02.01', 'body'=> 'test9');
$posts[] = array('thread' =>'02.02', 'body'=> 'test10');
$posts[] = array('thread' =>'02.02.00', 'body'=> 'test11');

$post_count = count($posts);
$last_stack = -1;
$counter = $stack = 0;

echo '<ul>';
foreach ($posts as $post)
{
	$counter++;
	$stack = count(explode('.', $post['thread'])) - 1;
	
	if ($last_stack === $stack || $last_stack === -1)
	{
		echo '<li>'.$post['body'].'</li>';
	}
	elseif ($stack > $last_stack)
	{
		echo '<li>';
		echo '<ul>';
		echo '<li>'.$post['body'].'</li>';
	}
	elseif ($stack < $last_stack)
	{
		$back_stack = $last_stack - $stack;
		for ($i=0; $i < $back_stack; $i++)
			echo '</ul></li>';
		
		echo '<li>'.$post['body'].'</li>';
	}
	
	if ($post_count === $counter)
	{
		for ($i=0; $i < $stack; $i++)
			echo '</ul></li>';
	}
	
	$last_stack = $stack;
}
echo '</ul>';


OKBABY

Quote:
<ul><li>test1</li><li><ul><li>test2</li><li><ul><li>test3</li><li>test4</li><li><ul><li>test5</li></ul></li></ul></li><li>test6</li></ul></li><li>test7</li><li><ul><li>test8</li><li>test9</li><li>test10</li><li><ul><li>test11</li></ul></li></ul></li></ul>


หลังจาก เอามาทำ indent
Code (PHP)
<ul>
	<li>test1</li>
    <li>
    	<ul>
        	<li>test2</li>
            <li>
            	<ul>
                	<li>test3</li>
                    <li>test4</li>
                    <li>
                    	<ul>
                        	<li>test5</li>
                        </ul>
                    </li>
                </ul>
           </li>
           <li>test6</li>
       </ul>
    </li>
    <li>test7</li>
    <li>
    	<ul>
        	<li>test8</li>
            <li>test9</li>
            <li>test10</li>
            <li>
            	<ul>
                	<li>test11</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>



ประวัติการแก้ไข
2012-05-18 08:38:25
2012-05-18 08:45:46
2012-05-18 08:59:59
2012-05-18 09:01:37
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-18 08:34:23 By : pjgunner.com
 


 

No. 14



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ขอ @logic by PJGUNNER www.pjgunner.com

จริงๆ li แทกปิด เป็น optional ไม่ใส่ก็ได้


ประวัติการแก้ไข
2012-05-18 08:54:15
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-18 08:49:38 By : pjgunner.com
 


 

No. 15



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


indent ที่ผมว่านี่หมายถึง <ul>ที่ถูกซ้อนอยู่ใน <li> ครับ ซึ่งมันไม่ซ้อนกันตามที่ผมเอาไปทำ
มันได้แบบนี้
Code
<ul>
<li>1</li><ul><li>1.1</li><ul><li>1.1.1</li><li>1.1.2</li><ul><li>1.1.1.1</li></ul></ul><li>1.2</li><ul><li>1.2.1</li><li>1.2.2</li></ul></ul><li>2</li><ul><li>2.1</li><li>2.2</li></ul><li>3</li><li>4</li><ul><li>4.1</li><ul><li>4.1.1</li><li>4.1.2</li><li>4.1.3</li><li>4.1.4</li><li>4.1.5</li><li>4.1.6</li><li>4.1.7</li><li>4.1.8</li><li>4.1.9</li><li>4.1.10</li></ul><li>4.2</li></ul>

มันก็เลยไม่ได้ตาม screenshot ติดกันทางซ้ายเป็นพรืดเลยไม่มีการ indent เลยน่ะครับ
เพราะที่ถูกตรงที่ไฮไลท์ไว้ควรจะเป็น <li>1<ul><li>1.1<ul><li>1.1.1 ซึ่งมันซ้อนกันถูกต้อง


************************


ส่วนอันนี้โค้ดที่ผมเอาไปปรับ
Code (PHP)
	function comment_view( $comments = '' ) {
		if ( !isset( $comments['items'] ) ) {return '<p class="list-comment-no-comment no-comment">'.$this->lang->line( 'comment_no_comment' ).'</p>';}
		$stack = 1;
		$output = '';
		//$output .= '<article>'.$row->comment_body_value.' - id:'.$row->comment_id.' - parent:'.$row->parent_id.' - thread:'.$row->thread.'</article>'."\n";// prototype
		if ( is_array( $comments['items'] ) ) {
			foreach ( $comments['items'] as $row ) {
				$stack = count( explode( '.', $row->thread ) );
				if ( ( $stack > $this->divs ) ) {
					for ( $i = $this->divs; $i < $stack; $i++ ) {
						$output .= '<div class="indent">'."\n";
						$this->divs = ($this->divs+1);
					}
				} elseif ( $stack < $this->divs ) {
					$back_stack = (($this->divs)-$stack);
					for ( $i = 0; $i < $back_stack; $i++ ) {
						$output .= '</div>'."\n";
						$this->divs = ($this->divs-1);
					}
				}
				$output .= '<article>'.$row->comment_body_value.' - id:'.$row->comment_id.' - parent:'.$row->parent_id.' - thread:'.$row->thread.' - stack:'.$stack.' - divs:'.$this->divs
						/*.' '.anchor( current_url().'?replyto='.$row->comment_id.'#addcomment', 'reply' )*/
						.'</article>'."\n";
			}
			for ( $i = $this->divs; $i > 1; $i-- ) {
				$output .= '</div>'."\n";
				$this->divs = ($this->divs-1);
			}
		}
		return $output;
	}// comment_view


และได้ตามนี้ ss threaded comment
Code
<article>1 - id:1 - parent:0 - thread:1/ - stack:1 - divs:1</article>
<div class="indent">
<article>1.1 - id:4 - parent:1 - thread:1.1/ - stack:2 - divs:2</article>
<div class="indent">
<article>1.1.1 - id:6 - parent:4 - thread:1.1.1/ - stack:3 - divs:3</article>
<div class="indent">
<article>1.1.1.1 - id:10 - parent:6 - thread:1.1.1.1/ - stack:4 - divs:4</article>
<div class="indent">
<article>1.1.1.1.1 - id:30 - parent:10 - thread:1.1.1.1.1/ - stack:5 - divs:5</article>
<div class="indent">
<article>1.1.1.1.1.1 - id:31 - parent:30 - thread:1.1.1.1.1.1/ - stack:6 - divs:6</article>
<div class="indent">
<article>1.1.1.1.1.1.1 - id:32 - parent:31 - thread:1.1.1.1.1.1.1/ - stack:7 - divs:7</article>
<div class="indent">
<article>1.1.1.1.1.1.1.1 - id:33 - parent:32 - thread:1.1.1.1.1.1.1.1/ - stack:8 - divs:8</article>
<div class="indent">
<article>1.1.1.1.1.1.1.1.1 - id:34 - parent:33 - thread:1.1.1.1.1.1.1.1.1/ - stack:9 - divs:9</article>
</div>
</div>
</div>
</div>
</div>
</div>
<article>1.1.2 - id:7 - parent:4 - thread:1.1.2/ - stack:3 - divs:3</article>
</div>
<article>1.2 - id:5 - parent:1 - thread:1.2/ - stack:2 - divs:2</article>
<div class="indent">
<article>1.2.1 - id:8 - parent:5 - thread:1.2.1/ - stack:3 - divs:3</article>
<article>1.2.2 - id:9 - parent:5 - thread:1.2.2/ - stack:3 - divs:3</article>
</div>
</div>
<article>2 - id:2 - parent:0 - thread:2/ - stack:1 - divs:1</article>
<div class="indent">
<article>2.1 - id:27 - parent:2 - thread:2.1/ - stack:2 - divs:2</article>
<article>2.2 - id:28 - parent:2 - thread:2.2/ - stack:2 - divs:2</article>
</div>
<article>3 - id:3 - parent:0 - thread:3/ - stack:1 - divs:1</article>
<article>4 - id:14 - parent:0 - thread:4/ - stack:1 - divs:1</article>
<div class="indent">
<article>4.1 - id:15 - parent:14 - thread:4.1/ - stack:2 - divs:2</article>
<div class="indent">
<article>4.1.1 - id:16 - parent:15 - thread:4.1.1/ - stack:3 - divs:3</article>
<article>4.1.10 - id:25 - parent:15 - thread:4.1.10/ - stack:3 - divs:3</article>
<article>4.1.2 - id:17 - parent:15 - thread:4.1.2/ - stack:3 - divs:3</article>
<article>4.1.3 - id:18 - parent:15 - thread:4.1.3/ - stack:3 - divs:3</article>
<article>4.1.4 - id:19 - parent:15 - thread:4.1.4/ - stack:3 - divs:3</article>
<article>4.1.5 - id:20 - parent:15 - thread:4.1.5/ - stack:3 - divs:3</article>
<article>4.1.6 - id:21 - parent:15 - thread:4.1.6/ - stack:3 - divs:3</article>
<article>4.1.7 - id:22 - parent:15 - thread:4.1.7/ - stack:3 - divs:3</article>
<article>4.1.8 - id:23 - parent:15 - thread:4.1.8/ - stack:3 - divs:3</article>
<article>4.1.9 - id:24 - parent:15 - thread:4.1.9/ - stack:3 - divs:3</article>
</div>
<article>4.2 - id:26 - parent:14 - thread:4.2/ - stack:2 - divs:2</article>
</div>



ประวัติการแก้ไข
2012-05-18 12:27:20
2012-05-18 12:33:39
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-18 12:25:33 By : mr.v
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ขอถามเกี่ยวกับการทำ nested comment หน่อยครับ..............?
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่