ใช้ php กับ access มีปัญหาเรื่องลบข้อมูลไม่ได้ค่ะ
code หน้า form เป็นแบบนี้นะคะ
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_goToURL() { //v3.0
var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
for (i=0; i<(args.length-1); i+=2) eval(args+".location='"+args[i+1]+"'");
}
//-->
</script>
<?
$dsn_name = "web_database";
$username ="";
$password ="";
$connect= odbc_connect($dsn_name, $username, $password) or die("ติดต่อ DSN ไม่ได้");
$sql = "select * from unit1";
$exec = odbc_exec($connect, $sql);
$num_fields = odbc_num_fields($exec);
echo"<Table border=1><Tr bgcolor=\"#336600\"> <Td><CENTER><B><font color=\"#FFFFFF\">ลำดับที่</font></B></CENTER></Td><Td><CENTER><B><font color=\"#FFFFFF\">หมายเลข</font></B></CENTER></Td> <Td><CENTER><b><font color=\"#FFFFFF\">ชื่อสิ่งอุปกรณ์</font></b></CENTER></Td> <Td><CENTER><b><font color=\"#FFFFFF\">หน่วยนับ</font></b></CENTER></Td> <Td><CENTER><b><font color=\"#FFFFFF\">รายละเอียด</font></b></CENTER></Td><Td><CENTER><b><font color=\"#FFFFFF\">ลบ</font></b></CENTER></Td></Tr>";
$N=1;
While (odbc_fetch_row($exec, $N))
{
$num = odbc_result($exec, "num");
$number = odbc_result($exec, "number");
$name = odbc_result($exec, "name");
$unit = odbc_result($exec, "unit");
$address = odbc_result($exec, "address");
echo "<Tr><Td>$num</Td> <Td>$number</Td> <Td>$name</Td> <Td>$unit</Td> <Td><CENTER><input type=\"button\" name=\"Button\" value=\"ดูข้อมูล\" onClick=\"MM_goToURL('parent','$address');return document.MM_returnValue\"> </CENTER></Td>
<Td><input type=\"button\" name=\"Button\" value=\"ลบ\" onClick=\"MM_goToURL('parent','deleteok.php');return document.MM_returnValue\"></Td></Tr>";
$N++;
}
//end While
echo "</Table>";
$sql_count = "select count (*) from unit1";
$exec = odbc_exec($connect, $sql_count);
$num_rows = odbc_result($exec, 1);
odbc_close($connect);
?>
ส่วนอันนี้เป็นหน้าที่จะแสดงผล
<?php
$dsn = "web_database";
$user ="";
$pass ="";
$connect = odbc_connect($dsn, $user, $pass) or die("ติดต่อ DSN ไม่ได้");
$sql = "delete from unit1 where num='$num'";
odbc_exec($connect, $sql) or die(ไม่สามารถลบข้อมูลได้);
echo "<Font Size=4><B>ลบข้อมูล เรกคอร์ดของ <Font color=red> ลำดับที่ = ".$num. " </Font>เรียบร้อยแล้ว</B><Br>";
echo "<Br><A Href=\"deleteform.php\"> ดูผลการเปลี่ยนแปลง / ลบข้อมูลอีก</A>";
echo "<Br><A Href=\"delsearch.php\"> ค้นหาเพื่อลบข้อมูลอีก</A>";
?>
พอแสดงผลลัพธ์แล้วเป็นแบบนี้ค่ะ
Warning: SQL error: [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression., SQL state 22005 in SQLExecDirect in c:\appserv\www\deleteok.php on line 7
ไม่สามารถลบข้อมูลได้
ใครทราบช่วยดูให้หน่อยนะคะว่าผิดตรงไหน ขอบคุณล่วงหน้านะคะ
ปล. ช่วยด้วยนะคะTag : - - - -
Date :
29 ก.ย. 2549 10:34:37
By :
popo
View :
1910
Reply :
5
ชื่อตารางอะไรครับ
แต่ละฟิลด์เก็บชนิดข้อมูลแบบไหน
Date :
29 ก.ย. 2549 11:45:02
By :
XXX
ชื่อ ตาราง unit 1 ชื่อฟิลด์ num,number,name,unit,address ค่ะ
ตอนนี้ไม่ขึ้น error แล้วค่ะ เพราะลองเปลี่ยนตรงคำสั่ง SQL จาก $num เป็น $number ซึ่ง data type ในaccessเป็น text แล้ว มันเลยขึ้นผลลัพธ์ แบบนี้ค่ะ
ลบข้อมูล เรกคอร์ดของ......(มันไม่แสดงข้อมูลค่ะ)......หมายเลข.....(มันไม่แสดงข้อมูลค่ะ)..... เรียบร้อยแล้ว
ดูผลการลบข้อมูล / ลบข้อมูลอีก
ค้นหาเพื่อลบข้อมูลอีก
แต่ว่าพอคลิกกลับไปดูผลการลบข้อมูล มันยังไม่ลบเลยค่ะ น่าจะเป็นเพราะอะไรคะ
ใครทราบช่วยอธิบายหน่อยนะคะ
Date :
29 ก.ย. 2549 14:59:33
By :
popo
จากการที่ศึกษา การติดต่อ Access นะครับ มันจะนานกว่า Mysql หรือ ฐานข้อมูลตัวอื่นๆ อ่ะครับ นี่เป็นประการแรก
ประการที่สอง คำสั่ง sql "delete from unit1 where num='$num' " อาจจะ ไม่ผ่านครับ ซึ่ง ตัวแปรที่ตรวจตรง where อาจจะไม่มีค่า มันเลยไม่รู้จะลบตัวไหน ถึงแม้ว่า จะเปลี่ยนตัวแปรเป็น $number ก็ตาม มันก็อาจไม่มีค่าใดๆ เลยก็ได้ครับ
ผมอยากถามคุณว่า หน้า deleteok.php มันรับค่ามาจากไหนครับ ไอ้ตัวแปร $num หรือ $number ของคุณน่ะครับ ผมดูแล้ว ไม่เห็นมันส่งค่าให้เลย งงครับ
Date :
30 ก.ย. 2549 03:40:44
By :
ผู้ไม่ประสงค์นาม
ขอบคุณมากนะคะคุณ ผู้ไม่ประสงค์ออกนาม ตอนนี้มันลบข้อมูลได้แล้วค่ะ ลองเช็คตามที่คุณบอกแล้วแก้ดูมันก็เลยผ่านค่ะ ขอบคุณมากๆๆ ค่ะ
Date :
2 ต.ค. 2549 10:34:07
By :
popo
Load balance : Server 02