|
|
|
ขอสอบถามเรื่องการแบ่งหน้าเพจหน่อยครับ กรณีแบบนี้ครับ |
|
|
|
|
|
|
|
ผมว่าลอง serch joomla paginator ดูครับ joomla มันมีอยู่นะครับ
|
|
|
|
|
Date :
2015-01-20 10:30:25 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตัวนี้ผมเขียนขึ้นมามันไม่ได้ผูกกับ Joomla ครับพี่ชัย คือแค่สร้างคอมโพเน้น แล้วเรียกคิวรี่เองเลย แต่การเรียกคิวรี่ของมัน
จะต้องเรียกตามที่ระบบเขียนคือข้างต้นอ่ะครับ ผมเลยทำหน้าเพจต่อไม่ได้เหอๆ
ส่วนระบบเสิท ก็เช่นกันอ่ะครับ ตอนนี้แค่สับสนว่าจะ แบ่งเพจไงดี ถ้าคิวรี่แบบนี้
|
|
|
|
|
Date :
2015-01-20 11:00:14 |
By :
sarut14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$where = ' where ....'; // กำหนด where clause สำหรับ การค้นหา
$sql = 'select count( primary_field ) as all_rows from table ' . $where; // เอา $where มาต่อ คิวรี่ count all rows
$rs=mysql_query($sql) or die( $sql . "\n" . mysql_error() );
$ro=mysql_fetch_assoc($rs);
$all_rows=$ro['all_rows']; // set $all_rows = field all_rows
$per_page = 20; // กำหนด จำนวน ต่อ หน้า
$current_page = isset( $_REQUEST['current_page']) ? $_REQUEST['current_page'] : 1;
// กำหนดหน้าปัจจุบันที่จะแสดง ถ้ามีการส่ง request มา ให้ใช้ค่านั้น แต่ถ้าไม่มี ให้กำหนดเป็น 1
$sql = 'select * from table ' . $where .
' order by blabla ' . // กำหนดวิธีการจัดเรียง
' limit ' . ( $current_page * $per_page - $per_page ) . ' , ' . $per_page ; // กำหนดแสดง record ที่เท่าไร จำนวนกี่บันทัด
$rs=mysql_query($sql) or die( $sql . "\n" . mysql_error() );
while( $ro=mysql_fetch_assoc($rs){
print_r($ro);
}
จากโค๊ดตัวอย่างอันแรก ผมว่าน่าจะแกะโค๊ดได้แล้วนะครับ
|
|
|
|
|
Date :
2015-01-20 13:06:49 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ท่อนนี้อ่ะครับ VS.คือปกติโค๊ดทั่วไปจะประกาศค่าเหมือนๆกัน แต่ของ Joomla มันประกาศแบบนี้อ่ะครับ เลยใส่พวก
$Num_Rows = mysql_num_rows($objQuery); บางอย่างไม่ออกไม่อ่ะครับ
Code (PHP)
<?php
$objConnect = mysql_connect("localhost","root","1234") or die("Error Connect to Database");
$objDB = mysql_select_db("develope_ttd_km");
$strSQL = "SELECT feed.*, cats.name ";
$strSQL .= "From tb_feed_rss AS feed ";
$strSQL .= "left join tb_k2_categories AS cats ON feed.id_cat = cats.id ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$Num_Rows = mysql_num_rows($objQuery);
$strSQL3 .=" order by feed.id ASC LIMIT $Page_Start , $Per_Page";
$objQuery = mysql_query($strSQL3);
Code (PHP)
<?php
$db3 = JFactory::getDBO();
$strSQL3 = "SELECT feed.*, cats.name ";
$strSQL3.= "From #__feed_rss AS feed ";
$strSQL3.= "left join #__k2_categories AS cats ON feed.id_cat = cats.id ";
$strSQL3.= "order by feed.id desc ";
//$db3->setQuery($strSQL3);
$objQuery = mysql_query($strSQL3) or die ("Error Query [".$strSQL3."]");
//$rs3 = $db3->loadAssocList();
//ตัวที่ผมปิดจะใช้ได้ แต่พอแทนด้วย $objQuery เออเร่อครับ
$Num_Rows = mysql_num_rows($objQuery);
?>
ส่วนท่อนนี้อ่ะครับ
Code (PHP)
<?php foreach ($rs3 as $feed ): ?>
<tr>
<td><?php echo $feed['name'] ?></td>
<td><a href="<?php echo $uri_feed ?>" target="new"><?php echo $uri_feed ?></a></td>
<td><a href="index.php?option=com_k2exporter&task=del_feedth&del_feed_th=<?php echo $feed['id'];?>">Remove</a></td>
<input type="hidden" name="option" value="com_k2exporter" />
<input type="hidden" name="task" value="del_feed_th" />
</tr>
<?php endforeach;?>
กับท่อนนี้ครับ ผมงงช่วงลูปอ่ะครับ ถ้าจะเอา Foreach แทน while หรือจะเอา while แทน ยังไงดีครับ ปกติโค๊ดที่ใช้กันในเวป
จะใช้ while ส่วนมาก
Code (PHP)
<?php
while($objResult = mysql_fetch_array($objQuery))
{
?>
<tr>
<td><div align="center"><?php echo $objResult["id"];?></div></td>
<td><?php echo $objResult["name"];?></td>
<td><?php echo $objResult["file_feed"];?></td>
<td><div align="center"><?php echo $objResult["file_date"];?></div></td>
<td align="right"><?php echo $objResult["link"];?></td>
</tr>
<?php
}
?>
</table>
|
ประวัติการแก้ไข 2015-01-20 13:36:33 2015-01-20 13:41:57
|
|
|
|
Date :
2015-01-20 13:33:57 |
By :
sarut14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
08.$rs3 = $db3->loadAssocList(); // loadAssocList เป้น array มาครบทุก record แล้วครับ
เลือกเอาครับว่าจะใช้แบบไหน
Code (PHP)
foreach( $rs3 as $row){
// เอา $row ไปใช้ได้เลยครับ
print_r( $row);
}
//////////////////////////////////////
$i=0; $c=count($rs3)
while( $i<$c){
$row=$rs3[$i];
// ทำสิ่งที่ต้องการ ...
print_r( $row);
$i++;
}
//////////////////////////////////////
$i=0; $c=count($rs3)
for( $i; $i<$c; $i++){
$row=$rs3[$i];
// ทำสิ่งที่ต้องการ ...
print_r( $row);
}
|
|
|
|
|
Date :
2015-01-20 13:46:14 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือผมอาจจะไม่ไม่เข้าใจเลยครับ เรื่องการคิวรี่แบบฉบับที่ผมเขียน คือตอนนี้การเรียก row มาเพื่อแสดงตาราง
ไม่ติดปัญหาครับ ผมติดแค่ เรื่องการแบ่งเพจหน้าอ่ะครับ กับ การแทรกการเสิทลงไปครับ
เพราะผมดันไปติดการใช้คิวรี่แบบสั้นๆ รวมไปถึงการใช้ foreach เรียกตาราง พอมาทำเพจแบ่งหน้าเลยงงครับ
Code (PHP)
<table class="adminlist">
<tr>
<td><b>หมวดหมู่<b></td>
<td><b>URL RSS</b></td>
<td><b>ลบ</b></td>
</tr>
<?php foreach ($rs3 as $feed ):
$uri_feed = JURI::root()."media/k2/xml_feed_th/".$feed['file_feed'];
$file_feed = JPATH_ROOT . DS . 'media' . DS . 'k2' . DS .'xml_rss' .DS.$feed['file_feed'];
?>
<tr>
<td><?php echo $feed['name'] ?></td>
<td><a href="<?php echo $uri_feed ?>" target="new"><?php echo $uri_feed ?></a></td>
<td><a href="index.php?option=com_k2exporter&task=del_feedth&del_feed_th=<?php echo $feed['id'];?>">Remove</a></td>
<input type="hidden" name="option" value="com_k2exporter" />
<input type="hidden" name="task" value="del_feed_th" />
</tr>
<?php endforeach;?>
</table>
จากข้างต้นของโค๊ด ผมเรียกคิวรี่ออกมา แล้วเรียกตารางหรือ ทีนี้พอจะต่อยอดแบ่งหน้า พอเจอโค๊ดที่สอนๆกัน
เขาจะใช้วิธีอีกแบบในการคิวรี่อ่ะครับ
|
|
|
|
|
Date :
2015-01-20 14:02:57 |
By :
sarut14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$select = "SELECT feed.*, cats.name ";
$from= " FROM #__feed_rss AS feed LEFT JOIN #__k2_categories AS cats ON feed.id_cat = cats.id ";
$where = ''; // กำหนด where clause สำหรับ การค้นหา
$order_by = " order by feed.id desc ";
$db3 = JFactory::getDBO();
$db3->setQuery('select count(*) num_rows ' . $from . $where );
$rs3 = $db3->loadAssocList();
$ro = $rs3[0];
$all_rows=$ro['num_rows'];
$per_page = 20;
$current_page = isset( $_REQUEST['current_page']) ? $_REQUEST['current_page'] : 1;
$all_page = ceil($all_row / $per_page);
$db3->setQuery( $select . $from . $where . $order_by . ' limit ' . ($current_page * $per_page - $per_page) . ' , ' . $per_page );
$rsObj = $db3->loadAssocList();
foreach( $rsObj as $row){
print_r($row);
}
|
|
|
|
|
Date :
2015-01-20 14:29:48 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับพี่ชัย แต่เห็นโค๊ดที่พี่ชัยเขียนมา ใช้สำหรับ foreach ดูใช้ยากเหมือนกันอ่ะครับ หมายถึงว่าถ้าเอาไปต่อยอด ร่วมกับ
การเขียนแบบปกติอื่นๆ สมมุติเช่นพวกเสิทในหน้าเดียวกันเลย
สอบถามเป็นวิทยาเล็กน้อยครับ สมมุติกรณี ผมคิวรี่ดาต้าเบสแบบตายตัว แบบนี้เสมอๆในจูมล่าไม่มีเปลี่ยน
Code (PHP)
<?php
$db3 = JFactory::getDBO();
$strSQL3 = "SELECT feed.*, cats.name ";
$strSQL3.= "From #__feed_rss AS feed ";
$strSQL3.= "left join #__k2_categories AS cats ON feed.id_cat = cats.id ";
if(isset($_GET['keyword']) && $_GET['keyword']!=""){
$strSQL3.=" AND cats.name LIKE '%".trim($_GET['keyword'])."%' ";
$strSQL3.=" AND feed.file_feed LIKE '%".trim($_GET['keyword'])."%' ";
}
$strSQL3.= "order by feed.id desc ";
$db3->setQuery($strSQL3);
$rs3 = $db3->loadAssocList();
?>
ผมจะพลิกแพลงไงดีครับให้กลับมาใช้งาน พวกโค๊ดแบบนี้ได้ปกติ ในกรณีจะได้เข้าใจการเขียนแบบเวปที่สอนๆเรื่องโค๊ดอะครับเช่น
$qr=@mysql_query($q);
$total=@mysql_num_rows($qr);
$objQuery = mysql_query($strSQL3) or die ("Error Query [".$strSQL3."]"); อันนี้ใส่ที่ไรของผมเออเร่อตลอดเหมือนจะมีในตัวมันเอง
$Num_Rows = mysql_num_rows($objQuery);
อันนี้เจอบ่อยมากครับ การเขียนแบบปกติ เค้าใช้
while($objResult = mysql_fetch_array($objQuery)){ }
ผมจะใช้ foreach ตลอดงาน เลยทำให้งงจุดนี้มากสุดครับ
|
|
|
|
|
Date :
2015-01-20 15:03:16 |
By :
sarut14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ต้องศึกษา พวก loop ต่างๆ เพิ่มติมนะครับ จะได้ใช้งาน ได้ถุก
และจำไวยกรณ์ ของ คำสั่งเหล่านี้ให้ได้ ต้องหาอ่านเองแล้วนะครับ เพราะมันเยอะ
และจำเป็นต้องหาอ่านด้วยนะครับ เพราะมันสำคัญมาก ใช้อย่างเยอะเลย
แต่ละ loop ก็เหมาะ สำหรับแต่ละตัวแปร มีความเด่นในการใช้งานต่างกัน
|
|
|
|
|
Date :
2015-01-20 15:09:49 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5555 มึนต่อครับ ผมงงบรรทัดนี้ครับ ถ้าจะเอาไปใช้ เพื่อแบ่งหน้าเพจต่อ ตอนนี้ผม Echo ออกมาได้แต่ จำนวนเรคคอส กับ perpage
ถ้ารบกวนพี่ชัย สอนท่อนสุดท้ายแบ่งเพจอีกรอบได้ไหมครับ ที่ให้ออกมาเป็น
Code (PHP)
Total <?php echo $all_rows;?> Record : <?php echo $per_page;?> Page :
<?php
if($per_page)
{
echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$per_page'><< Back</a> ";
}
for($i=1; $i<=$Num_Pages; $i++){
if($i != $Page)
{
echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i'>$i</a> ]";
}
else
{
echo "<b> $i </b>";
}
}
if($Page!=$Num_Pages)
{
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>Next>></a> ";
}
?>
|
|
|
|
|
Date :
2015-01-20 15:30:07 |
By :
sarut14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$button_back = $current_page>1? '<a href="?current_page='.($current_page - 1).'" >Back</a>' : '';
$button_next = $current_page<$all_page? '<a href="?current_page='.($current_page + 1).'" >Next</a>' : '';
จะเอาไปใส่ตรงไหน คงรู้นะครับ 5555
$_SERVER[SCRIPT_NAME] ไม่ต้องใส่หรอกครับ เมื่อมันเรียกตัวมันเอง เห็นใส่กันจังเลย
เขามีไว้เช็ค และ เรียกใช้ parent folder กันครับ ถ้า เป็น การเรียกตัวมันเอง หรือ ไฟล์ในระดับเดียวกันเขาไม่ใช้กันครับ
|
|
|
|
|
Date :
2015-01-20 15:43:37 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
555 ตอบแบบซื่อๆเลยครับ ยังไม่ออกหน้าเพจครับ เหอๆ
|
|
|
|
|
Date :
2015-01-20 16:34:22 |
By :
sarut14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|