้เขียนคำสั่ง Delete ข้อมูลในฐาน แล้ว ไม่ยอมหายไปครับ ไม่รู้ errorr ตรงไหน รบกวนช่วยดูทีครับ
Code (PHP)
<?php
session_start();
?>
<html>
<head>
<script>
function confirmDelete(delUrl) {
if (confirm("คุณต้องการลบไฟล์ใช่หรือไม่")) {
document.location = delUrl;
}
}
</script>
</head>
<center>
<form name="frmSearch" method="get" action="list_files.php">
<table width="599" border="0">
<tr>
<th>Keyword
<input name="txtKeyword" type="text" id="txtKeyword">
<input type="submit" value="Search"></th>
</tr>
</table>
</form>
<br>
<br>
</center>
<?php
// Connect to the database
$dbLink = new mysqli('localhost', 'it55660293', 'xgabpyz1626', 'it55660293');
if(mysqli_connect_errno()) {
die("MySQL connection failed: ". mysqli_connect_error());
}
// Query for a list of all existing files
$sql = "SELECT `id`, `name`, `mime`, `size`, `created`,`count` FROM `file` WHERE UserID = '$_SESSION[UserID]'";
$result = $dbLink->query($sql);
// Check if it was successfull
if($result) {
if($_GET["txtKeyword"] != "")
{
$objConnect = mysql_connect("localhost","it55660293","xgabpyz1626") or die("Error Connect to Database");
$objDB = mysql_select_db("it55660293");
// Search By Name or Email
$strSQL = "SELECT * FROM file WHERE (name LIKE '%".$_GET["txtKeyword"]."%' and UserID = '$_SESSION[UserID]')";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
echo '<table width="80%" align="center">
<tr>
<td><b>Name</b></td>
<td><b>Mime</b></td>
<td><b>Size (bytes)</b></td>
<td><b>Created</b></td>
<td><b> </b></td>
<td><b>Sum Download</b></td>
<td><b>Delete File</b></td>
</tr>';
// Print each file
while($row = mysql_fetch_array($objQuery)) {
echo "
<tr>
<td align='center'>{$row['id']}</td>
<td>{$row['name']}</td>
<td>{$row['mime']}</td>
<td>{$row['size']}</td>
<td>{$row['created']}</td>
<td><a href='get_file.php?id={$row['id']}'>Download</a></td>
<td> {$row['count']}</td>
<td align='center'><a href = javascript:confirmDelete('list_files.php?action=delete&value={$row['id']}')><font color = 'red'>Delete</font></a></td>
</tr>";
}
// Close table
echo '</table>';
}
else
{
// Make sure there are some files in there
if($result->num_rows == 0) {
echo '<p>There are no files in the database</p>';
}
else {
// Print the top of a table
echo '<table width="80%" align="center">
<tr>
<td ><b>Name</b></td>
<td><b>Mime</b></td>
<td><b>Size (bytes)</b></td>
<td><b>Created</b></td>
<td><b> </b></td>
<td><b>Sum Download</b></td>
<td><b>Delete File</b></td>
</tr>';
// Print each file
while($row = $result->fetch_assoc()) {
echo "
<tr>
<td align='center'>{$row['id']}</td>
<td>{$row['name']}</td>
<td>{$row['mime']}</td>
<td>{$row['size']}</td>
<td>{$row['created']}</td>
<td><a href='get_file.php?id={$row['id']}'>Download</a></td>
<td> {$row['count']}</td>
<td align='center'><a href = javascript:confirmDelete('list_files.php?action=delete&value={$row['id']}')><font color = 'red'>Delete</font></a></td>
</tr>";
}
// Close table
echo '</table>';
}
}
// delete
function delete($id){
$sql15 = "DELETE FROM file WHERE id = '$id'";
mysql_query($dbLink,$sql15) or die("ERRPR MSG DELETE FILES : ".mysql_error());
echo "DELETE COMPLETE";
echo "<META HTTP-EQUIV='Refresh' CONTENT='0;URL=./list_files.php'>";
}
if($_GET['action'] == 'delete'){
delete($_GET['value']);
}
// Free the result
$result->free();
}
else
{
echo 'Error! SQL query failed:';
echo "<pre>{$dbLink->error}</pre>";
}
// Close the mysql connection
$dbLink->close();
?>
<body>
<table border="0" cellpadding="10" cellspacing="1" width="500" align="center">
<tr class="tableheader">
<td align="center"></td>
</tr>
<tr class="tablerow">
<td>
<center>
<a href="add_file.php">Back to Upload File</a>
<br>
<?php
if($_SESSION["Username"]) {
?>
Welcome <?php echo $_SESSION["Username"]; ?>. Click here to <a href="index.html" tite="Logout">Logout.
<br> Your user ID is <?php echo $_SESSION["UserID"]; ?>
</center>
<?php
}
?>
</td>
</tr>
</body>
</html>
เนี่ยครับ ข้อมูลไม่ยอมลบหายไป
กดปุ่ม delete แล้วมันขึ้น ERRPR MSG DELETE FILES :Tag : PHP, MySQL, HTML/CSS
ประวัติการแก้ไข 2014-12-01 20:46:50
Date :
2014-12-01 19:35:52
By :
xgabpyz
View :
2860
Reply :
10
พอถึง ฟังชั่น delete เหมือนมันเข้า or die("ERRPR MSG DELETE FILES : ".mysql_error()); อะครับ
Date :
2014-12-01 20:22:10
By :
xgabpyz
ยังไม่ได้เหมือนเดิมครับ
Date :
2014-12-01 21:54:31
By :
xgabpyz
มันขึ้นว่าไงเอ่ย
แล้วก็รบกวนตรวจสอบชื่อฟังก์ชั่นในบรรทัดที่ 127 ด้วยนะครับ
เปลี่ยนได้มั้ยเอ่ย อิอิ
Date :
2014-12-01 22:14:50
By :
k.voyza
พอกดปุ่ม delete แล้วขึ้นแบบนี้ครับ
Date :
2014-12-01 22:18:34
By :
xgabpyz
เอาโค้ดมาจากไหนครับเนี่ย - -
คือต้องเข้าใจพื้นฐานก่อนนะครับ ตัวแปรในภาษาโปรแกรมเกือบทุกภาษามันมี scope ของมัน
หมายถึงที่ที่ตัวแปรนั้นมีตัวตนอยู่
ซึ่งใน php ตัวแปรมีแค่ global scope และ function scope (ตัวแปรใน class ก็ถือว่าเป็น function scope เพราะต้องเรียกใช้งานผ่าน $this)
Code (PHP)
<?php
// global scope
$a = 555;
function abc()
{
// function scope
echo $a; // error เพราะ $a อยู่ใน global scope
}
abc();
ถ้าจะให้ในฟังก์ชั่นมองเห็นตัวแปรที่อยู่ใน global scope ต้องประกาศก่อนด้วยคีย์เวิร์ด global
Code (PHP)
<?php
// global scope
$a = 555;
function abc()
{
// function scope
global $a; // ดึง $a มาจาก global scope
echo $a; // ok
}
abc();
ซึ่งในโค้ดของคุณมีการประกาศฟังก์ชั่น delete() ที่ใช้ตัวแปรจาก global scope โดยไม่ประกาศด้วยคีย์เวิร์ด global (บรรทัด 127)
ลองคิดตามที่ผมอธิบายแล้วลองแก้เองครับ
จะแก้ไขให้ทำงานถูกต้องได้อย่างไร?
function delete($id){
$sql15 = "DELETE FROM file WHERE id = '$id'";
mysql_query($dbLink,$sql15) or die("ERRPR MSG DELETE FILES : ".mysql_error());
echo "DELETE COMPLETE";
echo "<META HTTP-EQUIV='Refresh' CONTENT='0;URL=./list_files.php'>";
}
Date :
2014-12-01 22:23:50
By :
phpinfo()
Code (PHP)
function delete($id){
$sql15 = "DELETE FROM file WHERE id = '$id'";
global $dbLink;
mysql_select_db("it55660293", $dbLink);
mysql_query($sql15, $dbLink) or die("ERRPR MSG DELETE FILES : ".mysql_error());
echo "DELETE COMPLETE";
echo "<META HTTP-EQUIV='Refresh' CONTENT='0;URL=./list_files.php'>";
}
if($_GET['action'] == 'delete'){
delete($_GET['value']);
}
Code (PHP)
function delete($id){
global $sql;
$sql = "DELETE FROM file WHERE id = '$id'";
mysql_select_db("it55660293", $dbLink);
mysql_query($sql, $dbLink) or die("ERRPR MSG DELETE FILES : ".mysql_error());
echo "DELETE COMPLETE";
echo "<META HTTP-EQUIV='Refresh' CONTENT='0;URL=./list_files.php'>";
}
if($_GET['action'] == 'delete'){
delete($_GET['value']);
}
Code (PHP)
function delete($id){
global $sql,$dbLink;
$sql = "DELETE FROM file WHERE id = '$id'";
mysql_select_db("it55660293", $dbLink);
mysql_query($sql, $dbLink) or die("ERRPR MSG DELETE FILES : ".mysql_error());
echo "DELETE COMPLETE";
echo "<META HTTP-EQUIV='Refresh' CONTENT='0;URL=./list_files.php'>";
}
if($_GET['action'] == 'delete'){
delete($_GET['value']);
}
ลองทั้ง 3 แบบแล้วครับ ก็ยังไม่ได้งะ ขึ้นแบบเดิมตลอด
ERRPR MSG DELETE FILES :
ประวัติการแก้ไข 2014-12-01 22:36:35 2014-12-01 22:37:04
Date :
2014-12-01 22:27:03
By :
xgabpyz
ลบไฟล์ได้แล้วครับ ขอบคุณมากนะครับ !!
เอ่อ ถ้าผมอยากจะให้อธิบายด้วยได้ไหมครับว่าทำไม
แต่ในความเข้าใจผม ผมคิดว่า มันมี if else เข้ามาเกี่ยวข้อง
มันเลยทำให้ไม่รู้จัก DB มันเลยไม่รู้จะเลือกลบจาก ตารางไหน
ประวัติการแก้ไข 2014-12-02 00:34:47
Date :
2014-12-02 00:24:33
By :
xgabpyz
ตัวแปรใน function ที่ต้องทำ Global คือการประกาศตัวแปรแบบหนึ่ง
เป็นการประกาศให้ใช้ ตัวแปรนอก function นี้ได้ภายใน function นั้นๆ
Code (PHP)
function delete($id){
// ตัวแปรที่ต้องปรเะกาศ เพราะไม่ได้ถูกประกาศไว้ ภายในฟังก์ชั่น
global $dbLink;
$sql15 = "DELETE FROM file WHERE id = '$id'";
mysql_query($dbLink,$sql15) or die("ERRPR MSG DELETE FILES : ".mysql_error());
echo "DELETE COMPLETE";
echo "<META HTTP-EQUIV='Refresh' CONTENT='0;URL=./list_files.php'>";
}
ส่วน $sql15 ถูกประกาศภายใน function อยู่แล้ว
ถ้าประกาศหมายความว่าสามารถเรียกใช้จาก นอก ฟังก์ชั่นได้ด้วย
ปล และคำสั่ง ต้องเป็นแบบนี้ด้วยนะครับ
mysql_query($sql15, $dbLink) สลับตัวแปรกันด้วยนะครับ ต้องเอา link ไว้ด้านหลัง
แต่ถ้า ทั้งโปรแกรม ติดต่อแค่ database เดียว ก็ไม่จำเป็นต้องใส่ link นะครับ
เมื่อเราประกาศ mysql_select_db( $dbName ); ก็ไม่จำเป็นต้องใช้ link แล้วครับ
และก็เริ่มหัดเขียน mysqli ได้แล้วครับ เพราะเวอร์ชั่นใหม่ๆเขาเปลี่ยนไปใช้ mysqli กันหมดแล้วครับ
ประวัติการแก้ไข 2014-12-02 08:29:34
Date :
2014-12-02 08:21:00
By :
Chaidhanan
Load balance : Server 02