ถามถึงการ upload file pdf ครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ถามถึงการ upload file pdf ครับ

ถามถึงการ upload file pdf ครับ
คือผมต้องการอัพโหลดไฟล์ pdf อ่าครับ และอยากให้มันสามารถกดดูได้ในตารางอ่าครับ 
ผมออกแบบ DB ไว้อย่างนี้อ่าครับ 

CREATE TABLE `project_tbl` (
  `p_id` int(5) UNSIGNED NOT NULL,
  `p_name` varchar(100) NOT NULL,
  `p_name_contact` varchar(100) NOT NULL,
  `p_name_relate` varchar(100) NOT NULL,
  `p_date_start` date NOT NULL,
  `p_date_end` date NOT NULL,
  `p_version` double NOT NULL,
  `p_status` enum('start','plan','process','end') NOT NULL COMMENT 'start=เริ่มต้น,plan=วางแผน,process=ดำเนินการ,end=สิ้นสุด',
  `p_detail` varchar(200) DEFAULT NULL,
  `p_file` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
โดย p_file จะเป็นที่เก็บไฟล์อ่าครับ
 
ไฟล์ MamageProject.php
<?php include("Header_PM.php"); ?>
<?php include("Sidebar_PM.php"); ?>
<?php
include"db_class_PM.php";
$db = new Database();

if(isset($_POST['search_project'])){
	//get search Project
	$get_project = $db->search_project_name($_POST['search_project']);

}else{

	//call method getProject
	$get_project = $db->get_all_project();
}
?>

<div class="row">
	<div class="col-lg-12">
		<h3 class="page-header">จัดการข้อมูลโครงการ</h3>
	</div>
	<!-- /.col-lg-12 -->
</div>
<div class="alert alert-warning alert-dismissable">
        <a class="panel-close close" data-dismiss="alert">×</a> 
        <i class="fa fa-hand-o-right"></i>
        <strong>จัดการโครงการ</strong>. ตารางเพิ่ม ค้นหา แก้ไข และลบข้อมูลโครงการ
      </div>
<!-- /.row -->
<div class="row">
	<div class="col-lg-12">
		<div class="panel panel-info">
			<div class="panel-heading"><h4>ตารางโครงการ</h4></div>
			<br>
			<div class="col-lg-12">
				<button class="btn btn-success" data-toggle="modal"
					data-target="#add_project"><i class="glyphicon glyphicon-plus"></i> เพิ่มข้อมูล</button>
						
				<a role="button" class="btn btn-default "  
                   href="ManageProject.php">
                    <i class="glyphicon glyphicon-refresh"></i>
                    โหลดหน้าจอใหม่
                </a>
            </div><br><br>

			<!-- /.panel-heading -->
			<!-- /.panel-heading -->
			<div class="panel-body">
				<div class="dataTable_wrapper">
					<table class="table table-striped table-bordered table-hover"
						id="data-project">
						<thead>
							<tr class="success">
								
								<th width="20%">ชื่อโครงการ</th>
								
								<th width="15%">ชื่อผู้ติดต่อ</th>
								<th width="15%">วันที่เริ่ม</th>
								<th width="10%">เวอร์ชัน</th>
								<th width="20%">สถานะโครงการ</th>
								<th width="10%">ไฟล์</th>
								<th width="10%">คำสั่ง</th>

							</tr>
						</thead>
						<tbody>
						<?php $i = 1;
						if(!empty($get_project)){
							foreach($get_project as $project){
								?>
							<tr>
								
								<td><?php echo $project['p_name']?></td>
								
								<td><?php echo $project['p_name_contact']?></td>
								<td><?php echo $project['p_date_start']?></td>
								<td align="center"><?php echo $project['p_version']?></td>
								
								<td><?php
										if($project['p_status'] == 'start'){
											echo '<span class="progress-bar progress-bar-danger progress-bar-striped" role="progressbar" aria-valuenow="20"
												  aria-valuemin="0" aria-valuemax="100" style="width:25%"> เริ่มต้น 10%</span>';
										}
			                            else if ($project['p_status'] == 'plan' ){
											echo '<span class="progress-bar progress-bar-warning progress-bar-striped" role="progressbar" aria-valuenow="20"
												  aria-valuemin="0" aria-valuemax="100" style="width:50%"> วางแผน 40%</span>';
										}
			                            else if ($project['p_status'] == 'process' ){
											echo '<span class="progress-bar progress-bar-info progress-bar-striped" role="progressbar" aria-valuenow="20"
												  aria-valuemin="0" aria-valuemax="100" style="width:80%"> กำลังพัฒนา 80%</span>';
										}
										else if ($project['p_status'] == 'end' ){
											echo '<span class="progress-bar progress-bar-success progress-bar-striped" role="progressbar" aria-valuenow="20"
												  aria-valuemin="0" aria-valuemax="100" style="width:100%"> สำเร็จ 100%</span>';
										}
										?>
								</td>
								<td><?php echo $project['p_file']?></td>
								<td><button class="btn btn-warning btn-xs" data-toggle="modal"
										data-target="#edit_project"
										onclick="return show_edit_user(<?php echo $user['user_id']?>);">แก้ไข</button>
									<button class="btn btn-danger btn-xs"
										onclick="return delete_project(<?php echo $user['user_id']?>);">ลบ</button>
								</td>
								
							</tr>
		
							<?php
							$i++;
							}
						}else{
							echo "<tr><td colspan='5'>ไม่พบข้อมูล</td></tr>";
						}
						?>
						</tbody>
					</table>
				</div>
			</div>

		</div>
	</div>
</div>


<!-- Modal Add Project -->
	<div class="modal fade" id="add_project" tabindex="-1" role="dialog"
		aria-labelledby="myModalLabel">
		<div class="modal-dialog" role="document">
			<div class="modal-content">
				<div class="modal-header">
					<button type="button" class="close" data-dismiss="modal"
						aria-label="Close">
						<span aria-hidden="true">&times;</span>
					</button>
					<h4 class="modal-title" id="myModalLabel">เพิ่มข้อมูลโครงการ</h4>
				</div>
				<div class="modal-body">
					<form class="form-horizontal modal-body" role="form" id="add_user_form" action="">
							<label for="p_name">ชื่อโครงการ :</label>   
                            <div style="margin-bottom: 25px" class="input-group">
                                  <span class="input-group-addon"><i class="glyphicon glyphicon-book"></i></span>
                                  <input id="p_name" type="text" class="form-control" 
                                  data-validation="required" 
                                  data-validation-error-msg="&nbsp;&nbsp;&nbsp;ห้ามเว้นว่าง! กรุณากรอกขื่อโครงการ"
                                  name="send_p_name" placeholder="Ex. การพัฒนาระบบจัดการผู้ใช้"  value="">                                        
                            </div>	
                            <label for="p_name_contact">ชื่อผู้ติดต่อ :</label>   
                            <div style="margin-bottom: 25px" class="input-group">
                                  <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                                  <input id="p_name_contact" type="text" class="form-control" 
                                  data-validation="required" 
                                  data-validation-error-msg="&nbsp;&nbsp;&nbsp;ห้ามเว้นว่าง! กรุณากรอกขื่อผู้ติดต่อ"
                                  name="send_p_name_contact" placeholder="Ex. ฝ่ายบุคคล"  value="">                                        
                            </div>	
                            <label for="p_name_relate">ชื่อผู้เกี่ยวข้อง :</label> 
                            <div style="margin-bottom: 25px" class="input-group">
                                  <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                                  <input id="p_name_relate" type="text" class="form-control" 
                                  data-validation="required" 
                                  data-validation-error-msg="&nbsp;&nbsp;&nbsp;ห้ามเว้นว่าง! กรุณากรอกชื่อผู้เกี่ยวข้อง"
                                  name="send_p_name_relate" placeholder="Ex. ประวิทย์ ชูเพชร"  value="">                                        
                            </div>	
                            <label for="p_date_start">วันที่เริ่มโครงการ :</label> 
                            <div style="margin-bottom: 25px" class="input-group">
                                  <span class="input-group-addon"><i class="glyphicon glyphicon-time"></i></span>
                                  <input id="p_date_start" type="text" class="input-group date form-control"" 
                                  data-date-format="yyyy-mm-dd" placeholder="0000-00-00" data-validation="required" 
                                  data-validation-error-msg="&nbsp;&nbsp;&nbsp;ห้ามเว้นว่าง! กรุณากรอกวันที่เริ่มโครงการ"
                                  name="send_p_date_start" placeholder=""  value="">                                        
                            </div>
                            <label for="p_date_end">วันที่สิ้นสุดโครงการ :</label> 
                            <div style="margin-bottom: 25px" class="input-group">
                                  <span class="input-group-addon"><i class="glyphicon glyphicon-time"></i></span>
                                  <input id="p_date_end" type="text" class="input-group date form-control"" 
                                  data-date-format="yyyy-mm-dd" placeholder="0000-00-00" data-validation="required" 
                                  data-validation-error-msg="&nbsp;&nbsp;&nbsp;ห้ามเว้นว่าง! กรุณากรอกวันที่สิ้นสุดโครงการ"
                                  name="send_p_date_end" placeholder=""  value="">                                        
                            </div>
                            <label for="p_version">เวอร์ชันโครงการ :</label> 
                            <div style="margin-bottom: 25px" class="input-group">
                                  <span class="input-group-addon"><i class="glyphicon glyphicon-star"></i></span>
                                  <input id="p_version" type="text" class="form-control" data-validation="required" 
                                  data-validation-error-msg="&nbsp;&nbsp;&nbsp;ห้ามเว้นว่าง! กรุณากรอกเวอร์ชันโครงการ"
                                  name="send_p_version" placeholder="1.1"  value="">                                        
                            </div>      	
						      					      						      
							<label for="p_status">สถานะโครงการ :</label> 
							<select class="form-control" name="send_permission">
								<option value="start">เริ่มต้นโครงการ</option>
								<option value="plan">วางแผน</option>
								<option value="process">กำลังพัฒนา</option>
								<option value="end">สิ้นสุดโครงการ</option>
							</select>
							<br>
							<label for="p_detail">รายละเอียดโครงการ :</label> 
                            <div style="margin-bottom: 25px" class="input-group">
                                  <span class="input-group-addon"><i class="glyphicon glyphicon-info-sign"></i></span>
                                  <input id="p_detail" type="text" class="form-control" 
                                  name="send_p_detail" placeholder="รายละเอียดของโครงการ"  value="">                                        
                            </div>
                            <label for="p_detail">ไฟล์โครงการ :</label> 
                            <div style="margin-bottom: 25px" class="input-group">
                                  <span class="input-group-addon"><i class="glyphicon glyphicon-file"></i></span>
                                  <input id="p_file" type="file" class="form-control" 
                                  name="send_p_file" placeholder=""  value="">                                        
                            </div>

							<div class="modal-footer">
								<button type="submit" class="btn btn-info" name="Submit"
										onclick="return add_project_form();">บันทึก</button> 
										<p class="help-block pull-left text-danger hide" 
										id="form-error">&nbsp; ระบุข้อมูลและรูปแบบข้อมูลให้ถูกต้อง </p>
								<button type="submit" class="btn btn-danger" data-dismiss="modal">ยกเลิก</button>
							</div>
					</form>
				</div>
			</div>
		</div>
	</div>


<script type="text/javascript" charset="utf-8" language="javascript" class="init">
            $(document).ready(function() {
                
                $('#data-project').dataTable( {
                    
                	"oLanguage": {   
                		"oPaginate": {       
                            "sFirst": "หน้าแรก",
                            "sLast": "หน้าสุดท้าย",
                            "sNext": "ถัดไป",
                            "sPrevious": "ก่อนหน้า"
                        },
                        "sLengthMenu": "แสดง _MENU_ รายการ ต่อหน้า",  
                        "sZeroRecords": "ไม่พบข้อมูลที่ค้นหา", 
                        "sInfo": "แสดง _START_ ถึง _END_ จากทั้งหมด _TOTAL_ รายการ",
                        "sEmptyTable": "ไม่พบรายการข้อมูล",
                        "sLoadingRecords": "ระบบกำลังประมวลผล กรุณารอซักครู่",
                        "sProcessing": "ประมวลผลข้อมูล",
                        "sInfoEmpty": "ไม่พบรายการข้อมูลที่แสดง",
                        "sInfoFiltered": "(จากทั้งหมด _MAX_ รายการ)",  
                        "sSearch": "ค้นหา :"
                    },
                
                	
                } );
            } );
        </script>
        
<script type="text/javascript">
	        $(document).ready(function () {
	            $('.search-button').click(function () {
	                $('.search-form').toggle();
	                return false;
	            });
	        });
	    </script>
	    
<script src="js/bootstrap-datepicker.js"></script>
	<script>
	$('.date').datepicker({
		format: 'yyyy-mm-dd',
	})
	</script>


<?php include("Footer_PM.php"); ?>
และไฟล์ db_class_project.php
<?php
class Database {

	private $host = 'localhost'; //ชื่อ Host
	private $user = 'root'; //ชื่อผู้ใช้งาน ฐานข้อมูล
	private $password = 'abc456'; // password สำหรับเข้าจัดการฐานข้อมูล
	private $database = 'rtm'; //ชื่อ ฐานข้อมูล

	//function เชื่อมต่อฐานข้อมูล
	protected function connect(){

		$mysqli = new mysqli($this->host,$this->user,$this->password,$this->database);
			
		$mysqli->set_charset("utf8");

		if ($mysqli->connect_error) {

			die('Connect Error: ' . $mysqli->connect_error);
		}

		return $mysqli;
	}

	//function เรื่ยกดูข้อมูล all project
	public function get_all_project(){

		$db = $this->connect();
		$get_project = $db->query("SELECT * FROM project_tbl");

		while($project = $get_project->fetch_assoc()){
			$result[] = $project;
		}

		if(!empty($result)){
				
			return $result;
		}
	}

	public function search_project_name($post = null){

		$db = $this->connect();
		$get_project = $db->query("SELECT * FROM project_tbl WHERE p_name LIKE '%".$post."%' ");

		while($project = $get_project->fetch_assoc()){
			$result[] = $project;
		}

		if(!empty($result)){
				
			return $result;
		}

	}
	

	public function get_project($p_id){

		$db = $this->connect();
		$get_project = $db->prepare("SELECT p_id,p_name,p_name_contact,p_name_relate,p_date_start
		,p_date_end,p_version,p_status,p_detail,p_file FROM project WHERE p_id = ?");
		$get_project->bind_param('i',$p_id);
		$get_project->execute();
		$get_project->bind_result($p_id,$p_name,$p_name_contact,$p_name_relate,$p_date_start
		,$p_date_end,$p_version,$p_status,$p_detail,$p_file);
		$get_project->fetch();

		$result = array(
			'p_id'=>$p_id,
			'p_name'=>$p_name,
			'p_name_contact'=>$p_name_contact,
			'p_name_relate'=>$p_name_relate,
			'p_date_start'=>$p_date_start,
			'p_date_end'=>$p_date_end,
			'p_version'=>$p_version,
			'p_status'=>$p_status,
			'p_detail'=>$p_detail,
			'p_file'=>p_file
		);

		return $result;
	}

	//function เพื่ม project
	public function add_project($data){

		$db = $this->connect();

		$add_project = $db->prepare("INSERT INTO project_tbl (p_id,p_name,p_name_contact,p_name_relate
		,p_date_start,p_date_end,p_version,p_status,p_detail,p_file) VALUES(NULL,?,?,?,?,?,?,?,?,?) ");

		$add_project->bind_param("sssssssss",$data['sent_p_name'],$data['sent_p_name_contact'],$data['sent_p_name_relate']
		,$data['sent_p_date_start'],$data['sent_p_date_end'],$data['sent_p_version'],$data['sent_p_status'],$data['sent_p_detail'],$data['sent_p_file']);

		if(!$add_project->execute()){
				
			echo $db->error;
				
		}else{
				
			echo "บันทึกข้อมูลเรียบร้อย";
		}
	}

	//function edit project
	public function edit_project($data){

		$db = $this->connect();

		$add_project = $db->prepare("UPDATE project_tbl SET p_name = ? , p_name_contact = ?  , p_name_relate = ? 
		, p_date_start  = ? , p_date_end = ? , p_version = ? , p_status = ? , p_detail = ? , p_file = ? WHERE p_id = ?");

		$add_project->bind_param("sssssdsssi",$data['edit_name'],$data['edit_name_contact'],$data['edit_name_relate']
		,$data['edit_date_start'],$data['edit_date_end'],$data['edit_version'],$data['edit_status'],$data['edit_detail']
		,$data['edit_file'],$data['edit_p_id']);
		
		if(!$add_project->execute()){
				
			echo $db->error;
				
		}else{
				
			echo "บันทึกข้อมูลเรียบร้อย";
		}
	}
	
	

	//function delete project
	public function delete_project($id){

		$db = $this->connect();

		$add_project = $db->prepare("DELETE FROM project_tbl WHERE p_id = ?");

		$add_project->bind_param("i",$id);

		if(!$del_project->execute()){
				
			echo $db->error;
				
		}else{
				
			echo "ลบข้อมูลเรียบร้อย";
		}
	}




}
?>
คือผมควรต้องเพิ่มโค้ดตรงไหน อย่างไร รบกวนด้วยนะครับ



Eodza13579 29-08-2016 10:09:54

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1


ninenik 29-08-2016
 ความคิดเห็นที่ 2
คือ ตรง DB p_file ผมจะเอาไว้เก็บไฟล์อ่าครับ เคยเห็นแบบเขาเก็บแค่ชื่อ แบบ xxx.pdf ในฐานข้อมูลอ่าครับ คือผมงงว่าจะใช้คำสั่งอะไรยังไงกับมันดี คือสามารถอัพโหลดได้พร้อมกับอันอื่นอ่าครับ


eodza13579 29-08-2016 10:24
 ความคิดเห็นที่ 3
p_id คือ รหัสโครงการ 
p_name คือ ชื่อโครงการ 
......
p_file คือ ไฟล์ pdf โครงการ 

อยากให้มันเก็บเข้าพร้อมกันเลยอ่าครับ 


eodza13579 29-08-2016 10:26
 ความคิดเห็นที่ 4
 แนะนำไม่ถูก ไม่รู้วา่ใช้ framwork ตัวไหน ลองดูคู่มือของ framework นั้นๆ เป็นแนวทาง
ส่วนการบันทึกข้อมูลไฟล์ ส่วนใหญ่นินยมบันทึกเป็นชื่อไฟล์ในฟิลด์ดาต้าเบส และอัพโหลดไฟล์ไว้ในโฟลเดอร์


ninenik 29-08-2016
 ความคิดเห็นที่ 5
พอมีตัวอย่างไหมครับ แบบไม่ใช้ framework อ่าครับ


eodza13579 29-08-2016 10:52
 ความคิดเห็นที่ 6
ลองแนวทางอยางงายนี้ดู
สร้างโฟลเดอร์ เก็บไฟล์ pdf
สมมติ pdfupload
 
ตรงแท็ก form 
 <form class="form-horizontal modal-body" role="form" id="add_user_form" action="">  
เปลี่ยนเป็น
 <form class="form-horizontal modal-body" role="form" id="add_user_form" action=""  enctype="multipart/form-data">  
 
และตอนเพิ่มข้อมูล ก็แทรกคำสั่ง อัพโหลดไฟล์แล้ว เก็บชื่อในฐานข้อมูล
 
ประมาณนี้ 
 
    //function เพื่ม project  
    public function add_project($data){  
  
        $db = $this->connect();  

		$file_up="";
		if($_FILES['send_p_file']["name"]!=""){  
			$file_upload=$_FILES['send_p_file']["tmp_name"];
			$file_location="pdfupload/";
			$file_name=$_FILES['send_p_file']["name"];   
			if($file_upload!=""){
				@move_uploaded_file($file_upload,$file_location.$file_name);    
				@chmod($file_location.$file_name,0777);         
				$file_up=$file_name;
			}
		}
  
        $add_project = $db->prepare("INSERT INTO project_tbl (p_id,p_name,p_name_contact,p_name_relate  
        ,p_date_start,p_date_end,p_version,p_status,p_detail,p_file) VALUES(NULL,?,?,?,?,?,?,?,?,?) ");  
  
        $add_project->bind_param("sssssssss",$data['sent_p_name'],$data['sent_p_name_contact'],$data['sent_p_name_relate']  
        ,$data['sent_p_date_start'],$data['sent_p_date_end'],$data['sent_p_version'],
		$data['sent_p_status'],$data['sent_p_detail'],$file_up);  
  
        if(!$add_project->execute()){  
                  
            echo $db->error;  
                  
        }else{  
                  
            echo "บันทึกข้อมูลเรียบร้อย";  
        }  
    }  
	
 
 
 
 
 
 
 


ninenik 29-08-2016
 ความคิดเห็นที่ 7
เด่วลองดูครับ ขอคุณมากนะครับ


eodza13579 29-08-2016 11:19
 ความคิดเห็นที่ 8
พี่ครับผมลองเขียนดูแล้วครับ มันอัพโหลดไม่ได้อ่าครับ 


eodza13579 29-08-2016 19:16
 ความคิดเห็นที่ 9
//function เพื่ม project  
  public function add_project($data){  
  
        $db = $this->connect();  

		$file_up="";
		if($_FILES['send_p_file']["name"]!=""){  
			$file_upload=$_FILES['send_p_file']["tmp_name"];
			$file_location="pdfupload/";
			$file_name=$_FILES['send_p_file']["name"];   
			if($file_upload!=""){
				@move_uploaded_file($file_upload,$file_location.$file_name);    
				@chmod($file_location.$file_name,0777);         
				$file_up=$file_name;
			}
		}
  
        $add_project = $db->prepare("INSERT INTO project_tbl (p_id,p_name,p_name_contact,p_name_relate  
        ,p_date_start,p_date_end,p_version,p_status,p_detail,p_file) VALUES(NULL,?,?,?,?,?,?,?,?,?) ");  
  
        $add_project->bind_param("sssssssss",$data['send_p_name'],$data['send_p_name_contact'],$data['send_p_name_relate']  
        ,$data['send_p_date_start'],$data['send_p_date_end'],$data['send_p_version'],
		$data['send_p_status'],$data['send_p_detail'],$file_up);  
  
        if(!$add_project->execute()){  
                  
            echo $db->error;  
                  
        }else{  
                  
            echo "บันทึกข้อมูลเรียบร้อย";  
        }  
    }   


eodza13579 29-08-2016 19:18
 ความคิดเห็นที่ 10
  อันนี้แนะนำไม่ถูกเหมือนกัน


ninenik 29-08-2016
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ