Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > ติดปัญหาการเพิ่มข้อมูลหลายๆแถวมันบันทึกข้อมูลซ้ำค่ะ



 

ติดปัญหาการเพิ่มข้อมูลหลายๆแถวมันบันทึกข้อมูลซ้ำค่ะ

 



Topic : 126730



โพสกระทู้ ( 52 )
บทความ ( 0 )



สถานะออฟไลน์




ติดปัญหาในการเพิ่มข้อมูลหลายๆแถวพร้อมกันค่ะ ต้องการให้เพิ่มข้อมูลได้ทุกแถวพร้อมกันค่ะ โดย ข้อมูล univer_ID ไม่ซ้ำกันค่ะ แต่ที่ทำได้ตอนนี้คือ


รูป ฟอร์มแถวสำหรับเพิ่มข้อมูลโดยดึงข้อมูลมาจากตาราง university โดยให้แสดงจำนวนแถวที่มีทั้งหมดในตาราง university ค่ะ
ฟ

รูป ฐานข้อมูลค่ะ จะสังเกตเห็นว่า ค่าข้อมูลเข้าตามจำนวนฟิลด์ที่กรอกเข้าไปค่ะ แต่ ตรง Univer_ID นั้น ID จะซ้ำเป็นของตัวที่ 10 ค่ะ

a

รูป echo ค่าออกมา ดูค่ะ
ำำ

โค้ดที่เขียนไปประมาณนี้ค่ะ

ไฟล์ฟอร์มเพิ่มข้อมูล

Code (PHP)
<form action="2.php" method="post" name="form1" target="_blank" id="form1">
<?
$link = mysql_connect("localhost", "root", "password");
mysql_select_db("reference_database", $link);

$result = mysql_query("SELECT * FROM university", $link);
$num_rows = mysql_num_rows($result);
//echo "$num_rows Rows\n";
$Line=$num_rows;
?> 
<form id="formRegister" name="formRegister" method="post" action="Company_add_save.php" enctype="multipart/form-data">
<p>บริษัท ||
  <select name="Com_ID" id="Com_ID">
    <option value="">เลือกบริษัท</option>
    <?php
    $sql="select * from company ";
    $a=mysql_query($sql);
    while($objResult=mysql_fetch_array($a)){
?>
  <option value="<?=$objResult['Com_ID']?>"><?= $objResult['Com_name']?></option>
<?php } ?>    
  </select></p>
<br/> 
<p>ฐานข้อมูล Reference Database ||
  <select name="Rf_ID" id="Rf_ID">
    <option value="">เลือกฐานข้อมูล Reference Database ที่ต้องการ</option>
    <?php
    $sql="select * from reference_data ";
    $a=mysql_query($sql);
    while($objResult=mysql_fetch_array($a)){
?>
  <option value="<?=$objResult['Rf_ID']?>"><?=$objResult['Rf_name']?></option>
<?php } ?>    
  </select></p>
<br/>   
แนบไฟล์เอกสาร || 
  <input name="file_name" type="file" id="file_name" />
<br/><br/><br/>

<?
$strSQL = "SELECT * FROM university";
		  
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<table bgcolor="#EDEDED" border="1" cellspacing="0" cellpadding="2" style="border-collapse:collapse; font-weight: bold;">
  
    <tr>
      <td  rowspan="3" bgcolor="#f79e45" style="text-align: center">ชื่อมหาวิทยาลัย</td>
      <tr>
      <td colspan="5" bgcolor="#f79e45" style="text-align: center">เดือน :
      <label for="Month"></label>
      <select name="Month" id="Month">
    <option value="">เลือกเดือนที่ต้องการ</option>
    <option value="January">January</option>
    <option value="February">February</option>
    <option value="March">March</option>
    <option value="April">April</option>
    <option value="May">May</option>    
    <option value="June">June</option>
    <option value="July">July</option>
    <option value="August">August</option>
    <option value="September">September</option>
    <option value="October">October</option>
    <option value="November">November</option>
    <option value="December">December</option>
  </select>&nbsp;
  ปี :
  <label for="Years"></label>
      <select name="Years" id="Years">
    <option value="">เลือกเดือนที่ต้องการ</option>
    <option value="2015">2015</option>
    <option value="2016">2016</option>
    <option value="2017">2017</option>
    <option value="2018">2018</option>
    <option value="2019">2019</option>
    <option value="2020">2020</option>
   </select>
    </tr>
    <tr>
      <td  bgcolor="#f79e45" style="text-align: center">Searches</td>
      <td  bgcolor="#f79e45" style="text-align: center"><p>Full_Text</p>
        <p>Requests</p></td>
      <td  bgcolor="#f79e45" style="text-align: center"><p>Sub</p>
        <p>sessions</p></td>
      <td  bgcolor="#f79e45" style="text-align: center">Queries</td>
      <td  bgcolor="#f79e45" style="text-align: center"><p>Citation</p>
        <p>Events</p></td>
    </tr>
<?php
while($objResult = mysql_fetch_array($objQuery))
{
?>
  <tr>
 	<td><input type="text" name="Univer_name" readonly="1"  value="<?=$objResult['Univer_name']?>" size="60"><input name="Univer_ID" type="hidden" value="<?=$objResult['Univer_ID']?>" /></td>
   
    <td><input type="text" name="Searches[]" id="Searches"  size="10"></td>
    <td><input type="text" name="Full_Text_Requests[]" id="Full_Text_Requests" size="10"></td>
    <td><input type="text" name="Sub_sessions[]" id="Sub_sessions" size="10"></div></td>
    <td><input type="text" name="Queries[]" id="Queries" size="10"></td>
    <td><input type="text" name="Citation_Events[]" id="Citation_Events" size="10"></td>
  </tr>
  <?php
  }
  ?>
</table>
<? echo $msg ;?>
<br/>
  <div align="center"><input type="submit" name="submit" value="บันทึก">
  
  </div>
  
  </form>



ไฟล์สำหรับบันทึก

Code (PHP)
 <?php
include('connect.php');

// print array ออกมาดู
print_r($_POST);

	$Last_update	 	    = date("Y-m-d H:i");
	$file_ID				= $_REQUEST["file_ID"];
	$file_name				= '".$_FILES["file_name"]["name"]."';
	
	
if (isset($_POST['submit'])) {  
       
    $i = 0;
    foreach ($_POST['Searches'] as $val) {  
                $Searches  	            = $val;
                $Full_Text_Requests   = $_POST['Full_Text_Requests'][$i];
		$Sub_sessions	    = $_POST['Sub_sessions'][$i];
		$Queries			    = $_POST['Queries'][$i];
		$Citation_Events	    = $_POST['Citation_Events'][$i];
		
        mysql_query("INSERT INTO stat(Univer_ID,Rf_ID,
			Com_ID,Searches,Full_Text_Requests,Sub_sessions,Queries,
			Citation_Events,Month,Years,Last_update,file_name)  
			  		
	VALUES('$Univer_ID','$Rf_ID','$Com_ID',
	   '$Searches','$Full_Text_Requests','$Sub_sessions',
	   '$Queries','$Citation_Events','$Month','$Years',
	   '$Last_update','".$_FILES["file_name"]["name"]."')");
    $i++;
    } 
 }  
 echo  mysql_query;
 ?>




Tag : PHP, HTML/CSS, JavaScript, CakePHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2017-03-07 17:13:49 By : viewsmith View : 2454 Reply : 9
 

 

No. 1



โพสกระทู้ ( 2,249 )
บทความ ( 5 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook Hi5 Blogger

ถ้ากระบวนการ insert ทำงานได้ไม่มีปัญหาอะไร แสดงว่าคุณมาถูกทางแล้วครับ ทีนี้ลองเปลี่ยน คำสั่ง mysql จาก insert into เป็น replace into ดูครับ หรืออีกวิธี ให้ทำการ select ตารางที่ insert ดูก่อนว่ามีข้อมูล univer_ID ที่เราจะเพิ่มเข้าไปแล้วหรือไม่ ถ้าไม่มีก็ให้ insert โดยสร้างเงื่อนไข if else ในการตรวจสอบก็ได้ครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-07 21:08:22 By : Manussawin
 


 

No. 2



โพสกระทู้ ( 52 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : Manussawin เมื่อวันที่ 2017-03-07 21:08:22
รายละเอียดของการตอบ ::

เปลี่ยนเป็น replace into ก็ยังเพิ่ม ID เดิมซ้ำกันอยู่ค่ะ


แต่ยังไม่ค่อยเข้าใจคำแนะนำ ที่บอกว่า

"ให้ทำการ select ตารางที่ insert ดูก่อนว่ามีข้อมูล univer_ID ที่เราจะเพิ่มเข้าไปแล้วหรือไม่ ถ้าไม่มีก็ให้ insert โดยสร้างเงื่อนไข if else ในการตรวจสอบ"

หมายถึง ให้ทำการ select ตาราง stat ดู หรอคะ ว่ามีค่า univer_ID ตัวที่เราจะเพิ่มเข้าไปใหม่ มีอยู่ก่อนแล้วรึป่าว แบบนั้นหรอคะ

ถ้าถามว่ามี univer_ID อยุ่ก่อนมั้ย ต้องบอกว่ามีค่ะ แต่ข้อมูลในฟิล์ดอื่นๆจะไม่ซ้ำกันค่ะ ข้อมุลในตารางจะประมาณว่า

stat_ID || รหัสสถิติ
Univer_ID || รหัสมหาลัย
Rf_ID || รหัสฐานข้อมูลที่มหาวิทยาลัยใช้ใช้
Com_ID || รหัสบริษัทเจ้าของฐานข้อมูล
Searches || สถิติฐานข้อมูลที่กรอก
Full_Text_Requests || "
Sub_sessions || "
Queries || "
Citation_Events || สถิติฐานข้อมลุที่กรอก
Month || ข้อมูลเดือน
Years || ข้อมุลปี
Last_update || บันทึกวันและเวลา อัตโนมัติ
file_name || สำหรับเก็บชื่อไฟล์เอกสารที่แนบไฟล์ไปค่ะ


เช่น มหาลัยที่ 1 และ 2 มีการใช้ ฐานข้อมุล ที่ 3,4,5 ของบริษัทที่ 2 ในเดือนมกราคม ปี 2016 ข้อมูลที่จะเพิ่มเข้าตาราง ก็จะประมาณนี้

stat_ID | Univer_ID | Rf_ID | Com_ID | Searches | Full_Text_Requests | Sub_sessions | Queries
01 1 3 2 150 50
02 2 3 2 300 60
03 1 4 2 55
04 2 4 2 890
05 1 5 2 900 700
06 2 5 2 400 120

ข้อมูลที่กรอกเข้าก็จะประมาณนี้ค่ะ แต่ปัญหาที่ติดคือ กรอกค่าเข้ามันเก็บแค่แถวสุดท้ายอย่างเดียวเลยค่ะ

ถ้าต้องเขียน if else จะต้องเขียนประมาณไหนค่ะ รบกวนช่วยหน่อยนะคะ มือใหม่จริงๆค่ะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-08 10:12:25 By : viewsmith
 

 

No. 3



โพสกระทู้ ( 328 )
บทความ ( 0 )



สถานะออฟไลน์


สังเกตุดีๆครับ
<input name="Univer_ID" type="hidden" value="<?=$objResult['Univer_ID']?>" />
ตัวนี้น่าจะเป็นอาเรย์รึเปล่า ?
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-08 10:25:06 By : Luz
 


 

No. 4



โพสกระทู้ ( 52 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 3 เขียนโดย : Luz เมื่อวันที่ 2017-03-08 10:25:06
รายละเอียดของการตอบ ::

<input name="Univer_ID" type="hidden" value="<?=$objResult['Univer_ID']?>" />

ใส่เพื่อที่จะให้บันทึกเป็นรหัสมหาลัยแทนที่จะบันทึกเป็นชื่อมหาลัย ที่เรียกให้โชว์ในหน้าฟอร์มนั้นเรียกมาจากตาราง university ค่ะ แต่ไม่แน่ใจว่าเขียนได้ถูกต้องมั้ย ถ้าไม่เขียนไว้ ก็จะบันทึกค่า Univer_ID เป้น 0 ในตาราง stat ค่ะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-08 10:30:16 By : viewsmith
 


 

No. 5



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

Quote:
<td><input type="text" name="Searches[]" id="Searches" size="10"></td>
<td><input type="text" name="Full_Text_Requests[]" id="Full_Text_Requests" size="10"></td>
<td><input type="text" name="Sub_sessions[]" id="Sub_sessions" size="10"></div></td>
<td><input type="text" name="Queries[]" id="Queries" size="10"></td>
<td><input type="text" name="Citation_Events[]" id="Citation_Events" size="10"></td>


ใช้แบบนี้ไม่ได้ครับ เพราะค่า Index มันจะเพี้ยนกันหมด กรณีที่ไม่มีค่า ลองดูตัวนี้ครับ

=> PHP MySQL Add/Insert Multiple Record
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-08 11:06:12 By : mr.win
 


 

No. 6



โพสกระทู้ ( 52 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : mr.win เมื่อวันที่ 2017-03-08 11:06:12
รายละเอียดของการตอบ ::
ตัวอย่างตามลิ้งค์นี้ เคยดูและลองมาปรับใช้แล้วค่ะ แต่ก็ยังไม่สามารถทำได้ ไม่เข้าใจ โค้ดอยู่ 3 ส่วนนี้ค่ะ


Code (PHP)
<?php
for($i=1;$i<=50;$i++)
{
	if($_GET["Line"] == $i)
	{
		$sel = "selected";
	}
	else
	{
		$sel = "";
	}
?>
	<option value="<?php echo $_SERVER["PHP_SELF"];?>?Line=<?php echo $i;?>" <?php echo $sel;?>><?php echo $i;?></option>
<?php
}
?>


จากโค้ดด้านบนนี้เข้าใจว่า เป็นส่วน list ที่ให้เลือกจำนวนแถว ได้ไม่เกิน 50 แถว พอเลือกกี่แถวก็ให้แสดงตามจำนวนที่เลือกออกมา
แต่ในระบบที่ต้องการคือ ให้แสดง จำนวนแถวที่มีใน ตาราง university ออกมาทั้งหมด เพื่อเพิ่มค่าเข้าไปใส่ในตาราง stat ค่ะ เลยคิดว่าส่วนนี้ไม่น่าจะเกียวกัน
.....................................................................................................

<?php
$line = $_GET["Line"];
if($line == 0){$line=1;}
for($i=1;$i<=$line;$i++)
{
?>

ส่วนนี้ก็จะต่อเนื่องมาจากโค้ดด้านบน ว่ามีการรับค่ามาว่าเลือกไปกี่แถวก็ให้แสดงตามจำนวนใช่มั้ยคะ

......................................................................................................

แต่โค้ดด้านบนที่กล่าวมาทั้งหมด น่าจะมีส่วน ในไฟล์ บันทึกในส่วนนี้

Code (PHP)
for($i=1;$i<=$_POST["hdnLine"];$i++)
	{
		if($_POST["txtCustomerID$i"] != "")
		{
			$strSQL = "INSERT INTO customer ";
			$strSQL .="(CustomerID,Name,Email,CountryCode,Budget,Used) ";
			$strSQL .="VALUES ";
			$strSQL .="('".$_POST["txtCustomerID$i"]."','".$_POST["txtName$i"]."', ";
			$strSQL .="'".$_POST["txtEmail$i"]."' ";
			$strSQL .=",'".$_POST["txtCountryCode$i"]."','".$_POST["txtBudget$i"]."', ";
			$strSQL .="'".$_POST["txtUsed$i"]."') ";
			$objQuery = mysql_query($strSQL);
		}
	} 


.......................................................................................................

เมือดูจากโค้ดที่แอดมินแนะนำมา ยังไม่ค่อยตรงกับส่งที่ต้องการเท่าไหร่ค่ะ

ที่ต้องการคือ ไม่ต้อง list เลือกจำนวนแถวที่ต้องการเพิ่มค่ะ แต่ให้แสดงแถวตามตาราง university และ เพื่อเข้าไปใหม่ที่ตาราง stat ค่ะ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-08 11:22:57 By : viewsmith
 


 

No. 7



โพสกระทู้ ( 52 )
บทความ ( 0 )



สถานะออฟไลน์


รบกวนช่วยแนะนำวิธีด้วยนะคะ พยายามมปรับใช้แล้วแต่ก็ยังไม่สามารถทำได้ค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-08 15:56:16 By : viewsmith
 


 

No. 8



โพสกระทู้ ( 336 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


น่าจะเป็นตรง
Code (PHP)
<input name="Univer_ID" type="hidden" value="<?=$objResult['Univer_ID']?>" />


ลองเปลี่ยน
<input name="Univer_ID[]" type="hidden" value="<?=$objResult['Univer_ID']?>" />

จากนั้นลอง foreach ค่าใน input Univer_ID ดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-09 05:18:41 By : sensugaz
 


 

No. 9



โพสกระทู้ ( 52 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 8 เขียนโดย : sensugaz เมื่อวันที่ 2017-03-09 05:18:41
รายละเอียดของการตอบ ::

ลองทำตามวิธีคุณ sensugaz ทำได้แล้วค่ะ ได้ข้อมูลตามที่ต้องการเลย ขอบคุณนะคะ แต่ก็ยังติดปัญหา เวลาเพิ่มไฟล์อยู่ดีค่ะ มันไม่เก็บ ชื่อไฟล์ไปด้วย

ลองเพิ่มโค้ดนี้เข้าไปก็ไม่บันทึกชื่อค่ะ แต่โค้ดนี้ใช้เพิ่มไฟล์ได้นะคะ ลองเอาออกมาทำแยกดูแล้ว เก็บข้อมูลได้แค่แถวสุดท้ายอย่างเดียวและเพิ่มไฟล์ได้ปกติค่ะ พอนำมาใส่กับโค้ดที่เพิ่มหลายๆแถวได้นั้น echo ดู ค่าก็มาหมดนะคะ แต่พอดูในฐานข้อมูล ค่าไม่เข้าเลยค่ะ


Code (PHP)
$file_name				= '".$_FILES["file_name"]["name"]."';
	
	//เพิ่มไฟล์
$file_name='".$_FILES["file_name"]["name"]."';
$fileName_tis620=iconv("utf-8","tis620",$_FILES["file_name"]["name"]);
$fileName_utf8=iconv("tis620","utf8",$fileName_tis620);
if(move_uploaded_file($_FILES["file_name"]["tmp_name"],"file/".$fileName_tis620))
{
$sql ="INSERT INTO stat(stat_ID,Univer_ID,Rf_ID,
			Com_ID,Searches,Full_Text_Requests,Sub_sessions,Queries,
			Citation_Events,Month,Years,Last_update,file_name)  
			  		
	VALUES('$stat_ID','$Univer_ID','$Rf_ID','$Com_ID',
	   '$Searches','$Full_Text_Requests','$Sub_sessions',
	   '$Queries','$Citation_Events','$Month','$Years',
	   '$Last_update','".$_FILES["file_name"]["name"]."')";
	$result = mysql_query($sql) or die ("Error in query: $sql " . mysql_error());
	$Univer_ID = mysql_insert_id();
	
	echo $sql;
}



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-09 10:59:37 By : viewsmith
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ติดปัญหาการเพิ่มข้อมูลหลายๆแถวมันบันทึกข้อมูลซ้ำค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่