รบกวนถามผู้รู้หน่อยนะคะจเปลี่ยนค่าวันที่ให้แสดงเป็น d/m/Y แต่ในฐานข้อมูลเป็น Y/m/d

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา รบกวนถามผู้รู้หน่อยนะคะจเปลี่ยนค่าวันที่ให้แสดงเป็น d/m/Y แต่ในฐานข้อมูลเป็น Y/m/d

รบกวนถามผู้รู้หน่อยนะคะจเปลี่ยนค่าวันที่ให้แสดงเป็น d/m/Y แต่ในฐานข้อมูลเป็น Y/m/d
ลองกลับค่าดูแล้ว มันอสดงค่าออกมาเป็น 01-01-1970 ทั้งหมดเลยคะไม่รุว่าต้องใส่ยังไง
<?php

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$currentPage = $_SERVER["PHP_SELF"];

$maxRows_ShowData = 10;
$pageNum_ShowData = 0;
if (isset($_GET['pageNum_ShowData'])) {
  $pageNum_ShowData = $_GET['pageNum_ShowData'];
}
$startRow_ShowData = $pageNum_ShowData * $maxRows_ShowData;

mysql_select_db($database_MyConnect, $MyConnect);
$query_ShowData = "SELECT * FROM people";

$originalDate = $row_ShowData['bDate'];    
$newDate = date("d-m-Y", strtotime($originalDate));  
	
$query_limit_ShowData = sprintf("%s LIMIT %d, %d", $query_ShowData, $startRow_ShowData, $maxRows_ShowData);
$ShowData = mysql_query($query_limit_ShowData, $MyConnect) or die(mysql_error());
$row_ShowData = mysql_fetch_assoc($ShowData);

if (isset($_GET['totalRows_ShowData'])) {
  $totalRows_ShowData = $_GET['totalRows_ShowData'];
} else {
  $all_ShowData = mysql_query($query_ShowData);
  $totalRows_ShowData = mysql_num_rows($all_ShowData);
}
$totalPages_ShowData = ceil($totalRows_ShowData/$maxRows_ShowData)-1;

$queryString_ShowData = "";
if (!empty($_SERVER['QUERY_STRING'])) {
  $params = explode("&", $_SERVER['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_ShowData") == false && 
        stristr($param, "totalRows_ShowData") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_ShowData = "&" . htmlentities(implode("&", $newParams));
  }
}
$queryString_ShowData = sprintf("&totalRows_ShowData=%d%s", $totalRows_ShowData, $queryString_ShowData);
?>

html

<td align="center" bgcolor="#FFFFFF"><?php echo $newDate; ?></td>

<?php
mysql_free_result($ShowData);
?>


Only 180.183.163.xxx 12-11-2014 23:02:20

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ถ้าผลลัพธ์ออกมา ตามรูปแบบที่บอก คือ 01-01-1970  แสดงว่าชุดข้อมูลในฐานข้อมูล
อยู่ในรูปแบบวันที่ที่ไม่สามารถแปลงได้ปกติ  เช่น ปี ค.ส. ใช้ตัวเลข 2 ตัว


ซึ่งถ้าวันที่ในฐานข้อมูลอยู่ในรูปแบบ 0000/00/00 เช่น 2014/11/12 

การแปลงในลํกษณะ

<?php
$d="2014/11/12";
echo date("d/m/Y",strtotime($d));
?>


สามารถทำได้ปกติ 


ninenik 110.168.70.xxx 13-11-2014
 ความคิดเห็นที่ 2
ยังไงหรอคะไม่ค่อยเข้าใจเลย แต่ในฐานข้อมูลก้แสดงปีแบบนี้นะคะ 2458-11-03  แต่พอแสดงหน้าเว็บแล้วจะกลับเป็น 03-11-2458 มันไม่ยอมกลับค่าให้อ่ะคะ เป็นอย่างที่บอก ไม่รุว่าแก้ยังไง Ninenik 


only 180.183.163.xxx 13-11-2014 12:32
 ความคิดเห็นที่ 3
อ้างอิงรูปแบบวันที่ที่ใช้  
 
2458-11-03
 
ปกติวันที่ เราควรเก็บเป้นปี ค.ศ. ถึงจะสามารถนำมาใช้งานกับคำสั่ง
การแปลงรูปแบบวันที่ได้โดยตรง
 
แต่ถ้าเก็บเป็นปี พ.ศ. จะแปลงรูปแบบตรงๆ แบบปี ค.ศ. ไม่ได้
ต้องเปลี่ยนเป็น โดยลบปีออก 543 ปี
เช่น 2485 - 543 หรือก็คือ 1915
 
พอแปลงแล้วก็จัดรูปแบบได้ แต่ปีที่จัดรูปแบบก็จะเป็นปี ค.ศ.

<?php
$mydate="2458-11-03";  // วันที่ที่มี ปีเป็นปี พ.ศ.
// แยก วัน เดือน ปี เป็น array เพื่อเอาค่ามาต่อเป็นรูปแบบวันที่ใหม่ เป็นปี ค.ศ.
$arr_date=explode("-",$mydate); 
// สร้างรูปแบบวันที่ใหม่ ปี ค.ศ. 
$new_date=($arr_date[0]-543)."-".$arr_date[1]."-".$arr_date[2]; // จะได้ 1915-11-03

// จัดรูปแบบด้วยคำสั่ง date ใน php
$new_formatDate=date("d/m/Y",strtotime($new_date)); // จัดรูปแบบวันที่ใหม่ 
echo $new_formatDate."<br>";  // จะได้ 03/11/1915

// แต่ถ้าอยากใช้เป็นปี พ.ศ. เหมือนเดิม ก็ใช้ค่าปีจากตัวแปรเดิม
$new_formatDateTh=date("d/m/".$arr_date[0],strtotime($new_date)); 
echo $new_formatDateTh."<br>";
?>


หรือถ้าจัดรูปแบบง่ายๆ แบบย้ายแหน่งธรรมดาเลย ก็ใช้เป็น

<?php
$mydate="2458-11-03";  // วันที่ที่มี ปีเป็นปี พ.ศ.
// แยก วัน เดือน ปี เป็น array เพื่อเอาค่ามาต่อเป็นรูปแบบวันที่ใหม่ 
$arr_date=explode("-",$mydate); 

// จัดรูปแบบแบบง่าย หรือก็คือย้ายตำแหน่งเลย
$new_formatDate=$arr_date[2]."/".$arr_date[1]."/".$arr_date[0]; // จัดรูปแบบวันที่ใหม่ 
echo $new_formatDate."<br>"; // จะได้ 03/11/2458
?>


ninenik 58.11.130.xxx 13-11-2014
 ความคิดเห็นที่ 4
ได้แล้วคะ ขอบคุณมากๆนะคะ ทำมาหลายวันแล้วไม่ได้เลย TT ไม่เก่ง code ด้วยทำครั้งแรง ขอบมากเลยคะ คุณ Ninenik  


only 180.183.163.xxx 13-11-2014 13:29
 ความคิดเห็นที่ 5
ทำได้แล้วค่ะ  Ninenik ขอบคุณมากๆเลย ดีใจมากเว็บนี้ช่วยได้เยอะจิงๆ มีประโยชน์มากๆ  


only 180.183.163.xxx 13-11-2014 13:43
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ