การบันทึกข้อมูลแบบ ajax ครับคือผมงงตรงที่ว่าทำไมค่าตัวปรมันไม่ลงฐานข้อมูลครับ
การบันทึกข้อมูลแบบ ajax ครับคือผมงงตรงที่ว่าทำไมค่าตัวแปรมันไม่ลงฐานข้อมูลครับ
ผมมี ฟอร์มหนึ่งฟอร์มใช้กรอกข้อมูลเพื่อเก็บการ reply ของ webboard โดยผมใช้ ajax ช่วยในการส่งค่าและบันทึกปัญหาก็คือผมงงตรงการบันทึกครับคือข้อมูลมันลงเกือบทุกตัวยกเว้น $p จึงอยากรบกวนพี่ๆช่วยดู code หน่อยว่าผมผิดพลาดตรงไหน มันบันทึกค่าของตัวแปล $p
เป็น $pid ผมเลยงงครับ
Code (PHP)
<script language="JavaScript">
var HttPRequest = false;
function doCallAjax(Mode) {
HttPRequest = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
HttPRequest = new XMLHttpRequest();
if (HttPRequest.overrideMimeType) {
HttPRequest.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) { // IE
try {
HttPRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
HttPRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!HttPRequest) {
alert('Cannot create XMLHTTP instance');
return false;
}
var url = 'save_reply.php';
var pmeters = "&tdetail=" + encodeURI( document.getElementById("detail").value) +
"&tuse=" + encodeURI( document.getElementById("use").value ) +
"&temail=" + encodeURI( document.getElementById("email").value ) +
"&tp=" + encodeURI( document.getElementById("p").value ) +
"&tMode=" + Mode;
HttPRequest.open('POST',url,true);
HttPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
HttPRequest.setRequestHeader("Content-length", pmeters.length);
HttPRequest.setRequestHeader("Connection", "close");
HttPRequest.send(pmeters);
HttPRequest.onreadystatechange = function()
{
if(HttPRequest.readyState == 3) // Loading Request
{
document.getElementById("mySpan").innerHTML = "Now is Loading...";
}
if(HttPRequest.readyState == 4) // Return Request
{
document.getElementById("mySpan").innerHTML = HttPRequest.responseText;
document.getElementById("detail").value = '';
document.getElementById("use").value = '';
document.getElementById("email").value = '';
document.getElementById("p").value ='$pid';
}
}
}
</script>
<form name="frmMain" id="frmMain">
<div class="bg2"><font class="white">RE.แสดงความคิดเห็น</font></div>
<div class="bg1">
<table height="95"width="464">
<tr>
<td width="94" height="39" align="left"><font class="yellow"> - Comment ** </font></td>
<td width="358" align="left"><textarea name="detail" cols="35" id="detail"></textarea></td>
<tr>
<td height="23" align="left"><font class="yellow">- Username ** </font></td>
<td align="left"><input name="use" type="text" id="use" size="40" /></td>
<tr>
<td height="23" align="left"><font class="yellow">- Email address **</font></td>
<td align="left"><input name="email" type="text" id="email" size="40" />
<input name="btn" type="button" id="Submit" value="comment" onclick="javascript:doCallAjax('ADD');" />
<span class="b1">
<input name="p" type="hidden" id="p" value="<?=$pid?>" />
</span> </td>
</table>
</div>
<span id="mySpan"></span>
</form>
บันทึก
Code (PHP)
$strMode = $_POST["tMode"];
$pid=$_REQUEST['tp'];
$detail=$_POST['tdetail'];
$use=$_POST['tuse'];
$email=$_POST['temail'];
$date=date("Y-m-d H:i:s");
$sql1="update tb_post set p_post=p_post +1 where p_id='$pid' ";
$result1=mysql_query($sql1);
$sql2="update tb_post set p_status='a',user_post='Guest' where p_id='$pid' ";
$result2=mysql_query($sql2);
////--------------------เก็บรหัสสินค้าเป็นรหัส------------------************
if($strMode == "ADD"){
$sql = "SELECT r_id FROM tb_reply ORDER BY r_id DESC LIMIT 1";
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0)
{
$row = mysql_fetch_array($result);
sscanf($row[0] ,"0%d" , $id);
$id++;
$sql = "INSERT INTO tb_reply VALUES(CONCAT('0',RIGHT(CONCAT('0000' , $id) , 4)),'$detail','$use','$email','$date','$pid')";
}
else
{
$sql = "INSERT INTO tb_reply VALUES('00001','$detail','$use','$email','$date','$pid')";
}
}
mysql_query($sql);
Tag : PHP
ประวัติการแก้ไข 2011-07-29 07:57:12
Date :
2011-07-29 07:56:01
By :
chonburi f.c
View :
1111
Reply :
7
ลอง echo ค่าตัวแปรมาดูแล้วหรือยัง ว่ามีค่าส่งมาหรือป่าวครับ
document.getElementById("p").value ='';เขียนแบบนี้ครับ โดยปกติคุณ get id ขึ้นมาแล้วไม่ต้องใส่ตัวแปรข้างหลังครับเพราะจะมีค่าอยู่แล้ว
Date :
2011-07-29 08:29:13
By :
SOUL
<input name="p" type="hidden" id="p" value="<?=$pid?>" /> ค่าตรง <?=$pid?> มาจากไหนเหรอครับ
ที่มันบันทึกค่าของตัวแปล $p เป็น $pid ผมเลยงงครับ ก็เพราะว่า
ตอนคุณส่งค่าไป เป็น &tp=" + encodeURI( document.getElementById("p").value )
และรับค่า $pid=$_REQUEST['tp'];
มั้ง
Date :
2011-07-29 09:06:48
By :
ไวยวิทย์
<input name="p" type="hidden" id="p" value="<?=$pid?>" /> เอามาจากไหน
Date :
2011-07-29 17:28:36
By :
teez1232002
อีกอย่างคับ
document.getElementById("p").value ='$pid';
ค่าตัวแปล PHP ก็ไม่ใช่ นะครับ แบบนี้ค่าว่างแน่นอน
Date :
2011-07-29 17:32:05
By :
teez1232002
ได้แล้วครับขอบคุณมากครับผม
Date :
2011-07-29 20:36:09
By :
chonburi f.c
Load balance : Server 00