|
|
|
สอบถามการเขียรคำสั่ง SQL หน่อยครับกรณี ลบกับเลือก เขียนแบบไหนครับ |
|
|
|
|
|
|
|
$del_file = @unlink($file);
แก้เป็น
if( file_exists($file)) unlink($file);
แบบว่าไม่จำเป็นต้องมี result มารับค่า แค่ ให้รู้ว่ามีไฟล์นี้อยู่จริง ก็สั่งลบเลย
ถ้าไม่มีไฟล์ก็ผ่านไป เพราะไม่มีประโยชน์อะไรจะมาตรวจสอบคำสั่งว่าลบได้ไม่ได้
เพราะ โปรแกรมแกรม สร้างไฟล์ เอง และลบไฟล์เอง permission มันเป์นของ โปรแกรมอยู่แล้ว
|
|
|
|
|
Date :
2015-01-14 20:09:00 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สอบถามพี่ชัยเพิ่มเติมครับ จากโค๊ดข้างต้นผมต้อง Select * ขึ้นมาอีกไหมครับ กรณีที่ผมจะดึงชื่อไฟล์ขึ้นมาครับ
$file = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'xml_rss'.DS.$rows->file_name;
ผมควรเขียนต่อเพิ่มอย่างไรครับผม
Code (PHP)
$id = JRequest::getInt('del_id');
$db = JFactory::getDBO();
$strSQL = "DELETE FROM #__attach_xml WHERE #__attach_xml.id = ".$id." ";
$db->setQuery($strSQL);
//$rs = $db->loadObjectList();
$strSQL = "SELECT * From #__attach_xml WHERE #__attach_xml.id=".$id." ";
//$db->setQuery($strSQL);
$rs = $db->loadAssocList();
//จริงๆตรงนี้เหมือนเป็นคำสั่งเฉพาะ Joomla ให้ลบไฟล์ แต่ปัญหาคือ row ไม่เจอชื่อไฟล์จาก ID ที่รับมาครับ ผมลองEcho เจอแต่PathFile
$file = JFile::delete(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'xml_rss'.DS.$rs["file_name"]);
if( file_exists($file)) unlink($file);
|
ประวัติการแก้ไข 2015-01-14 23:31:01 2015-01-14 23:32:30 2015-01-14 23:33:11 2015-01-15 12:35:40
|
|
|
|
Date :
2015-01-14 22:12:42 |
By :
sarut14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จัดลำดับคำสั่งผิดครับ เมื่อลบแล้ว จะหาเจอได้อย่างไรครับ
ต้องคิวรี่มา ตรวจสอบก่อน แล้วค่อยสั่งลบใน database
ต่อด้วยลบใน folder
ปล. แต่ก็ไม่จำเป็นคิวรี่มาตรวจสอบอีก เพราะมันถูกตรวจสอบจาก หน้าเพจที่กดปุ่มลบแล้วครับ
ที่ควรจะตรวจสอบคือ สิทธิ์ในการลบของ user ครับ
|
ประวัติการแก้ไข 2015-01-15 08:19:39
|
|
|
|
Date :
2015-01-15 08:16:36 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$id = JRequest::getInt('del_id');
$db = JFactory::getDBO();
$strSQL = "DELETE FROM #__attach_xml WHERE #__attach_xml.id = ".$id." ";
$db->setQuery($strSQL); // บันทัดนี้สั่งลบแล้ว select ข้างล่างก็หาไม่เจอแล้วนะครับ
//////////////////////// begin //////////////////////////////////
// เอาออก ครับ ไม่ได้ประโยชน์
//$rs = $db->loadObjectList();
//$strSQL = "SELECT * From #__attach_xml WHERE #__attach_xml.id=".$id." ";
//$db->setQuery($strSQL);
//$rs = $db->loadAssocList();
//////////////////////// end /////////////////////////////////
//จริงๆตรงนี้เหมือนเป็นคำสั่งเฉพาะ Joomla ให้ลบไฟล์ แต่ปัญหาคือ row ไม่เจอชื่อไฟล์จาก ID ที่รับมาครับ ผมลองEcho เจอแต่PathFile
$file = JFile::delete(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'xml_rss'.DS.$row1["file_name"]);
if( file_exists($file)) unlink($file);
ที่ควรจะตรวจสอบคือ สิทธิ์ในการลบของ user ครับ หมายถึงหน้าเพจที่ ต้องกดปุ่ม ลบ ครับ
ที่หน้านั้น ควรได้รับการตรวจสอบสิทธิ์ของ user มาก่อนที่จะแสดงปุ่มกด
|
|
|
|
|
Date :
2015-01-15 11:00:09 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตรวจสอบโค๊ด
17.if( file_exists($file)) unlink($file);
else echo 'File not found ', $file;
ตรวจสอบว่าชื่อ path ถูกต้องไหม
|
|
|
|
|
Date :
2015-01-15 11:58:24 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Path ถูกครับ แต่ DS.$rs["file_name"]); เหมือนไม่เจอตัวไฟลือ่ะครับ ชี้ไปปลายทางถูกครับ
$file = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'xml_rss'.DS.$row["file_name"];
คำสั่งนี้ชี้ไปที่ root โฟเดอร์เลยครับ
|
ประวัติการแก้ไข 2015-01-15 12:35:16 2015-01-15 12:38:14
|
|
|
|
Date :
2015-01-15 12:34:47 |
By :
sarut14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พอดีไม่คล่องกับ joomla แค่งูๆปลาๆ
แต่โค๊ดนี้
15. $file = JFile::delete(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'xml_rss'.DS.$row1["file_name"]);
ลอง
Code (PHP)
echo JPATH_ROOT.DS.'media'.DS.'k2'.DS.'xml_rss'.DS.$row1["file_name"];
มาดูครับ ว่าเป็นยังไง
|
|
|
|
|
Date :
2015-01-15 12:41:20 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ครับ มันจะได้โฟเดอร์ที่อยู่ปลายทางของไฟล C:\AppServ\www\TTD_KM\media\k2\xml_rss\
ออกมา แต่ $rs["file_name"];//แก้เป็น rs มันไม่ชี้ไปที่ชื่อไฟล์เลยครับ งงมากๆ
ไม่รู้เกี่ยวไหม ผมเพิ่ม $rs = $db->loadAssocList(); เข้าไปครับท้ายตรง strSQL
มันเลยทำให้ค่า if( file_exists($file)) unlink($file); ไม่มีผลอะครับ T_T
|
ประวัติการแก้ไข 2015-01-15 12:48:32
|
|
|
|
Date :
2015-01-15 12:46:55 |
By :
sarut14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ้อ filename อยู่ในตาราง
Code (PHP)
$id = JRequest::getInt('del_id');
$db = JFactory::getDBO();
/////////////////////////// ทำอันนี้ก่อน delete
$strSQL = "SELECT * From #__attach_xml WHERE #__attach_xml.id=".$id." ";
$db->setQuery($strSQL);
$rs = $db->loadAssocList();
$row1 = $rs[0]; // ต้องมีบันทัดนี้หรือเปล่าครับ
////////////////////////////////// delete
$strSQL = "DELETE FROM #__attach_xml WHERE #__attach_xml.id = ".$id." ";
$db->setQuery($strSQL);
//////////////////////////////////////////
$file = JFile::delete(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'xml_rss'.DS.$row1["file_name"]);
if( file_exists($file)) unlink($file);
|
|
|
|
|
Date :
2015-01-15 13:01:44 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองใส่ตามพี่ชัยว่าครับ เปลี่ยนจาก 0 เป็น 1 สลับกัน ผลไม่ออกครับ กับมันลบใน DB ไม่ได้ด้วยครับ ตอนแรกลบได้ปกติแต่ไม่ลบไฟล์
Code (PHP)
$id = JRequest::getInt('del_id');
$db = JFactory::getDBO();
$strSQL = "SELECT * From #__attach_xml WHERE #__attach_xml.id=".$id." ";
$db->setQuery($strSQL);
$rs = $db->loadAssocList();
$row1 = $rs[0] ; // เปลี่ยน1 แล้ว หรือเอา [] ออกไม่เป็นผลครับ
//$file = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'xml_rss'.DS.$row1["file_name"];
//if( file_exists($file)) unlink($file);
$strSQL = "DELETE FROM #__attach_xml WHERE #__attach_xml.id = ".$id." ";
$db->setQuery($strSQL);
$file = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'xml_rss'.DS.$row1["file_name"];
if( file_exists($file)) unlink($file);
// อันนี้ทำ Redirect กลับไปหน้าแรก
$msg = JText::_('File Export DELETE');
$link = 'index.php?option=com_k2exporter';
$redirect = JFactory::getApplication();
$redirect->redirect($link,$msg);
-DB
|
ประวัติการแก้ไข 2015-01-15 13:19:51
|
|
|
|
Date :
2015-01-15 13:18:30 |
By :
sarut14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
06.$rs = $db->loadAssocList();
07.$row1 = $rs[0] ; // เปลี่ยน1 แล้ว หรือเอา [] ออกไม่เป็นผลครับ
06.$rs = $db->loadAssocList();
print_r($rs); exit; // เอา result มาดูหน่อยครับ
07.$row1 = $rs[0] ; // เปลี่ยน1 แล้ว หรือเอา [] ออกไม่เป็นผลครับ
|
|
|
|
|
Date :
2015-01-15 13:32:45 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จะได้แบบนี้ครับ
Array ( [0] => Array ( [id] => 138 [id_cat] => 23 [file_name] => xml_TH_2015_01_1513_10_19.xml [title] => เธฃเธฑเธเธเธทเนเธญเน€เธซเธฃเธตเธขเธ 10 เธเธฒเธ— [file_date] => 2015-01-15 ) )
|
ประวัติการแก้ไข 2015-01-15 13:38:24
|
|
|
|
Date :
2015-01-15 13:37:59 |
By :
sarut14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ต้องทำความเข้าใจกับ $db->setQuery() หน่อยแล้วครับ
คำสั่งนี้เป็น คำสั่ง นำ statement เข้าไปในคิวลิสต์
ส่วนคำสั่งในการ excute มีอยู่หลายอัน
เช่น
$result = $db->loadAssocList(); สั่งคิวรี่ โดยกำหนด รูปแบบ result ที่ได้รับ
$result = $db->execute(); สั่งคิวรี่ โดยต้องการว่าทำได้หรือไม่ได้
ดังนั้น เมื่อ ใช้คำสั่ง $db->setQuery(); ต้อง ตามด้วยคำสั่ง ด้านบน แล้วแต่ความจำเป็น
Code (PHP)
$rs=$db->setQuery('delete ......');
$db->execute();
ปล.คำสั่งในการ excute มีมากกว่าตัวอย่างที่ให้นะครับ และทุกครั้งที่ ทำคำสั่งเสร็จจะล้าง คิวลิสต์ออกครับ
|
ประวัติการแก้ไข 2015-01-15 14:03:36
|
|
|
|
Date :
2015-01-15 14:00:57 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
clear ง่ายๆ เลยครับ
unset($db);
$db = JFactory::getDBO(); // สร้างใหม่ 55555 คำสั่งโดยตรงไม่รู้ครับ ก็งูๆปลาๆ อยู่เหมือนกัน
|
|
|
|
|
Date :
2015-01-15 15:18:32 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองมั่วๆดูครับพี่ชัย ตอนนี้อัฟไฟล์ได้แล้ว แต่ต้องมีการเช็คขนาดไฟล์ นามสกุลไฟล์ที่สามารถอัฟได้ รวมไปถึงการอ่านไฟล์เก็บลง DB เหอๆ
ถ้าจะใส่การดัก นามสกุลไฟล์ ไม่แน่ใจว่าใช้วิธีแบบปกติได้ไหม เดี๊ยวจะลองดูครับ ติดอาจจะรบกวน 555 อันนี้แกะมาจาก Doc Joomla
Code (PHP)
function import() {
$app = JFactory::getApplication();
$input = $app->input;
$file_xml= $input->files->get('file_xml');
if(isset($file_xml['name']))
{
jimport('joomla.filesystem.file');
$file_xml['name'] = strtolower(JFile::makeSafe($file_xml['name']));
$savepath = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'xml_import/'.$file_xml['name'];
//$fileRelativePath = '/pathToTheRightFolder/'.$file['name'];
$fileAbsolutePath = JPath::clean( JPATH_ROOT.$savepath);
JFile::upload( $file_xml['tmp_name'], $savepath );
}
$msg = JText::_('! File XML Upload !');
$link = 'index.php?option=com_k2exporter';
$redirect = JFactory::getApplication();
$redirect->redirect($link,$msg);
}
|
|
|
|
|
Date :
2015-01-15 18:40:24 |
By :
sarut14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|