กำหนดให้เลือกข้อมูล โดยใช้ checkbox
ตอนนี้กำลังเขียนโปรแกรมในการขอสำเร็จการศึกษาค่ะ ณ ตอนนี้ใช้ checkbox ค่ะ (เพราะว่าไม่รู้จะใช้อะไรค่ะ)
ตัวอย่าง จะเป็นการแสดงข้อมูลโดยดึงจากฐานข้อมูลนะค่ะ
รหัสนักศึกษา ชื่อ - นามสกุล checkbox
ตัวอย่าง นาย ก. นามสกุล ข. checkbox
นาย ค. นามสกุล ค. checkbox
โดยกำหนดให้ข้อมูลถ้าติ๊กถูกที่ checkbox จะกำหนดให้ update status จากตาราง student เป็น 2 แต่ถ้าไม่ติ๊กถูกที่ checkbox
จะกำหนดให้ update status จากตาราง student เป็น 3 (จากเดิมข้อมูล status ในตารางจะเป็น 1 )
ขอบคุณล่วงหน้าค่ะ
ปล. ได้ดูบทความในเว็บนี้แล้วค่ะเรื่อง checkbox แต่ยังงงอยู่เลยค่ะ (เคยเขียนเฉพาะ php ไม่เคยใช้ ajax)
ตัวอย่าง จะเป็นการแสดงข้อมูลโดยดึงจากฐานข้อมูลนะค่ะ
รหัสนักศึกษา ชื่อ - นามสกุล checkbox
ตัวอย่าง นาย ก. นามสกุล ข. checkbox
นาย ค. นามสกุล ค. checkbox
โดยกำหนดให้ข้อมูลถ้าติ๊กถูกที่ checkbox จะกำหนดให้ update status จากตาราง student เป็น 2 แต่ถ้าไม่ติ๊กถูกที่ checkbox
จะกำหนดให้ update status จากตาราง student เป็น 3 (จากเดิมข้อมูล status ในตารางจะเป็น 1 )
ขอบคุณล่วงหน้าค่ะ
ปล. ได้ดูบทความในเว็บนี้แล้วค่ะเรื่อง checkbox แต่ยังงงอยู่เลยค่ะ (เคยเขียนเฉพาะ php ไม่เคยใช้ ajax)
ตอนนี้คุณ Tiyanun อยากได้ Code แบบ Ajax ครับ
จะกำหนดให้ update status จากตาราง student เป็น 3
ถ้ายังมีคำถามอยู่ กรุณาถามเป็นข้อๆ นะครับ
ไฟล์ส่งค่า ไฟล์ที่ list_member.php
[head]Code (PHP)[/head]
[php]
<script type="text/javascript">
function uzXmlHttp(){
var xmlhttp = false;
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
xmlhttp = false;
}
}
if(!xmlhttp && document.createElement){
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function chk_val()
{
var user_id1= document.getElementById("user_id1").value;
var user_id2= document.getElementById("user_id2").value;
var user_id3= document.getElementById("user_id3").value;
var url = 'update_status.php?user_id1='+user_id1+'&user_id2='+user_id2+'&user_id3='+user_id3;
xmlhttp=uzXmlHttp();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState==4){
if (xmlhttp.status==200) {
var ret=xmlhttp.responseText;
}
}
}
xmlhttp.open("GET", url);
xmlhttp.setRequestHeader("If-Modified-Since", ""+ new Date().getTime()+"");
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=windows-874');
xmlhttp.send(null);
}
</script>
<body>
<table width="500" border="1" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<?
$sql = "SELECT * FROM users";
$query = mysql_query($sql);
$i = 1;
while(@extract($obj = mysql_fetch_array($query))){
?>
<tr>
<td><?=$i?></td>
<td><?=$fullname?></td>
<td>
<input type="hidden" name="user_id<?=$i?>" id="user_id<?=$i?>" value="<?=$i?>"/>
<? echo $user_id;?><input type="checkbox" name="chk_val" id="chk_val" onClick="chk_val('<? echo $user_id.$i?>')" /></td>
</tr>
<? $i++; } ?>
<input type="hidden" name="total" id="total" value="<?=$i?>"/>
</table>
[/php]
ลองเอา Code นี้ไปดูก่อนนะครับ สร้างไฟล์ update_status.php มารับค่าจากการ Link มาจาก javascript
ทำการ $_GET
ค่าที่ส่งมาจะอยู่ใน
var url = 'update_status.php?user_id1='+user_id1+'&user_id2='+user_id2+'&user_id3='+user_id3;
จะส่งค่า user_id1,user_id2,user_id3
แต่ต้องใส่ Code นี้ีไว้ส่วนหัวด้วยนะครับในไฟล์ update_status.php
<?
$now = gmdate('D,d M Y H:i:s') . ' GMT';
header('Expires: ' . $now);
header('Last-Modified: ' . $now);
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: pre-check=0, post-check=0, max-age=0');
header('Pragma: no-cache');
header('Content-Type: text/html; charset=utf-8');
?>
ลองทำดูนะครับ
1. ลองดูว่า Connect Database หรือยัง
2. ลองดูว่ามี Table หรือ Field หรือยัง
3. ข้อมูลในตารางมีหรือไม่
4. ลอง echo ค่า $sql ออกมาดู แล้วลอง ไปรันใน Mysql ว่ามีค่าออกมาหรือไม่
ลองทำตามขั้นตอนนี้ก่อนนะครับ
<script type="text/javascript">
function uzXmlHttp(){
var xmlhttp = false;
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
xmlhttp = false;
}
}
if(!xmlhttp && document.createElement){
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function chk_val()
{
var user_id1= document.getElementById("user_id1").value;
var user_id2= document.getElementById("user_id2").value;
var user_id3= document.getElementById("user_id3").value;
var url = 'adddata2.php?user_id1='+user_id1+'&user_id2='+user_id2+'&user_id3='+user_id3;
xmlhttp=uzXmlHttp();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState==4){
if (xmlhttp.status==200) {
var ret=xmlhttp.responseText;
}
}
}
xmlhttp.open("GET", url);
xmlhttp.setRequestHeader("If-Modified-Since", ""+ new Date().getTime()+"");
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=windows-874');
xmlhttp.send(null);
}
</script>
<?
include "connect.php"; // connect datatbase เรียบร้อยแล้ว
$sql = "SELECT * FROM student"; // เลือกข้อมูลจากตาราง student
$query = mysql_query($sql);
$i = 1;
while(@extract($obj = mysql_fetch_array($query))){
?>
<tr>
<td><?=$i?></td>
<td><?=$std_name?></td>//เลือกฟิล์ดในตาราง student คือ std_name
<td>
<input type="hidden" name="user_id<?=$i?>" id="user_id<?=$i?>" value="<?=$i?>"/>
<? echo $user_id;?><input type="checkbox" name="chk_val" id="chk_val" onClick="chk_val('<? echo $user_id.$i?>')" /></td>
</tr>
<? $i++; } ?>
<input type="hidden" name="total" id="total" value="<?=$i?>"/>
</table>
พอรันโปรแกรมแล้วมันไม่แสดงข้อมูลอะไรเลยค่ะ รบกวนช่วยดูให้หน่อยนะค่ะ ไม่รู้ว่ามันผิดตรงไหน
ปล. ตรง user_id คืออะไรค่ะ ในตารางของดิฉันไม่มีนะค่ะ แต่ลองเปลี่ยนเป็น std_id คือ รหัสนักศึกษามันก็ไม่แสดงข้อมูลค่ะ
ลองเอาค่าที่ได้จา่กการ echo ไป Query ใน MySql นะครับ ว่ามีค่าออกหรือปล่าว
แต่อย่าลืมนะครับ Code ที่ส่งให้ดูเป็่นแค่เบื้องต้น ต้องลองปรับแต่งดูนะครับในส่วนของ Javascript