PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

ช่วยแก้ error หน่อยครับ เกี่ยวกับ modal form

ช่วยแก้ error หน่อยครับ เกี่ยวกับ modal form
พอกดเพิ่มมันขึ้นแบบนี้ <br />
<b>Warning</b>:  mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables in <b>/Applications/XAMPP/xamppfiles/htdocs/RTM/pages/db_class_admin.php</b> on line <b>85</b><br />
และพอกดแก้ไขมันขึ้นแบบนี้ <br />
<b>Warning</b>:  mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables in <b>/Applications/XAMPP/xamppfiles/htdocs/RTM/pages/db_class_admin.php</b> on line <b>104</b><br />
แต่กดปุ่มลบ ลบได้ปกติครับ 

ไฟล์ db_classs_admin.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 user
	public function get_all_user(){
		
		$db = $this->connect();
		$get_user = $db->query("SELECT * FROM user");
		
		while($user = $get_user->fetch_assoc()){
			$result[] = $user;
		}
		
		if(!empty($result)){
			
			return $result;
		}
	}
	
	public function search_user($post = null){
		
		$db = $this->connect();
		$get_user = $db->query("SELECT * FROM user WHERE user_name LIKE '%".$post."%' ");
		
		while($user = $get_user->fetch_assoc()){
			$result[] = $user;
		}
		
		if(!empty($result)){
			
			return $result;
		}
		
	}
	
	public function get_user($user_id){
		
		$db = $this->connect();
		$get_user = $db->prepare("SELECT user_id,user_name,user_tel,user_email,user_username,user_password,user_permission FROM user WHERE user_id = ?");
		$get_user->bind_param('i',$user_id);
		$get_user->execute();
		$get_user->bind_result($user_id,$user_name,$user_tel,$user_email,$user_username,$user_password,$user_permission);
		$get_user->fetch();
		
		$result = array(
			'user_id'=>$user_id,
			'user_name'=>$user_name,
			'user_tel'=>$user_tel,
			'user_email'=>$user_email,
			'user_username'=>$user_username,
			'user_password'=>$user_password,
			'user_permission'=>$user_permission
		);
		
		return $result;
	}
	
	//function เพื่ม user
	public function add_user($data){
		
		$db = $this->connect();
		
		$add_user = $db->prepare("INSERT INTO user (user_id,user_name,user_tel,user_email,user_username,user_password,user_permission) VALUES(?,?,?,?,?,?,?) ");
		
		$add_user->bind_param("ss",$data['send_name'],$data['send_tel'],$data['send_email'],$data['send_username'],$data['send_password'],$data['send_permission']);
		
		if(!$add_user->execute()){
			
			echo $db->error;
			
		}else{
			
			echo "บันทึกข้อมูลเรียบร้อย";
		}
	}
	
	//function edit user
	public function edit_user($data){
		
		$db = $this->connect();
		
		$add_user = $db->prepare("UPDATE user SET user_name = ? , user_tel = ?  , user_email = ? , user_username  = ? , user_password = ? , user_permission = ? WHERE user_id = ?");
		
		$add_user->bind_param("ssi",$data['edit_name'],$data['edit_tel'],$data['edit_email'],$data['edit_username'],$data['edit_password'],$data['edit_permission']);
		
		if(!$add_user->execute()){
			
			echo $db->error;
			
		}else{
			
			echo "บันทึกข้อมูลเรียบร้อย";
		}
	}
	
	//function delete user
	public function delete_user($id){
		
		$db = $this->connect();
		
		$del_user = $db->prepare("DELETE FROM user WHERE user_id = ?");
		
		$del_user->bind_param("i",$id);
		
		if(!$del_user->execute()){
			
			echo $db->error;
			
		}else{
			
			echo "ลบข้อมูลเรียบร้อย";
		}
	}
	
	
	
	
}
?>
ไฟล์ proocess_admin.php 
<?php
include"db_class_admin.php";

$process = new Database();

	//Add_user
	if(isset($_POST['send_name'])){
		//รับข้อมูลจาก FORM ส่งไปที่ Method add_user
		$process->add_user($_POST);
	}
	
	//show edit data form
	if(isset($_POST['show_user_id'])){
		
		$edit_user = $process->get_user($_POST['show_user_id']);

		echo'<form id="edit_user_form">
			  <div class="form-group">
				<label >ชื่อ - สกุล</label>
				<input type="text" class="form-control" name="edit_name" value="'.$edit_user['user_name'].'">
			  </div>
			  <div class="form-group">
				<label >เบอร์โทรศัพท์</label>
				<input type="text" class="form-control" name="edit_tel" value="'.$edit_user['user_tel'].'">
			  </div>
			  <div class="form-group">
				<label >e_mail</label>
				<input type="text" class="form-control" name="edit_email" value="'.$edit_user['user_email'].'">
			  </div>
			  <div class="form-group">
				<label >Username</label>
				<input type="text" class="form-control" name="edit_username" value="'.$edit_user['user_username'].'">
			  </div>
			  <div class="form-group">
				<label >Password</label>
				<input type="text" class="form-control" name="edit_password" value="'.$edit_user['user_password'].'">
			  </div>
			  <div class="form-group">
				<label >สถานะผู้ใช้</label>
					<select class="form-control" name="edit_permission" value="'.$edit_user['user_permission'].'">
						<option value="PM">Project Manager</option>
						<option value="Admin">Administrator</option>
						<option value="CCB">Change Control Board</option>
						<option value="Customer">Customer User</option>
					</select>
				</div>			  
			  <input type="hidden" name="edit_user_id" value="'.$edit_user['user_id'].'" >
			</form>';
	}
	
	//edit user 
	if(isset($_POST['edit_user_id'])){
		
		$process->edit_user($_POST);
		
	}
	
	//delete user
	if(isset($_POST['delete_user_id'])){
		
		$process->delete_user($_POST['delete_user_id']);
	}
	

?>
ไฟล์ script_admin.js

//add new data
function add_user_form(){
	$.ajax({
		type:"POST",
		url:"process_admin.php",
		data:$("#add_user_form").serialize(),
		success:function(data){
			
			//close modal
			$(".close").trigger("click");
			
			//show result
			alert(data);
			
			//reload page
			location.reload();
		}
	});
	return false;
}

//show data for edit
function show_edit_user(id){
	$.ajax({
		type:"POST",
		url:"process_admin.php",
		data:{show_user_id:id},
		success:function(data){
			$("#edit_form").html(data);
		}
	});
	return false;
}

//edit data
function edit_user_form(){
	$.ajax({
		type:"POST",
		url:"process_admin.php",
		data:$("#edit_user_form").serialize(),
		success:function(data){
			
			//close modal
			$(".close").trigger("click");
			
			//show result
			alert(data);
			
			//reload page
			location.reload();
		}
	});
	return false;
}

//delete user
function delete_user(id){
	if(confirm("ยืนยันการลบข้อมูล")){
		$.ajax({
			type:"POST",
			url:"process_admin.php",
			data:{delete_user_id:id},
			success:function(data){
				alert(data);
				location.reload();
			}
		});
	}
	return false;
}
และก็ไฟล์ index.php
<!DOCTYPE html>
<html lang="en">
<?php include("Header_Admin.php"); ?>
<?php include("Sidebar_Admin.php"); ?>

<?php
	include"db_class_admin.php";
	
	//new database
	$db = new Database();
	
	if(isset($_POST['search_user'])){
		//get search user
		$get_user = $db->search_user($_POST['search_user']);
		
	}else{
		
		//call method getUser
		$get_user = $db->get_all_user();
	}

?>

  <head>
    
    

    <!-- Latest compiled and minified CSS -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">

	<!-- Optional theme -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
	
	<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
	
	<!-- Latest compiled and minified JavaScript -->
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
	
	<script src="script_admin.js"></script>

  </head>
  <body>
		
			<div class="row">
				<div class="col-md-12">
				
					<h4>ตัวอย่างการเขียนโปรแกรม เพิ่ม ลบ แก้ไข ข้อมูล ด้วย PHP JQUERY และ  Bootstrap</h4> 
					<div class="col-md-6">
						<button class="btn btn-info" data-toggle="modal" data-target="#add_user">เพิ่มข้อมูล</button>
					</div>	
					
					<div class="col-md-6">
						<div class="pull-right">
						<!-- form สำหรับค้นหาข้อมูล -->
							<form class="form-inline" method="POST" action="testManage.php">
							  <div class="form-group">
								<input type="text" class="form-control" name="search_user" placeholder="พิมพ์ชื่อที่ต้องการค้นหา">
							  </div>
							  <input type="submit" value="ค้นหา">
							</form>
						</div>
					</div>

						<table class="table table-hover">
							<thead>
								<tr>
										<th>ลำดับ</th>
										<th>ชื่อผู้ใช้งาน</th>
						                <th>เบอร์โทรศัพท์</th>
						                <th>e_Mail</th>
						                <th>Username</th>
						                <th>Password</th>
						                <th>สถานะ</th>
						                <th>คำสั่ง</th>
						           		
								</tr>
							</thead>
							<tbody>
								<?php $i = 1;
									if(!empty($get_user)){
										foreach($get_user as $user){
								?>
										<tr>
											<td><?php echo $i?></td>
											<td><?php echo $user['user_name']?></td>
											<td><?php echo $user['user_tel']?></td>
											<td><?php echo $user['user_email']?></td>  
								            <td><?php echo $user['user_username']?></td> 
								            <td><?php echo $user['user_password']?></td> 
								            <td><?php echo $user['user_permission']?></td>
											<td><button class="btn btn-warning btn-xs" data-toggle="modal" data-target="#edit_user" onclick="return show_edit_user(<?php echo $user['user_id']?>);">แก้ไข</button>
											<button class="btn btn-danger btn-xs" onclick="return delete_user(<?php echo $user['user_id']?>);">ลบ</button></td>
										</tr>
									
								<?php
										$i++;
										}
									}else{
										echo "<tr><td colspan='5'>ไม่พบข้อมูล</td></tr>";
									}
								?>
							</tbody>
							
						</table>
				</div>
			</div>
		


		<!-- Modal Add User -->
		<div class="modal fade" id="add_user" 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">ตัวอย่าง Form เพิ่มข้อมูล</h4>
			  </div>
			  <div class="modal-body">
					<form id="add_user_form">
					  <div class="form-group">
						<label >ชื่อ - สกุล</label>
						<input type="text" class="form-control" name="send_name"  placeholder="ระบุ ชื่อ - สกุล">
					  </div>
					  <div class="form-group">
						<label >เบอร์โทรศัพท์</label>
						<input type="text" class="form-control" name="send_tel"  placeholder="ระบุ เบอร์โทรศัพท์">
					  </div>
					  <div class="form-group">
						<label >e_mail</label>
						<input type="text" class="form-control" name="send_email"  placeholder="ระบุ email">
					  </div>
					  <div class="form-group">
						<label >Username</label>
						<input type="text" class="form-control" name="send_username"  placeholder="ระบุ Username">
					  </div>
					  <div class="form-group">
						<label >Password</label>
						<input type="text" class="form-control" name="send_password"  placeholder="ระบุ Password">
					  </div>
					  <div class="form-group">
						<label >สถานะผู้ใช้</label>
					  		<select class="form-control" name="send_permission" ">
								<option value="PM">Project Manager</option>
								<option value="Admin">Administrator</option>
								<option value="CCB">Change Control Board</option>
								<option value="Customer">Customer User</option>
							</select>
					  </div>
					</form>
			  </div>
			  <div class="modal-footer">
				<button type="button" class="btn btn-primary" onclick="return add_user_form();">Save changes</button>
				<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
			  </div>
			</div>
		  </div>
		</div>
		
		<!-- Modal Edit User -->
		<div class="modal fade" id="edit_user" 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">ตัวอย่าง Form แก้ไขข้อมูล</h4>
			  </div>
			  <div class="modal-body">
					<div id="edit_form"></div>
			  </div>
			  <div class="modal-footer">
				<button type="button" class="btn btn-primary" onclick="return edit_user_form();">Save changes</button>
				<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
			  </div>
			</div>
		  </div>
		</div>

<?php include("Footer_Admin.php"); ?>

ช่วยดูให้หน่อยนะครับว่าผมพลาดตรงไหน แต่จาก error บอกเป็นไฟล์  db_class_admin.php บรรทัดที่ 85 และ 104 แต่ผมก็งงว่าใช้อะไรผิดหรือ รบกวนท่านผู้ชำนาญการรบกวนด้วยนะครับ ขอบคุณครับ ผมไปไม่ถูกจริงๆๆ
 


โดย:  Eodza13579 IP: 14.207.223.xxx วันที่: 16-06-2016 เวลา: 16:01:03

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

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


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


  • ( หรือ สามารถทำการ สมัครสมาชิก และล็อกอิน ด้วย ปุ่ม Log in with Facebook ด้านล่าง )
 ความคิดเห็นที่ 4
ฟังก์ชันเพิ่มได้แล้วครับ เหลือฟังก์ชันแก้ไข เป็นเหมือนเดิมครับ แจ้งเหมือนเดิมครับ ผมเปลี่ยนจาก ssi --> ssssssi

โดย:  Eodza13579 IP: 14.207.223.xxx วันที่: 16-06-2016 เวลา: 18:05:51
 ความคิดเห็นที่ 3
ลองดูแล้วก็ยังขึ้นเหมือนเดิมครับ ปวดหัวตึบๆๆ

โดย:  Eodza13579 IP: 14.207.223.xxx วันที่: 16-06-2016 เวลา: 17:45:29
 ความคิดเห็นที่ 2
ผมต้องแก้เป็นแบบนี้ใช่ไหมครับ

$add_user->bind_param("ssssss",$data['send_name'],$data['send_tel'],$data['send_email'],$data['send_username'],$data['send_password'],$data['send_permission']);  


โดย:  Eodza13579 IP: 14.207.223.xxx วันที่: 16-06-2016 เวลา: 17:39:11
 ความคิดเห็นที่ 1
ไม่เคยใช้  mysqli_stmt::bind_param มาก่อนเหมือนกัน
แต่ถ้าตามแจ้ง เหมือนกับว่าเรากำหนด จำนวน type ไม่ตรงตามจำนวนตัวแปร
 
อย่างแบบนี้ type 'i' 1 รายการ ตัวแปร $user_id 1 รายการ
bind_param('i',$user_id); 
 
แต่ส่วนนี้
bind_param("ss",$data['send_name'],$data['send_tel'],$data['send_email'],$data['send_username'],$data['send_password'],$data['send_permission']); 
 
มี 'ss' แค่ 2 ตัว แต่ จำนวนตัวแปร มีมากกกว่า 2 ซึ่งไม่ตรงตามจำนวน type
 
ลองดูรายละเอียดเพิ่มเติมที่คู่มือการใช้งานที่
http://php.net/manual/en/mysqli-stmt.bind-param.php


โดย:  Ninenik IP: 180.183.51.xxx วันที่: 16-06-2016