รบกวนช่วยดู โค้ดการ insert หลาย Record อีกครั้งครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา รบกวนช่วยดู โค้ดการ insert หลาย Record อีกครั้งครับ

รบกวนช่วยดู โค้ดการ insert หลาย Record อีกครั้งครับ
ตอนนี้ผมสามารถทำให้มัน insert ข้อมูลเข้ามาได้แล้วครับ แต่มีปัญหาตอนนำข้อมูลเข้าครับ

<?php



include_once("connect.inc.php");    
if (isset($_POST['submit'])) {
    

$i = 0;
foreach ($_POST as $val) {
    $province_id = $_POST['pv'][$i];
    $travel_id = $_POST['ti'][$i];
  

    mysql_query("INSERT INTO travel_list (province_id, travel_id) VALUES ('$province_id', '$travel_id')");
$i++;
} 
}
 ?>

<!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" />
    <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
    <script src="js/bootstrap.min.js"></script>
<title>Untitled Document</title>
</head>

<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script src="respond.js"></script>
<form action="index.php" method="post"> <!--ส่งค่า post ไปหน้าเดิม -->
<table width="896" border="1">
	<thead>
    	<tr>
        	<th width="239">จังหวัด</th>
            <th width="552">สถานที่ท่องเที่ยว</th>
            <th width="83"><input type="hidden" id="txtNum" value="1" size="2" /></th>
        </tr>
        <tr>
        	<th width="239">
            	<select id="selProvince" name="pv[]"> <!--Default จังหวััด-->
            		<option value="">กรุณาเลือกจังหวัด</option>
				<?PHP 
					$SelectPr="SELECT * FROM province";
					$QueryPro=mysql_query($SelectPr);
					while($Pro=mysql_fetch_array($QueryPro)){
				?>
                	<option value="<?=$Pro['province_id']?>"><?=$Pro['province_name']?></option>
                <?PHP } ?>
                </select>
            </th>
            <th width="552"><select name ="ti[]" id="selTravel">
                <option value="">กรุณาเลือกจังหวัด</option></select></th>
            <th width="83"><button type="button" id="btnP">เพิ่มรายการ</button></th>
        </tr>
        <tr><td colspan="3"><center>รายการที่เพิ่ม</center></td></tr>
    </thead>
    
    <tbody>
    
    </tbody>
    
</table>
<input name="submit" type="submit" value="add">

</form>
<br><br><br>
<!--ทอสอบ ค่าแสดงผล Muti Atrray-->



</body>
</html>

หลายจากเหลือข้อมูลแล้ว มันเพิ่มทีละ 5 ข้อมูล  ไม่ว่าผมจะเลือก 10 มันก็เพิ่ม 5 ส่วนข้อมูลที่เป็นจริงที่ถูกนำเข้ามาก็ มีแค่ 1 ข้อมูล ที่เหลือเป็น 0

 



Awordmart2 124.120.226.xxx 25-06-2016 09:08:00

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

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


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


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

 ความคิดเห็นที่ 1
<script src="respond.js"></script>  ลองเช็คนี่ดูยังครับ


Suthee Khongnapha 183.89.132.xxx 25-06-2016 11:01
 ความคิดเห็นที่ 2
อันนี้ครับ <script src="respond.js"></script> 



	$(document).ready(function(e) { //เมื่อเพจพร้อมใช้งาน
		
		$('#selProvince').on('change',function(){ // เมื่อ Change จังหวัด
			var province=$(this).val(); // รับค่าจังหวัด
			var selTravel=$('#selTravel').empty(); // ดึง Select Option มาทำค่างว่า
			$.ajax({url : 'check.php', // url
				type : 'POST', // รูปแบบส่ง
				data : 'province_id='+province, // ข้อมูลที่ส่งไป
				datatype : 'json', // รูปแบบ
				success : function(result){ // เมื่อ Respond ได้แค่า result
					var obj=jQuery.parseJSON(result); 
					var opt="<option value='' selected='selected'>เลือกสถานที่ท่องเที่ยว"; // Create Element 
					$.each(obj,function(key,val){ // วน Loop array json
						opt+="<option value='"+val['travel_id']+"'>"+val['travel_name']+""; // เพิ่ม Option เข้าไปในตัวแปร
					});
					selTravel.html(opt);  // เพิ่มตัวแปร html เข้าไปใน Select Option 
				}
			});
		});
		
		$('#btnP').on('click',function(){ // เมื่อ Click ปุ๋ม เพิ่มรายการ
			var selProvince=$('#selProvince'); // ดึงเฉพาะ Element id จังหวัด
			var selTravel=$('#selTravel'); // ดึงเฉพาะ Element id สถานที่ที่องเที่ยว
			var Num=$('#txtNum').val(); // ค่าจำนวนนับ
			if(selProvince.val() != "" && selTravel.val() != ""){ // เมื่อค่าจังหวัด และ ค่าท่องเที่ยว ไม่เท่ากับ ค่าว่าง
				$('tbody').append("<tr id='tr"+Num+"'><td>"+selProvince.find(':selected').text() "<td>" selTravel.find(':selected').text() "<input type='hidden' name='hdProvince_id[]' value='"+selProvince.val() "'><input type='hidden' name='hdTravel_id[]' value='"+selTravel.val() "'><td><button onclick='Del("+Num+")'>-</button>"); 
				// เพิ่มรายละเอียดเข้าไปที่ tbody
				// ??.find(':selected').text() แสดงค่า Select Option ในช่อง Text
				// <input type='hidden' name='hd????[]' value=''> สร้าง Element แบบซ่อน โดยเก็บค่า id ที่เพิ่ม
				// <button onclick='Del("+Num+")'> สร้าง Element ปุ่ม เมื่อคลิก จะเข้าไปใน Function อ้างอิงจำนวนนับ 
				 
				$('#txtNum').val(parseInt(Num)+1); // ค่าจำนวนนับเดิม + 1
			}else{ 
				alert("กรุณาเลือกข้อมูลให้ครบถ้วน");	 // false
			}
		});
		
		$('#btnSubmit').click(function(){ // กด Click ปุ่ม Submit
			$('form').submit();	 // Form ทำการส่งค่า
		});
		
    });
	
	function Del(Num){ // Function ลบตาราง อ้างอิงจาก id=BtnDel
		$('#tr'+Num).remove(); // ลบ tr ที่กำหนด
	}
// JavaScript Document


awordmart2 124.120.60.xxx 25-06-2016 11:58
 ความคิดเห็นที่ 3
<?php  
  
include_once("connect.inc.php");      
if (isset($_POST['submit'])) {  
      
    $i = 0;
    foreach ($_POST['hdProvince_id'] as $val) {  
        $province_id = $val;
        $travel_id = $_POST['hdTravel_id'][$i];
        mysql_query("INSERT INTO travel_list (province_id, travel_id) VALUES ('$province_id', '$travel_id')");
    $i++;
    } 
 }  
 ?> 
ลองแบบนี้ดูครับ


Suthee Khongnapha 183.89.132.xxx 25-06-2016 12:44
 ความคิดเห็นที่ 4
โอ้ย ผมขอขอบพระคุณมากครับ 3 วันกับตัวนี้ ของคุณมากครับ


awordmart2 124.120.60.xxx 25-06-2016 12:49
 ความคิดเห็นที่ 5


Suthee Khongnapha 183.89.132.xxx 25-06-2016 13:51
 ความคิดเห็นที่ 6
จากโค้ดตรงนี้ที่ผมเอาไปแยก insert

<?php
session_start();
//PUT THIS HEADER ON TOP OF EACH UNIQUE PAGE
if(!isset($_SESSION['id_user'])){
  header("location:index.php");
}
?>



<?php

include_once('config.php');

$id_user = $_SESSION['id_user'];
$rn_first_name = $_POST['rn_first_name'];
$rn_last_name = $_POST['rn_last_name'];
$rn_gostart = $_POST['rn_gostart'];
$rn_endstart = $_POST['rn_endstart'];
$time_gostart = $_POST['time_gostart'];
$time_endstart = $_POST['time_endstart'];
$rn_tel = $_POST['rn_tel'];
$rn_amount = $_POST['rn_amount'];
$rn_svan = $_POST['rn_svan'];
$rn_destination = $_POST['rn_destination'];
$id_invoice = $_POST['id_invoice'];
$Status = $_POST['Status'];
$vn_dtial = $_POST['vn_dtial'];
$rn_place = $_POST['rn_place'];



$total = $_POST['total'];


// function date
$date_go = "$rn_gostart"; //กำหนดค้นวันที่เริ่ม
$date_end = "$rn_endstart"; //กำหนดค้นวันที่กลับ
$datetime1 = new DateTime($date_go);  
$datetime2 = new DateTime($date_end);  
$datetotal = $datetime1->diff($datetime2);  
$total= $datetotal->format('%a') * 1800;  //ผลการคำนวณ



$date = "$rn_gostart"; //กำหนดค้นวันที่

$result = mysqli_query($mysqli,"select * from vn_rent where rn_gostart = '$date'");
$ckd = mysqli_num_rows($result);





if($ckd >= 3){

$msg = "<div class='alert alert-danger'>
<span class='glyphicon glyphicon-info-sign'></span> &nbsp; วันที่จองเต็มแล้ว
</div>";
}else{


$sql = "INSERT INTO vn_rent (id_user,rn_first_name,rn_last_name,rn_gostart,rn_endstart,time_gostart,time_endstart,rn_tel,rn_amount,rn_svan,Status,vn_dtial,rn_place,rn_destination,total)
VALUES ('$id_user', '$rn_first_name',' $rn_last_name ','$rn_gostart','$rn_endstart','$time_gostart','$time_endstart','$rn_tel','$rn_amount','$rn_svan','$Status','$vn_dtial','$rn_place','$rn_destination','$total')";


//คำสั่ง insert  2 ตาราง
if ($mysqli->query($sql) === TRUE) {


     $id_van = $mysqli->insert_id;
   $mysqli->query("INSERT INTO invoice 
                   (id_user,id_van) 
              VALUE($id_user,  $id_van)");


    $id_invoice = $mysqli->insert_id;
    $mysqli->query("UPDATE vn_rent  
                    SET id_invoice = '$id_invoice' 
                 WHERE id_van = $id_van");


     $i = 0;
    foreach ($_POST['hdProvince_id'] as $val) {  
        $province_id = $val;
        $travel_id = $_POST['hdTravel_id'][$i];
        $id_van = $_POST['id_van'][$i];
        mysqli_query($mysqli,"INSERT INTO travel_list (province_id, travel_id,id_van) VALUES ('$province_id', '$travel_id','$id_van')");
    $i++;
    } 
  
   





    $msg = "<div class ='alert alert-success alert-styled-left alert-arrow-left alert-bordered'>
      จองรถตู้สำเร็จ โปรดรอการตอบรับจากทางเจ้าหน้าที่</p> เลขที่รายการจอง <span class='text-warning'>".$id_van."</span> เลขที่ใบเสร็จ <span class='text-warning'>".$id_invoice."</span>
    
     </div>";

     header("refresh:5; url=history_booking.php");
} 



else {
    echo "Error: " . $sql . "<br>" . $mysqli->error;
}
}


$mysqli->close();




?>

ผมก็นำมาใส่ในชุดคำสั่งจริงที่จะทำการ insert ข้อมูลในฟรอมทั้งหมดแต่คือติด error ครับ

<?php
session_start();
//PUT THIS HEADER ON TOP OF EACH UNIQUE PAGE
if(!isset($_SESSION['id_user'])){
  header("location:index.php");
}
?>



<?php

include_once('config.php');

$id_user = $_SESSION['id_user'];
$rn_first_name = $_POST['rn_first_name'];
$rn_last_name = $_POST['rn_last_name'];
$rn_gostart = $_POST['rn_gostart'];
$rn_endstart = $_POST['rn_endstart'];
$time_gostart = $_POST['time_gostart'];
$time_endstart = $_POST['time_endstart'];
$rn_tel = $_POST['rn_tel'];
$rn_amount = $_POST['rn_amount'];
$rn_svan = $_POST['rn_svan'];
$rn_destination = $_POST['rn_destination'];
$id_invoice = $_POST['id_invoice'];
$Status = $_POST['Status'];
$vn_dtial = $_POST['vn_dtial'];
$rn_place = $_POST['rn_place'];



$total = $_POST['total'];


// function date
$date_go = "$rn_gostart"; //กำหนดค้นวันที่เริ่ม
$date_end = "$rn_endstart"; //กำหนดค้นวันที่กลับ
$datetime1 = new DateTime($date_go);  
$datetime2 = new DateTime($date_end);  
$datetotal = $datetime1->diff($datetime2);  
$total= $datetotal->format('%a') * 1800;  //ผลการคำนวณ



$date = "$rn_gostart"; //กำหนดค้นวันที่

$result = mysqli_query($mysqli,"select * from vn_rent where rn_gostart = '$date'");
$ckd = mysqli_num_rows($result);





if($ckd >= 3){

$msg = "<div class='alert alert-danger'>
<span class='glyphicon glyphicon-info-sign'></span> &nbsp; วันที่จองเต็มแล้ว
</div>";
}else{


$sql = "INSERT INTO vn_rent (id_user,rn_first_name,rn_last_name,rn_gostart,rn_endstart,time_gostart,time_endstart,rn_tel,rn_amount,rn_svan,Status,vn_dtial,rn_place,rn_destination,total)
VALUES ('$id_user', '$rn_first_name',' $rn_last_name ','$rn_gostart','$rn_endstart','$time_gostart','$time_endstart','$rn_tel','$rn_amount','$rn_svan','$Status','$vn_dtial','$rn_place','$rn_destination','$total')";


//คำสั่ง insert  2 ตาราง
if ($mysqli->query($sql) === TRUE) {


     $id_van = $mysqli->insert_id;
   $mysqli->query("INSERT INTO invoice 
                   (id_user,id_van) 
              VALUE($id_user,  $id_van)");


    $id_invoice = $mysqli->insert_id;
    $mysqli->query("UPDATE vn_rent  
                    SET id_invoice = '$id_invoice' 
                 WHERE id_van = $id_van");
/** ส่วนที่เพิ่มมาใหม่ **/
    $i = 0;
    foreach ($_POST['hdProvince_id'] as $val) {  
        $province_id = $val;
        $travel_id = $_POST['hdTravel_id'][$i];
        $id_van = $_POST['id_van'];
        mysqli_query($mysqli,"INSERT INTO travel_list (province_id, travel_id,id_van) VALUES ('$province_id', '$travel_id','$id_van')");
    $i++;
    } 
 } 





    $msg = "<div class ='alert alert-success alert-styled-left alert-arrow-left alert-bordered'>
      จองรถตู้สำเร็จ โปรดรอการตอบรับจากทางเจ้าหน้าที่</p> เลขที่รายการจอง <span class='text-warning'>".$id_van."</span> เลขที่ใบเสร็จ <span class='text-warning'>".$id_invoice."</span>
    
     </div>";

     header("refresh:5; url=history_booking.php");
} 



else {
    echo "Error: " . $sql . "<br>" . $mysqli->error;
}
}


$mysqli->close();




?>

หลังจากผมทำการ insert เข้าไปแล้วแต่ผมยังไม่สามารถทำให้ ตัวแปล id_van insert เข้าไปพร้อมด้วยได้ครับ

 

ผมจะอธิบายการทำงานเผื่อท่านจะสับสนของผม

 

หลังจากที่ลูกค้ากรอกข้อมูลมา ขอมูลก็จะถูกนำไป insert ในส่วนนี้ 

$sql = "INSERT INTO vn_rent (id_user,rn_first_name,rn_last_name,rn_gostart,rn_endstart,time_gostart,time_endstart,rn_tel,rn_amount,rn_svan,Status,vn_dtial,rn_place,rn_destination,total)
VALUES ('$id_user', '$rn_first_name',' $rn_last_name ','$rn_gostart','$rn_endstart','$time_gostart','$time_endstart','$rn_tel','$rn_amount','$rn_svan','$Status','$vn_dtial','$rn_place','$rn_destination','$total')";
พอทำการ insert เสร็จ ข้อมูลก็จะเก็บค่า id_van ไว้ แล้วนำไป insert ที่ตาราง invoice เมื่อ insert เสร็จก็จะส่งค่า id_invoice กลับมาอัปเดทที่ตาราง  vn_rent ที่ id_van เดิม


//คำสั่ง insert  2 ตาราง
if ($mysqli->query($sql) === TRUE) {


     $id_van = $mysqli->insert_id;
   $mysqli->query("INSERT INTO invoice 
                   (id_user,id_van) 
              VALUE($id_user,  $id_van)");


    $id_invoice = $mysqli->insert_id;
    $mysqli->query("UPDATE vn_rent  
                    SET id_invoice = '$id_invoice' 
                 WHERE id_van = $id_van");


แล้วทีนี้ผมก็เพิ่ม code ที่สำหรับ เพิ่ม หลาย Record 

  $i = 0;
    foreach ($_POST['hdProvince_id'] as $val) {  
        $province_id = $val;
        $travel_id = $_POST['hdTravel_id'][$i];
        $id_van = $_POST['id_van'][$i];
        mysqli_query($mysqli,"INSERT INTO travel_list (province_id, travel_id,id_van) VALUES ('$province_id', '$travel_id','$id_van')");
    $i++;
    } 
  
ซึ่งข้อมูลเข้าปกติครับ แต่ที่ไม่เข้าคือ $id_van มันไม่ได้นำค่า กลับไป insert เลยครับ มัน เป็น 0





แก้ตรงจุดไหนครับถึงจะส่งค่า id_van มาได้


awordmart2 124.120.60.xxx 25-06-2016 14:18
 ความคิดเห็นที่ 7
//คำสั่ง insert  2 ตาราง
if ($mysqli->query($sql) === TRUE) {


  $id_van = $mysqli->insert_id;
  $mysqli->query("INSERT INTO invoice 
                   (id_user,id_van) 
              VALUE($id_user,  $id_van)");


table ด้านบนอัพเดตผ่านไหมครับ
ลอง print_r($id_van); มาดูว่าได้ค่าอะไรมาครับ
$id_invoice = $mysqli->insert_id;
$mysqli->query("UPDATE vn_rent
SET id_invoice = '$id_invoice'
WHERE id_van = $id_van");
มาจากไหนครับ -->$_POST['id_van'];




Suthee Khongnapha 183.89.132.xxx 25-06-2016 14:37
 ความคิดเห็นที่ 8

ผ่านครับ 

 

//คำสั่ง insert  2 ตาราง
if($mysqli->query($sql) === TRUE) {



     $id_van = $mysqli->insert_id;
   $mysqli->query("INSERT INTO invoice 
                   (id_user,id_van) 
              VALUE($id_user,  $id_van)");


    $id_invoice = $mysqli->insert_id;
    $mysqli->query("UPDATE vn_rent  
                    SET id_invoice = '$id_invoice' 
                 WHERE id_van = $id_van");




awordmart2 124.120.60.xxx 25-06-2016 14:57
 ความคิดเห็นที่ 9
อันนี้ภาพของการ insert ระหว่างตาราง vn_rent กับ invoice ครับ 



2.




3.  



awordmart2 124.120.60.xxx 25-06-2016 15:04
 ความคิดเห็นที่ 10
$_POST['id_van'];   

ผมก็จะเอาค่าที่ได้จากการเลข ID การจอง เข้าไป insert ใน table travel_list ครับ


awordmart2 124.120.60.xxx 25-06-2016 15:14
1 2 Next






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