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,027

HOME > PHP > PHP Forum > สอบถามวีธีรวมคำสั่ง IF else ที่เหมือนกันแตกต่างตรงค่าที่ดึงมาจากดาต้าเบสให้เหลือเพียงชุดเดียวจะต้องเขียนอย่างไรครับ



 

สอบถามวีธีรวมคำสั่ง IF else ที่เหมือนกันแตกต่างตรงค่าที่ดึงมาจากดาต้าเบสให้เหลือเพียงชุดเดียวจะต้องเขียนอย่างไรครับ

 



Topic : 135794



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



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



จากชุดคำสั่ง if else ข้างล่างนั้นจะเหมือนๆกันแตกต่างเพียงค่าที่ดึงมาจากดาต้าเบส(Ms SQL) มีวิธีแปลงอย่างไรให้เป็นแบบฟังก์ชั่นคำนวนระยะเวลาที่เพียงแทนค่าตัวแปลใว้หลัง duration(..... , .....) ก็สามารถคำนวนแล้วแสดงผลออกมาได้เลยนะครับ

Code (PHP)
<?php 
	if ($objResult["DOB"]=="") { $DOB ="";} else{ $DOB = date('d M Y',strtotime($objResult["DOB"])) ;}
	if ($objResult["PassportIssue"]=="") { $PassportIssue ="";} else{ $PassportIssue = date('d M Y',strtotime($objResult["PassportIssue"])) ;}
	if ($objResult["PassportExpire"]=="") { $PassportExpire ="";} else{ $PassportExpire = date('d M Y',strtotime($objResult["PassportExpire"])) ;}
	if ($objResult["WPIssue"]=="") { $WPIssue ="";} else{ $WPIssue = date('d M Y',strtotime($objResult["WPIssue"])) ;}
	if ($objResult["WPExpire"]=="") { $WPExpire ="";} else{ $WPExpire = date('d M Y',strtotime($objResult["WPExpire"])) ;}
	if ($objResult["VISAIssue"]=="") { $VISAIssue ="";} else{ $VISAIssue = date('d M Y',strtotime($objResult["VISAIssue"])) ;}
	if ($objResult["VISAExpire"]=="") { $VISAExpire ="";} else{ $VISAExpire = date('d M Y',strtotime($objResult["VISAExpire"])) ;}

echo $DOB;
echo $PassportIssue;
echo $.....;

?>


Code (PHP)
function duration($begin,$end){
    $remain=intval(strtotime($end)-strtotime($begin));
    $wan=floor($remain/86400);
    $l_wan=$remain%86400;
    $hour=floor($l_wan/3600);
    $l_hour=$l_wan%3600;
    $minute=floor($l_hour/60);
    $second=$l_hour%60;
    return " ".$wan." วัน ".$hour." ชั่วโมง ".$minute." นาที ".$second." วินาที";
}

echo '<td>'.duration($time,$today).'</td>';

$Latest_day = "2020-06-18 12:00:00";
echo '<p>Latest compile : '.$Latest_image.'&nbsp@'.duration($Latest_day,$today).'</p>';





Tag : PHP, Ms SQL Server 2012







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2020-12-23 19:08:39 By : 1621894507854149 View : 615 Reply : 29
 

 
1. แบบฟังก์ชัน (ที่คุณต้องการ)
asgres("DOB");
asgres("PassportIssue");
asgres("PassportExpire");
asgres("WPIssue");
asgres("WPExpire");
asgres("VISAIssue");
asgres("VISAExpire");

function asgres($k) {
	if ($objResult[$k] == "") {
    	$$k = "";
    } else {
    	$$k = date('d M Y',strtotime($objResult[$k]));
    }
}


หรือ

2. แบบวนซ้ำ (วิธีธรรมชาติ)
foreach ($objResult as $k => $v) {
    $$k = empty($v) ? "" : date('d M Y',strtotime($objResult[$k])); 
}







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-23 20:14:46 By : ล่องหน
 


 

No. 2



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



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

แบบที่1.นำไปใช้แล้วว่างไม่แสดงผลอะไรครับ
ผมทดลองสั่งเพียงแค่
Code (PHP)
if($_GET["txtPassportNo"] != "")
	{

	$strSQL2 = "SELECT * FROM tblEmployee WHERE PassportNo LIKE '%".$_GET["txtPassportNo"]."%' ORDER BY [PassportNo] ";
	$objQuery = mssql_query($strSQL2) or die ("Error Query [".$strSQL2."]");

	while($objResult = mssql_fetch_array($objQuery))
	{

function asgres($k) {
    	$$k = $objResult["DOB"];
    
	return $$k;
}

echo asgres("DOB");
//echo asgres("VISAExpire") ;

หรือก็คือไม่สนว่าใน asgres(...)จะมีค่าอะไรให้มันดึง $objResult["DOB"] ออกมาแสดงผลเลยก็ยังว่างเปล่าครับ
ปล.$objResult["....."] คือข้อมูลที่ดึงจาก Ms SQL ที่กรองหมายเลข PassportNo มาก่อนแล้ว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 12:45:08 By : 1621894507854149
 

 
ผมทำแบบก็อปวางให้แล้วไม่ต้องดัดแปลง เวลาแสดง

Code (PHP)
echo $DOB;
echo $PassportIssue;



ไม่ใช่

Code (PHP)
echo asgres("DOB");
echo asgres("...");

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 13:12:11 By : ล่องหน
 


 
อีกอย่างคุณลืมเรียกฟังก์ชัน

Code (PHP)
asgres("DOB");
asgres("ชื่อฟิลด์");
asgres("...");


ถ้าอยาก echo ได้เลยต้อง return ค่าจากฟังก์ชันด้วย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 13:15:05 By : ล่องหน
 


 

No. 5



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



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

ก็อปวาง error ตั้งแต่ asgres("DOB"); ................................... เลยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 13:25:48 By : 1621894507854149
 


 
error ว่าอะไร undefined function หรือ ถ้าใช่ก็สลับนิยามฟังก์ชันก่อน แล้วค่อยเรียก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 13:30:32 By : ล่องหน
 


 

No. 7



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



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

ตอบความคิดเห็นที่ : 6 เขียนโดย : ล่องหน เมื่อวันที่ 2020-12-24 13:30:32
รายละเอียดของการตอบ ::
ย้ายลงมาข้างล่างหาย error แต่ยังคงไม่แสดงนะครับ
Code (PHP)
function asgres($k) {
	if ($objResult[$k] == "") {
    	$$k = "";
    } else {
    	$$k = date('d M Y',strtotime($objResult[$k]));
    }
}
asgres("DOB");
asgres("PassportIssue");
asgres("PassportExpire");
asgres("WPIssue");
asgres("WPExpire");
asgres("VISAIssue");
asgres("VISAExpire");

echo $DOB;
echo $PassportIssue;
?>


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 13:39:57 By : 1621894507854149
 


 
มันหา $objResult ไม่เจอหรือเปล่า นิยามอยู่ตรงนี้แล้วเอาออกไปไหน ขอดูแบบสมบูรณ์หน่อย

Code (PHP)
while($objResult = mssql_fetch_array($objQuery)) // นี่คือนิยามของ $objResult 

//ลองวางใน scope ดู

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 13:50:20 By : ล่องหน
 


 

No. 9



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



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

ใช่่ครับ เหมือนว่าตัว $objResult จะไม่ยอมดึงค่ามาใส่ใน function นะครับนี่
โค้ดทั้งหน้าครับ
Code (PHP)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=TIS-620" />
<title>MOU2</title>
</head>

<?php
	$objConnect = mssql_connect("localhost","MOU2","MOU2") or die("Error Connect to Database");
	$objDB = mssql_select_db("MOU2");
	echo '
	<link href="css/responsive.css?fin20" rel="stylesheet">
	<link rel="stylesheet" type="text/css" href="/css/index2.css?fin20" />
	<meta name="viewport" content="width=device-width, initial-scale=1">';
?>
<body>
	<form action="<?=$_SERVER['SCRIPT_NAME'];?>" method="get" name="form1">
	<table width="80%" border="1" align="center">
    <tr style="background-color: darkseagreen;">
		<th height="40">หมายเลข Passport :
		  <select name="txtPassportNo" type="text" id="txtPassportNo" value="<?=$_GET["txtPassportNo"];?>">
		    <option value=""><-- Select Passport --></option>
		    <?
			$strSQL = "SELECT * FROM tblEmployee ORDER BY PassportNo ASC";
			$objQuery = mssql_query($strSQL);
			while($objResuut = mssql_fetch_array($objQuery))
			{
			?>
		    <option value="<?php echo $objResuut["PassportNo"];?>"><?php echo $objResuut["PassportNo"];?></option>
		    <?
			}
			?>
      </select>
	  <input name="btnSubmit" type="submit" value="Submit">
		</th>
    </tr>
	</table>
</form>
      <br/>
      <?php
if($_GET["txtPassportNo"] != "")
	{

	$strSQL2 = "SELECT * FROM tblEmployee WHERE PassportNo LIKE '%".$_GET["txtPassportNo"]."%' ORDER BY [PassportNo] ";
	$objQuery = mssql_query($strSQL2) or die ("Error Query [".$strSQL2."]");

	while($objResult = mssql_fetch_array($objQuery))
	{

function asgres($k) {
	if ($objResult[$k] == "") {
    	$$k = "";
    } else {
    	$$k = date('d M Y',strtotime($objResult[$k]));
    }
}
asgres("DOB");
asgres("PassportIssue");
asgres("PassportExpire");
asgres("WPIssue");
asgres("WPExpire");
asgres("VISAIssue");
asgres("VISAExpire");

echo $DOB;
echo $PassportIssue;

	}
	}
?>
<br />

<?php
mssql_close($objConnect);
?>
<script src="js/bootstrap.js"></script>
</body>
</html>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 13:55:50 By : 1621894507854149
 


 

No. 10



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



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

หรือเป็นเพราะรันบน PHP 5.2.17 ครับนี่ (ขอแนวทางเปลี่ยนเป็น PHP 7.+ ด้วยครับผม)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 14:02:54 By : 1621894507854149
 


 
ลองแบบผสมโรง

Code (PHP)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=TIS-620" />
<title>MOU2</title>
</head>

<?php
	$objConnect = mssql_connect("localhost","MOU2","MOU2") or die("Error Connect to Database");
	$objDB = mssql_select_db("MOU2");
	echo '
	<link href="css/responsive.css?fin20" rel="stylesheet">
	<link rel="stylesheet" type="text/css" href="/css/index2.css?fin20" />
	<meta name="viewport" content="width=device-width, initial-scale=1">';
?>
<body>
	<form action="<?=$_SERVER['SCRIPT_NAME'];?>" method="get" name="form1">
	<table width="80%" border="1" align="center">
    <tr style="background-color: darkseagreen;">
		<th height="40">หมายเลข Passport :
		  <select name="txtPassportNo" type="text" id="txtPassportNo" value="<?=$_GET["txtPassportNo"];?>">
		    <option value=""><-- Select Passport --></option>
		    <?
			$strSQL = "SELECT * FROM tblEmployee ORDER BY PassportNo ASC";
			$objQuery = mssql_query($strSQL);
			while($objResuut = mssql_fetch_array($objQuery))
			{
			?>
		    <option value="<?php echo $objResuut["PassportNo"];?>"><?php echo $objResuut["PassportNo"];?></option>
		    <?
			}
			?>
      </select>
	  <input name="btnSubmit" type="submit" value="Submit">
		</th>
    </tr>
	</table>
</form>
      <br/>
      <?php
      
function asgres($obj) {
	foreach ($obj as $k => $v) {
	    $$k = empty($v) ? "" : date('d M Y',strtotime($obj[$k])); 
	}
}

if($_GET["txtPassportNo"] != "") {
	$strSQL2 = "SELECT * FROM tblEmployee WHERE PassportNo LIKE '%".$_GET["txtPassportNo"]."%' ORDER BY [PassportNo] ";
	$objQuery = mssql_query($strSQL2) or die ("Error Query [".$strSQL2."]");

	while($objResult = mssql_fetch_array($objQuery))
	{
		asgres($objResult);

		echo $DOB;
		echo $PassportIssue;

	}
}
?>
<br />

<?php
mssql_close($objConnect);
?>
<script src="js/bootstrap.js"></script>
</body>
</html>


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 14:24:38 By : ล่องหน
 


 

No. 12



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



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

รายงานผล หน้าเว็บขาวสะอาดครับ แต่ในคำส่ง [font=Verdana]while($objResult = mssql_fetch_array($objQuery))[/font] สั่งเรียกตัวอื่นออกมาก็แสดงถูกต้องนะ

Code (PHP)
	while($objResult = mssql_fetch_array($objQuery))
	{
		asgres($objResult);

		echo $DOB;
		echo $PassportIssue;
		
		//แสดงผล
		echo $objResult["DOB"];
		echo $objResult["PassportNo"];
		echo $objResult["อื่นๆ"];
?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 14:53:58 By : 1621894507854149
 


 
ลองเช็คในฟังก์ชันหน่อย
Code (PHP)
function asgres($obj) {
	print_r($obj);
	foreach ($obj as $k => $v) {
		//$$k = empty($v) ? "" : date('d M Y',strtotime($obj[$k])); 
		echo "1. " . $v . "<br>"; 
		echo "2. " . $obj[$k] . "<br>"; 
	}
}



ได้อะไรครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 15:09:41 By : ล่องหน
 


 

No. 14



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



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

เมื่อเลือกแล้วกด Submit จะได้

Code
. .ขอแก้ลบเนื้อหาส่วนนี้นะครับ. .



ประวัติการแก้ไข
2020-12-24 19:13:36
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 15:15:45 By : 1621894507854149
 


 
Code
$strSQL2 = "SELECT * FROM tblEmployee WHERE...


คิวรีเฉพาะฟิลด์ที่ต้องการแสดง เพราะ ตัวแปร php จะขึ้นต้นด้วยตัวเลขไม่ได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 15:35:58 By : ล่องหน
 


 
Code (PHP)
//...

function asgres($obj)
{
    foreach ($obj as $k => $v) {
        if (!is_numeric($k[0])) {
            $$k = empty($v) ? "" : date('d M Y', strtotime($v));
        }
    }
}

if ($_GET["txtPassportNo"] != "") {
    $strSQL2 =
        "SELECT col1,col2,col3 FROM tblEmployee WHERE PassportNo LIKE '%" .
        $_GET["txtPassportNo"] .
        "%' ORDER BY [PassportNo] ";
    ($objQuery = mssql_query($strSQL2)) or
        die("Error Query [" . $strSQL2 . "]");

    while ($objResult = mssql_fetch_array($objQuery)) {
        asgres($objResult);

        echo $DOB;
        echo $PassportIssue;
    }
}

//...

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 15:49:27 By : ล่องหน
 


 

No. 17



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



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

ไม่มีตัวแปลเป็นตัวเลขนะครับ จะมีก็แต่ค่าในตัวแปร
Code (PHP)
      <?php
      
function asgres($obj) {
	print_r($obj);
	foreach ($obj as $k => $v) {
		$$k = empty($v) ? "" : date('d M Y',strtotime($obj[$k])); 
		echo "1. " . $v . "<br>"; 
		echo "2. " . $obj[$k] . "<br>"; 
	}
}
if($_GET["txtPassportNo"] != "") {
	$strSQL2 = "SELECT PassportNo,DOB,PassportIssue,PassportExpire,VISAIssue,VISAExpire FROM tblEmployee WHERE PassportNo LIKE '%".$_GET["txtPassportNo"]."%' ";
	$objQuery = mssql_query($strSQL2) or die ("Error Query [".$strSQL2."]");

	while($objResult = mssql_fetch_array($objQuery))
	{
		asgres($objResult);
		
		//ไม่แสดง
		echo $DOB;
		echo $PassportIssue;
		
		//แสดงผล
		echo $objResult["DOB"].'<br>' ;
		echo $objResult["PassportNo"];

?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 15:54:16 By : 1621894507854149
 


 
หรือเปลี่ยนไปใช้ fetch_assoc แทน

Code (PHP)
//...

function asgres($obj)
{
    foreach ($obj as $k => $v) {
    	$$k = empty($v) ? "" : date('d M Y', strtotime($v));
    }
}

if ($_GET["txtPassportNo"] != "") {
    $strSQL2 =
        "SELECT * FROM tblEmployee WHERE PassportNo LIKE '%" .
        $_GET["txtPassportNo"] .
        "%' ORDER BY [PassportNo] ";
    ($objQuery = mssql_query($strSQL2)) or
        die("Error Query [" . $strSQL2 . "]");

    while ($objResult = mssql_fetch_assoc($objQuery)) {
        asgres($objResult);

        echo $DOB;
        echo $PassportIssue;
    }
}

//...

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 15:59:12 By : ล่องหน
 


 
ตอบความคิดเห็นที่ : 17 เขียนโดย : 1621894507854149 เมื่อวันที่ 2020-12-24 15:54:16
รายละเอียดของการตอบ ::
เลือกใช้ No.16 หรือ 18 นะครับ
index key มาจาก mssql_fetch_array ที่ทำให้เข้าถึง object ได้ 2 แบบ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 16:01:53 By : ล่องหน
 


 

No. 20



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



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

No.16 fetch_array หรือ No.18 fetch_assoc ผลเหมือนกัันครับคือไม่แสดง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 16:13:43 By : 1621894507854149
 


 
ตอบความคิดเห็นที่ : 20 เขียนโดย : 1621894507854149 เมื่อวันที่ 2020-12-24 16:13:43
รายละเอียดของการตอบ ::
เช็คดูดีๆ ทุกบรรทัดครับ ...คราวนี้ผมนั่งยัน เพราะทดสอบแล้ว

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 16:17:00 By : ล่องหน
 


 

No. 22



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



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

ผมเอา No.18 ไม่วางแทนที่ใน No.11 ตรวจสอบและทดลองรัน
1.รันทดสอบเลย
2.เอาวงเล็บ ($objQuery = mssql_query($strSQL2)) ออกเป็นด้านล่างผลคือหน้าขาวนะครับ --*--

Code (PHP)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=TIS-620" />
<title>MOU2</title>
</head>

<?php
	$objConnect = mssql_connect("localhost","MOU2","MOU2") or die("Error Connect to Database");
	$objDB = mssql_select_db("MOU2");
	echo '
	<link href="css/responsive.css?fin20" rel="stylesheet">
	<link rel="stylesheet" type="text/css" href="/css/index2.css?fin20" />
	<meta name="viewport" content="width=device-width, initial-scale=1">';
?>
<body>
	<form action="<?=$_SERVER['SCRIPT_NAME'];?>" method="get" name="form1">
	<table width="80%" border="1" align="center">
    <tr style="background-color: darkseagreen;">
		<th height="40">หมายเลข Passport :
		  <select name="txtPassportNo" type="text" id="txtPassportNo" value="<?=$_GET["txtPassportNo"];?>">
		    <option value=""><-- Select Passport --></option>
		    <?
			$strSQL = "SELECT * FROM tblEmployee ORDER BY PassportNo ASC";
			$objQuery = mssql_query($strSQL);
			while($objResuut = mssql_fetch_array($objQuery))
			{
			?>
		    <option value="<?php echo $objResuut["PassportNo"];?>"><?php echo $objResuut["PassportNo"];?></option>
		    <?
			}
			?>
      </select>
	  <input name="btnSubmit" type="submit" value="Submit">
		</th>
    </tr>
	</table>
</form>
      <br/>
      <?php
      
function asgres($obj)
{
    foreach ($obj as $k => $v) {
    	$$k = empty($v) ? "" : date('d M Y', strtotime($v));
    }
}

if ($_GET["txtPassportNo"] != "") {
    $strSQL2 = "SELECT * FROM tblEmployee WHERE PassportNo LIKE '%" .$_GET["txtPassportNo"] ."%' ";
    ($objQuery = mssql_query($strSQL2)) or die("Error Query [" . $strSQL2 . "]");

    while ($objResult = mssql_fetch_assoc($objQuery)) {
        asgres($objResult);

        echo $DOB;
        echo $PassportIssue;
    }
}

mssql_close($objConnect);
?>
<script src="js/bootstrap.js"></script>
</body>
</html>


ปล.ที่ $strSQL2 ผมเอา ORDER BY [PassportNo] ออก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 16:34:11 By : 1621894507854149
 


 
สุดท้ายที่ต้องเช็คก็ Variable scope

Code (PHP)
function asgres($obj) {
	foreach ($obj as $k => $v) {
		global $$k; // เพิ่มบรรทัดนี้
		$$k = empty($v) ? "" : date('d M Y', strtotime($v));
	}
}



ถ้ายังไม่ได้อีกก็...
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 16:52:11 By : ล่องหน
 


 

No. 24



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



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

ตอบความคิดเห็นที่ : 23 เขียนโดย : ล่องหน เมื่อวันที่ 2020-12-24 16:52:11
รายละเอียดของการตอบ ::
เพิ่ม global $$k; เข้าไปจบทุกปัญหาครับผม


ขอขอบคุณมากๆเลยนะครับผม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 17:07:39 By : 1621894507854149
 


 

No. 25



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



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

Code (PHP)
function asgres($obj) {
	foreach ($obj as $k => $v) {
		global $$k; // เพิ่มบรรทัดนี้
		$$k = empty($v) ? "" : date('d M Y', strtotime($v));
	}
}


ว่าแต่คำสั่ง foreach นั่นมันจะทำและมีผลกับดาต้าทุกตัวที่ดึงมาเลยใช่ใหมครับนี่ แล้วงี้อย่างตัวแปล [Prefix] ซึ่งเป็นคำนำหน้า Mr. Ms. Mrs. ผมจะเอาไปทำ if else หรือ Select case ให้เป็น นาย นาง นางสาว ยังไงครับนี่
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 17:24:07 By : 1621894507854149
 


 

No. 26



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



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


สิ่งสำคัญต้องศึกษาเรื่อง ไวยกรณ์ ตัวแปร นอก/ใน ฟังก์ชั่นให้เข้าใจให้มากๆ
จะได้ประยุกต์ตัวอย่างต่างๆ ได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 17:28:59 By : Chaidhanan
 


 
ตอบความคิดเห็นที่ : 25 เขียนโดย : 1621894507854149 เมื่อวันที่ 2020-12-24 17:24:07
รายละเอียดของการตอบ ::
ใช่ครับดึงทุกฟิลด์(ตามระบุใน SELECT) มาเก็บไว้ในตัวแปรที่มีชื่อเดียวกับชื่อ key ของ object result(=ชื่อฟิลด์)
อย่างของคุณ ถ้า SELECT * เลือกมาทุกฟิลด์ เวลาใช้ค่าจากฟิลด์ใดก็เรียกผ่านตัวแปรตามชื่อของฟิลด์นั้น
แต่ต้องเพิ่มเงื่อนไขในฟังก์ชันเพื่อเช็ค string ว่าอยู่ในรูปแบบของวันที่หรือไม่เพราะเราแปลงทุกตัว(ฟิลด์)เป็น Date ทั้งหมด

Code (PHP)
$$k = empty($v) ? "" : date('d M Y', strtotime($v)); 



ใส่ if หรือ ternary operator ซ้อน เช็คค่า $v (ตรงนี้ลองพยายามทำความเข้าใจและประยุกต์เองดูก่อน)
https://www.php.net/manual/en/language.operators.comparison.php


จากนั้นก็จะสามารถใช้ค่าอื่นที่ไม่ถูกจัดเก็บเป็นวันที่ได้

Code (PHP)
echo $Prefix; // หลังจากเช็ค $v จะสามารถใช้งานได้




อีกอันที่คิดว่าคุณอาจยังไม่รู้
Variable variables
https://www.php.net/manual/en/language.variables.variable.php
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 18:00:42 By : ล่องหน
 


 

No. 28



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



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

รายงานแก้ใหม่โดย
> ใช้ If else ตาม No.1
> ใช้ return ค่าจากฟังก์ชันจึงไม่มีการประกาศตาม No.4
> ถอด $objResult2 ออกจากในชุดคำสั่ง If else แต่เป็นเป็นส่งเข้ามาตามข้อต่อไป
> ใช้คำสั่ง echo asgres($objResult2["DOB"]) ในการเรียกฟังก์ชั่นและแสดงผลเฉพาะตัวแปลที่ต้องการเป็นตัวๆไป

Code (PHP)
if ($_GET["txtPassportNo"] != "") {
    $strSQL2 = "SELECT * FROM tblEmployee WHERE PassportNo LIKE '%" .$_GET["txtPassportNo"] ."%' ";
    ($objQuery2 = mssql_query($strSQL2)) or die("Error Query [" . $strSQL2 . "]");

    while ($objResult2 = mssql_fetch_assoc($objQuery2)) {
//        asgres($objResult2);

function asgres($k) {
	if ($k == "") {
    	$tk = "";
    } else {
    	$tk = date('d M Y',strtotime($k));
    }
	return $tk;
}
		echo asgres($objResult2["DOB"]) .'<br>';
		echo asgres($objResult2["PassportIssue"]) .'<br>';
		echo asgres($objResult2["PassportExpire"]) .'<br>';
?>


ทีนี้ผมก็สามารถที่จะเอาตัวแปลอื่นไปทำอย่างอื่่นได้เลยล่ะครับ ^-^


ประวัติการแก้ไข
2020-12-24 18:22:14
2020-12-24 18:49:27
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 18:19:35 By : 1621894507854149
 


 
จริง... ผมดูละครน้ำเน่าไปด้วยเลยลืมคิดเรื่องนี้ไป ...ดีงาม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-12-24 18:55:45 By : ล่องหน
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามวีธีรวมคำสั่ง IF else ที่เหมือนกันแตกต่างตรงค่าที่ดึงมาจากดาต้าเบสให้เหลือเพียงชุดเดียวจะต้องเขียนอย่างไรครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 อัตราราคา คลิกที่นี่