php เกี่ยวกับเรียง id และดึงวันที่จากฐานข้อมูลมาแสดงเป็นแบบไทย
สวัสดีครับ รบกวนสอบถามหน่อยนะครับ
- PHP select id มาแสดง แต่ว่าเวลาลบข้อมูลไปมันจะเรียงไม่เป็นระเบียบ เช่น 1 2 3 6 7 8 9
คือจะให้มันแสดงแบบเรียงต่อๆกันไปอ่าครับ เช่น 1 2 3 4 5 6 7 8 9
ไม่ทราบว่าจะเชียนได้อย่างไรร๋อครับ
- PHP select ฟิลด์ซึ่งเก็บเป็น timestamp มาแสดงเวลา แต่มันเป็นฟอร์แมตมัน เช่น 2012-02-29 14:59:07
จะเปลี่ยนให้เป็นรูปแบบภาษาไทย เช่น วันจันทร์ ที่ 29 เดือนกุมภาพันธ์ พ.ศ. 2555 เวลา 14:59:07 น.
ไม่ทราบว่าจะเชียนได้อย่างไรร๋อครับ
<?php
include_once("db/db.php");
$sql = "select * from $tbl_name order by pro_id desc";
$result = mysql_query($sql);
?>
<?php
while ( $row = mysql_fetch_object($result) ) { ?>
<p class="row_content_news">
<span class="col_left_content_news"><?php echo $row->pro_id; ?></span>
<strong class="col_center_content_news"><a href="#"><?php echo $row->pro_name; ?></a></strong>
<span class="col_right_content_news"><?php echo $row->pro_date; ?>
</span>
</p>
<?php } ?>
ถ้าไงรบกวนช่วยตอบทีนะครับ หรือถ้ามีตัวอย่างด้วยจะขอบคุณมากๆเลยครับ
ปล.ขอบคุณครับ
<?php
$i = 0;
while ( $row = mysql_fetch_object($result) ) {
$i++;
echo '<tr>';
// แสดงตัวเลขรายการเรียงลำดับ
echo "<td>$i</td>";
.......
echo '</tr>';
}
?>
2 มีหลายวิธีครับ ลองดูตัวอย่างคร่าวๆไปประยุกต์เอานะครับ
<?php
// แอเรย์เก็บตัวแปรเดือน
$lng['MONTH_SHORT'] = array('มค.', 'กพ.', 'มีค.', 'เมย.', 'พค.', 'มิย.', 'กค.', 'สค.', 'กย.', 'ตค.', 'พย.', 'ธค.');
// แยกวันที่ออก ตัวอย่างนี้เป็น ปี-เดือน-วัน
list($y, $m, $d) = explode('-', $date);
eco 'วันที่ '.$d.' '.$lng['MONTH_SHORT'][(int)$m - 1].' '.($y + 543);
?>
ขอบคุณครับ ขอรบกวนถามอีกซักรอบนะครับ
คือว่าจาก ข้อ 1 มันติดปัญหาอยู่นิดนึงอ่าครับ
- คือถ้าจะให้มันเรียงจากมากไปน้อย จะสามารถทำได้อย่างไรร๋อครับผม
- คือผมแบ่งเพจเอาไว้อ่าครับ เวลาเปลี่ยนเพจ มันจะเริ่มต้นจาก 1 ใหม่ เช่น 1 - 7 พอเปลี่ยนใหม่มันก็เป็น 1 - 7 จะให้มันต่อๆกันเป็น 8 - 14 ยังไงอ่าครับ
ถ้าไงต้องรบกวนด้วยนะครับ ขอบคุณครับ
1.แทนที่จะให้ $i เริ่มจาก 0 ก็ให้ $i = $page*$list_per_page ซึ่งค่าเหล่านี้ปกติก็ต้องมีเพื่อใช้ในการแบ่งหน้า (ไม่มีตัวอย่าง ลองออกแบบดูนะครับ)
2..ใช้ $i-- แทน $i++ ครับ โดยที่ค่าเริ่มต้นของ $i จะเป็นจำนวนข้อมูลทั้งหมด แทน 0 ครับ
ปล.ผมให้เพียงแนวคิดนะครับ อาจต้องประยุกต์นิดนึงเพื่อให้การทำงานถูกต้อง ซึ่งถ้าเข้าใจวิธีคิด การออกแบบก็ไม่น่าจะยากเท่าไร
สวัสดีครับ คือผมได้แล้วครับ เป็นการแบ่งเพจแต่มันเป็นการเรียงจากน้อยไปมากอ่าครับ จะให้มันมากไปน้อยไม่รู้จะเขียนยังไงดีอ่าครับ
คือตัวแบ่งเพจผมโหลดมาอ่าครับ มันเป็น class ผมเลยงงๆอ่าครับ ถ้าไงรบกวนช่วยดูให้ทีนะครับผม
นี่ในหน้าที่ให้แสดงผลครับ
<?php
include_once("include/filename.php");
include_once("db/db.php");
include_once("pagination.php");
$sql = "select * from $tbl_name order by pro_id desc";
$result = mysql_query($sql);
$total = mysql_num_rows($result);// นับจำนวนทั้งหมดในฐานข้อมูลตามเงื่อนไข sql ข้างบน
##############################
// กำหนดค่า config ให้กับ pagination class
$config['base_url'] = "news.php?page=";
$config['total_rows'] = $total;// ค่าที่นับได้"ทั้งหมด"จาก sql ด้านบน
$config['per_page'] = 4; //จำนวนเทเบิ้ลที่ต้องการโชว์
$pagination = new pagination($config);
$start_item = (!isset($_GET['per_page']) ? "0" : intval($_GET['per_page']));
/* คิวรี่ข้อมูลออกมาเพื่อแสดงผล */
$sql .= " limit $start_item, " . $config['per_page'];
$result = mysql_query($sql);
?>
<?php
$i = $start_item+1;
if ( mysql_num_rows($result) > 0 ) {
while ( $row = mysql_fetch_object($result) ) { ?>
<p class="row_content_news">
<span class="col_left_content_news"><? //php echo $row->pro_id;
echo $i;
$i++;
?>
นี่ในหน้าไฟล์ pagination.php ครับ
<?php
class pagination {
public $base_url = '';
public $total_rows = '';
public $per_page = 10;
public $num_links = 5;
public $full_tag_open = '';
public $full_tag_close = '';
public $first_link = 'First';
public $first_tag_open = '';
public $first_tag_close = ' ';
public $last_link = 'Last';
public $last_tag_open = ' ';
public $last_tag_close = '';
public $next_link = ">";
public $next_tag_open = ' ';
public $next_tag_close = ' ';
public $prev_link = "<";
public $prev_tag_open = ' ';
public $prev_tag_close = '';
public $cur_tag_open = '<strong style="font-size:14px; font-weight:bold; color:#402711; float:left; margin-top:1px;">'; //////////////////////////////////// Link Active
public $cur_tag_close = '</strong>';
public $num_tag_open = ' ';
public $num_tag_close = '';
public $display_pages = true;
function __construct($config = '') {
if (count($config) > 0)
{
foreach ($config as $key => $val)
{
if (isset($this->$key))
{
$this->$key = $val;
}
}
}
}// __construct
function create_links() {
// จำนวนที่เข้ามา ไม่มีมากกว่า 0
if ( $this->total_rows == 0 || $this->per_page == 0 ) {return null;}
// หาค่าหน้าทั้งหมด
$total_pages = ceil($this->total_rows/$this->per_page);
//จำนวนหน้าทั้งหมดมีหน้าเดียว ส่งกลับว่างเปล่า
if ( $total_pages <= 1 ) {return null;}
// รับค่า per_page
$per_page = (isset($_GET['per_page']) ? intval($_GET['per_page']) : '0');
$end_item_of_page = $per_page;
// number of current page
$cur_page = (($per_page/$this->per_page)+1);
// start list pages
##############################################################
// full tag open
$output = $this->full_tag_open;
// first page
$linknav = 'class = "linknav"'; //คลาส link
$linklast = 'class = "linklast"';
$img_last = '<img src="images/btn-last.png" width="21" height="20" alt="btn-last">';
$img_first = '<img src="images/btn-first.png" width="21" height="20" alt="btn-first">';
$img_back = '<img src="images/btn-back.png" width="21" height="20" alt="btn-back">';
$img_next = '<img src="images/btn-next.png" width="21" height="20" alt="btn-next">';
if ( $this->first_link !== false && $per_page > '0' ) {
$output .= $this->first_tag_open . "<a href=\"" . $this->base_url . "&per_page=0\"$linknav>" . $img_first ."</a>" . $this->first_tag_close; /////////////////////////////// Link First
}
// previous page
if ( $this->prev_link !== false && $per_page > '0' ) {
$output .= $this->prev_tag_open . "<a href=\"" . $this->base_url . "&per_page=" . ($per_page-$this->per_page) . "\"$linknav>" . $img_back . "</a>" . $this->prev_tag_close; ////////////////////// Link Back
}
// number of pages--------------------------------------------------------------------------------#
if ( $this->display_pages !== false ) {
// number of links Before
for ( $i = ($cur_page-$this->num_links);$i<$cur_page;$i++ ) {
if ( $i > 0 ) {
$output .= $this->num_tag_open . "<a href=\"" . $this->base_url . "&per_page=" . (($i*$this->per_page)-$this->per_page) . "\"$linknav>" . $i . "</a>" . $this->num_tag_close;
}
}
// number of link current
$output .= $this->num_tag_open . $this->cur_tag_open . $cur_page . $this->cur_tag_close . $this->num_tag_close;
// number of links After
for ( $i = ($cur_page+1);$i<=($cur_page+$this->num_links);$i++ ) {
if ( $i <= $total_pages ) {
$output .= $this->num_tag_open . "<a href=\"" . $this->base_url . "&per_page=" . (($i*$this->per_page)-$this->per_page) . "\"$linknav>" . $i . "</a>" . $this->num_tag_close;
}
}
}
// end number of pages--------------------------------------------------------------------------------#
// next page
if ( $this->next_link !== false && $per_page < (($total_pages*$this->per_page)-$this->per_page) ) {
$output .= $this->next_tag_open . "<a href=\"" . $this->base_url . "&per_page=" . ($per_page+$this->per_page) . "\"$linknav>" . $img_next. "</a>" . $this->next_tag_close; ///////////////// Link Next
}
// last page
if ( $this->last_link !== false && $per_page < (($total_pages*$this->per_page)-$this->per_page) ) {
$output .= $this->last_tag_open . "<a href=\"" . $this->base_url . "&per_page=" . (($total_pages*$this->per_page)-$this->per_page) . "\"$linklast>" .$img_last. "</a>" . $this->last_tag_close; /////////////// Link Last
}
// full tag close
$output .= $this->full_tag_close;
return $output;
}// create_links
}
?>
ซึ่งโค็ดดังกล่าวเป็นการแบ่งเพจ ซึ่งเรียงจาก น้อย-ไปมาก ไม่มีปัญหาครับ
แต่ถ้าจะกลับกันให้มากไปน้อย นี่สามารถจะเขียนได้ยังไงร๋อครับ ต้องรบกวนอีกแล้วนะครับ ขอบคุณครับ
ไม่แน่ใจว่าจะเปลี่ยนจาก
echo $i;
เป็น
echo $total_items - $i;
หรือเปล่านะ (เดาดู)
ลำดับ วันเดือนปี ตัวเลข
1 1/2551 100
2 2/2551 366
3 10/2551 362
แล้วถ้าเราเพิ่มการคำนวณไปจ
ลำดับ วันเดือนปี ตัวเลข ตัวเลขสะสม
1 1/2551 100 100
2 2/2551 366 466
3 10/2551 362 828
จะใช้โค๊ดยังไงในการคำนวณ โดยให้คำนวณเรียงจากวันที่