แนบไฟล์หลายไฟล์ในการประกาศข่าวสาร อยากได้ตัวอย่าง หรือแนวคิดในการทำด้วยคะ
ก็อัพโหลดหลายๆรูปครับ
แยกตารางเก็บรูปออกไปจากข่าว แล้วใส่ PKข่าว เป็น FK ในตารางรูปด้วย แค่นี้ครับ
Date :
2015-10-29 10:00:49
By :
mangkunzo
อะ วันนี้ว่าง 555+
เอาไปประยุกต์เพิ่มเติมเอาเองนะครับ
Code (PHP)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ตัวอย่างการแนบไฟล์ในกระทู้</title>
</head>
<body>
<?PHP
#ฟังก์ชั่นนี้ใช้สำหรับ Rename ชื่อไฟล์ที่ทำการอัพโหลดใหม่ รับค่า $_FILES['file']['name']
#ผลลัพธิ์จะได้ เช่น รับค่า ทดสอบ.docx ฟังก์ชั่นจะส่งค่ามาเป็น Acdeq12345678.docx เป็นต้น
function getNewName($fileName){
$fileName = explode('.',$fileName);
$i = count($fileName)-1;
$fileType = strtolower($fileName[$i]);
$rand = substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'),0,5);
$result = $rand.time().'.'.$fileType;
return $result;
}
$db = new mysqli("localhost", "root", "root", "multi_upload");
$db->set_charset("utf8");
/* check connection */
if ($db->connect_errno) {
printf("Connect failed: %s\n", $db->connect_error);
exit();
}
if(!empty($_POST['button'])){
$content_title = !empty($_POST['content_title']) ? $_POST['content_title'] : NULL;
$content_detail = !empty($_POST['content_detail']) ? $_POST['content_detail'] : NULL;
if(!empty($content_title)){
$db->query(" INSERT INTO tbl_content( content_name, content_detail ) VALUES( '$content_title', '$content_detail' ) "); #บันทึกลงฐานข้อมูล
$lastId = $db->insert_id; # ID ล่าสุดที่ทำการบันทึก และนำไปอ้างอิงในตารางที่เก็บไฟล์แนบ
if(!empty($lastId)){
for($i=1;$i<=5;$i++){
$file_title = $_POST['filename_'.$i];
$file_name = $_FILES['files_'.$i]['name'];
$file_tmp = $_FILES['files_'.$i]['tmp_name'];
$part = 'uploads/';
if( !empty($file_title) && !empty($file_name) ) {
$newFileName = getNewName($file_name);
if (move_uploaded_file($file_tmp, $part.$newFileName)) {
$db->query(" INSERT INTO tbl_files( ref_content_id, files_title, files_name ) VALUES( '$lastId', '$file_title', '$newFileName' ) "); #บันทึกลงฐานข้อมูล
}
}
} #End for()
echo 'Success';
} #End if(!empty($lastId))
} #End if(!empty($content_title))
} #End if(!empty($_POST['button']))
?>
<form enctype="multipart/form-data" method="post">
<table width="690" border="0" cellspacing="0" cellpadding="0">
<tr>
<th height="34" colspan="2" scope="row">ตัวอย่างการแนบไฟล์ในกระทู้</th>
</tr>
<tr>
<th height="31" colspan="2" align="left" scope="row">ชื่อหัวข้อ :
<input type="text" name="content_title" id="content_title" size="44" /></th>
</tr>
<tr>
<th height="102" colspan="2" align="left" scope="row">รายละเอียด :
<textarea name="content_detail" id="content_detail" cols="45" rows="5"></textarea></th>
</tr>
<tr>
<th width="320" height="28" bgcolor="#FFFFCC" scope="row">ชื่อไฟล์</th>
<th width="370" bgcolor="#FFFFCC" scope="row">แนบไฟล์</th>
</tr>
<?PHP for($i=1;$i<=5;$i++){ ?>
<tr>
<th height="32" scope="row"><input name="filename_<?PHP echo $i; ?>" type="text" id="filename_<?PHP echo $i; ?>" size="50" /></th>
<th scope="row"><input type="file" name="files_<?PHP echo $i; ?>" id="files_<?PHP echo $i; ?>" /></th>
</tr>
<?PHP } ?>
<tr>
<th colspan="2" scope="row" height="45"><input type="submit" name="button" id="button" value="Submit" /></th>
</tr>
</table>
</form>
</body>
</html>
โครงสร้างตาราง tbl_content
Code
CREATE TABLE IF NOT EXISTS `tbl_content` (
`content_id` int(5) NOT NULL AUTO_INCREMENT,
`content_name` varchar(255) NOT NULL,
`content_detail` text NOT NULL,
PRIMARY KEY (`content_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
โครงสร้างตาราง tbl_files
Code
CREATE TABLE IF NOT EXISTS `tbl_files` (
`files_id` int(10) NOT NULL AUTO_INCREMENT,
`ref_content_id` int(5) NOT NULL COMMENT 'FK จากตาราง tbl_content',
`files_title` varchar(255) NOT NULL,
`files_name` varchar(25) NOT NULL,
PRIMARY KEY (`files_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Date :
2015-10-29 10:32:19
By :
arm8957
ขอบคุณมากๆเลยนะคะ
Date :
2015-10-29 19:51:57
By :
thiyaaon
คุณเบียแปะ code นี้ทุกกระทู้เลย ต้องการจะทำอะไรหว่า
Date :
2015-11-13 17:36:58
By :
progamer2000
ไม่ใช่อะไรคับ แป๊ะผิด ขอโทาทีครับ พอดีหาข้อมูลหลายๆอันครับ
ประวัติการแก้ไข 2015-11-14 08:26:10
Date :
2015-11-14 08:25:20
By :
pissanu8970
Load balance : Server 00