จากคำสั่ง <?php echo $_SERVER['PHP_SELF'];?> เราจะเก็บรักษาค่า POST ยังไงหรอครับ
จากโค้ดเพิ่มลบแก้ไขหน้าเดียวนี้ครับ ซึ่งผมได้ทำการส่งค่า ปี จากอีกหน้ามาที่หน้านี้ครับ
เมื่อมีการ รีเฟสด้วยตัว <?php echo $_SERVER['PHP_SELF'];?> ข้อมูล $_POST จะหายไป
ผมลองค้นดูแล้วว่่าต้องใช้ การ GET POST มาช่วย แต่ว่าเราจะเอาโค้ด ไปใส่ในช่วงไหนอะครับ
ช่วงบรรทัดที่ 4 - 5 ผมลองเพิ่ม SESSION ลงไปแทนแต่ session ก็จะหายไปอยู่ดีอะครับ
Code (PHP)
<?php
require ("connect.php");
session_start();
$_SESSION["datebg"] = $_POST['datebgeiei'] ;
echo $_SESSION["datebg"] ;
?>
<!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=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
.style2 { font-family: "TH SarabunPSK";
font-size: 16pt;
font-weight: bold;
}
</style>
</head>
<body>
<?php
//*** Add Condition ***//
if(isset($_POST['hdnCmd']) && $_POST['hdnCmd'] == "Add")
{
$strSQL = " INSERT INTO tbbudgetcategory ";
$strSQL .="(BudgettypeID,Budgetcategoryamount,BudgetyearID) ";
$strSQL .=" VALUES ";
$strSQL .=" ('".$_POST['BudgettypeID']."','".$_POST['txtAddName']."','".$_SESSION["datebg"]."' ) ";
$objQuery = mysql_query($strSQL);
if(!$objQuery)
{
echo "Error Save [".mysql_error()."]";
}
//header("location:$_SERVER[PHP_SELF]");
//exit();
}
//*** Update Condition ***//
if(isset($_POST['hdnCmd']) && $_POST['hdnCmd'] == "Update")
{
$id = (isset($_POST['txtEditID'])) ? $_POST['txtEditID'] : '';
$qu = $_POST['BudgettypeID'];
$qe = $_POST['txtAddName'];
$qa = $_POST['datebg'];
$strSQL = " UPDATE tbbudgetcategory SET BudgettypeID = '$qu',Budgetcategoryamount = '$qe',BudgetyearID = '$qa' ";
$strSQL .=" WHERE BudgetcategoryID = '".$_POST['hdnEditID']."' ";
mysql_query("SET NAMES UTF8");
$objQuery = mysql_query($strSQL);
if(!$objQuery)
{
echo "Error Update [".mysql_error()."]";
}
//header("location:$_SERVER[PHP_SELF]");
//exit();
}
//*** Delete Condition ***//
if(isset($_GET['Action']) && $_GET['Action'] == "Del")
{
$strSQL = " DELETE FROM tbbudgetcategory ";
$strSQL .=" WHERE BudgetcategoryID = '".$_GET['CusID']."' ";
mysql_query("SET NAMES UTF8");
$objQuery = mysql_query($strSQL);
if(!$objQuery)
{
echo "Error Delete [".mysql_error()."]";
}
//header("location:$_SERVER[PHP_SELF]");
//exit();
}
?>
<form name="frmMain" method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
<input type="hidden" name="hdnCmd" value="">
<table width="200" border="1">
<tr>
<td><?php require("head.php");?></td>
</tr>
<tr>
<td align="center"><?php
$datebg = $_SESSION["datebg"];
$strSQL = " SELECT * FROM tbbudgetcategory,tbbudgetyear,tbbudgettype WHERE tbbudgetcategory.BudgettypeID = tbbudgettype.BudgettypeID AND tbbudgetcategory.BudgetyearID = tbbudgetyear.BudgetyearID AND tbbudgetcategory.BudgetyearID = '".$_GET["datebg"]."'";
mysql_query("SET NAMES UTF8");
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<table width="1159" height="331" border="1">
<tr>
<th width="98"> <div align="center">หมวดหมู่งบประมาณ</div></th>
<th width="98"> <div align="center">จำนวนเงิน</div></th>
<th width="30"> <div align="center">แก้ไข</div></th>
<th width="30"> <div align="center">ลบหมวดหมู่</div></th>
</tr>
<?php
while($objResult = mysql_fetch_array($objQuery))
{
?>
<?php
$CusID = (isset($_GET["CusID"])) ? $_GET["CusID"] : '';
$Action = (isset($_GET["Action"])) ? $_GET["Action"] : '';
if($objResult["BudgetcategoryID"] == $CusID && $Action == "Edit")
{
?>
<tr>
<td><input type="text" name="txtEditquestion" size="20" value="<?php echo $objResult['Budgettype'];?>" />
<input type="hidden" name="hdnEditID" size="5" value="<?php echo $objResult['BudgetcategoryID'];?>" />
<input type="hidden" name="datebg" value="<?php echo $_SESSION["datebg"];?>" />
</td>
<td><input type="text" name="txtEditName" size="20" value="<?php echo $objResult['Budgetcategoryamount'];?>"></td>
<td colspan="2" align="right"><div align="center"><input name="btnAdd" type="button" id="btnUpdate" value="Update" onclick="frmMain.hdnCmd.value='Update';frmMain.submit();" /><input name="btnAdd" type="button" id="btnCancel" value="Cancel" onclick="window.location='<?php echo $_SERVER['PHP_SELF'];?>';" />
</div></td>
</tr>
<?php
}
else
{
?>
<tr>
<td><?php echo $objResult['Budgettype'];?></td>
<td><?php echo $objResult['Budgetcategoryamount'];?></td>
<td align="center">
<a href="<?php echo $_SERVER['PHP_SELF'];?>?Action=Edit&CusID=<?php echo $objResult['BudgetcategoryID'];?>">Edit</a>
</td>
<td align="center">
<a href="JavaScript:if(confirm('Confirm Delete?')==true){window.location='<?php echo $_SERVER['PHP_SELF'];?>?Action=Del&CusID=<?php echo $objResult['BudgetcategoryID'];?>';}">Delete</a></td>
</tr>
<?php
}
?>
<?php
}
?>
<tr>
<td><select name="BudgettypeID" required="required">
<option value="">เลือกหมวดหมู่</option>
<?php
mysql_query("SET NAMES UTF8");
$result1 = mysql_query("SELECT * FROM tbbudgettype");
while($row = mysql_fetch_array($result1)){
?>
<option value="<?php echo $row['BudgettypeID']; ?>"><?php echo $row['Budgettype'];?></option>
<?php }?>
</select> <input type="hidden" name="hdntype" size="5" value="<?php echo $_GET['Type'];?>" /></td>
<td><input type="text" name="txtAddName" size="20"></td>
<td colspan="2" align="right"><div align="center">
<input name="btnAdd" type="button" id="btnAdd" value="Add" onclick="frmMain.hdnCmd.value='Add';frmMain.submit();" />
</div></td>
</tr>
</table></td>
</tr>
<tr>
<td><?php require("footer.php");?></td>
</tr>
</table>
</form>
</body>
</html>
Tag : PHP, HTML/CSS, JavaScript, Ajax, jQuery
ประวัติการแก้ไข 2014-09-18 00:47:19
Date :
2014-09-18 00:44:59
By :
nest12345
View :
2329
Reply :
2
ถ้าจะใช้ session ต้องใช้คำสั่ง session_start() กับทุกไฟล์
<?php
session_start();
สำหรับ การใช้คำสั่ง เพื่อเก็บค่า post ใช้ session เป็นวิธีการที่ดีที่สุดแล้วครับ
header จะส่งค่า เป็น type get
การแปลงค่าจาก post ไป get ต้องคำนึ่งถึงความยาวตัวแปรที่จะส่ง + ความยาว ของ url
ลองค้นดูครับว่าเท่าไหร่ ผมจำไม่ได้แล้ว เพราะ ไม่ค่อยได้ใช้ครับ
Date :
2014-09-18 06:18:12
By :
Chaidhanan
Load balance : Server 03