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,037

HOME > PHP > PHP Forum > มีปัญหาในการ Insert ข้อมูลไม่ต้องเงื่อนไขของ if-else ครับ



 

มีปัญหาในการ Insert ข้อมูลไม่ต้องเงื่อนไขของ if-else ครับ

 



Topic : 066058



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



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




มีปัญหาในการ Insert ข้อมูลไม่ตรงเงื่อนไขของ if-else ครับ คือเงื่อนไขของผมคือถ้ามีข้อมูลที่ว่าง หรือ ข้อมูลที่มีซ้ำในฐานข้อมูลจะให้ออกมาเป็น 'F' ผมลอง echo Statment มาแล้วนะครับผลที่ได้ตรงตามที่ต้องการ แต่มันไม่เก็บในฐานข้อมูลตรงตามที่ต้องการ
echo $select_another." ".$sum." ".$objResult1['another_name']."<br>";
SELECT * FROM another
INSERT INTO another (another_name,busi_no,bg_no,ser_no,Created,CreatedBy,CreatedTime,Enable)VALUES
SELECT * FROM another
dpu F dpu // dpu มีซ้ำในฐานข้อมูลคำว่า dpu ผลจึงออกเป็น F
dpu T spu
dpu T sss
dpu T ppp
dpu T ooo // มันเอาตัวนี้ไปเก็บ
SELECT * FROM another
ooo T dpu
ooo T spu
ooo T sss
ooo T ppp
ooo F ooo // dpu มีซ้ำในฐานข้อมูลคำว่า dpu ผลจึงออกเป็น F และมันเอาตัวนี้ไปเก็บ
SELECT * FROM another
spu T dpu
spu F spu // spu มีซ้ำในฐานข้อมูลคำว่า spu ผลจึงออกเป็น F
spu T sss
spu T ppp
spu T ooo
SELECT * FROM another
sss T dpu
sss T spu
sss F sss // sss มีซ้ำในฐานข้อมูลคำว่า sss ผลจึงออกเป็น F
sss T ppp
sss T ooo // มันเอาตัวนี้ไปเก็บ
SELECT * FROM another
bu T dpu
bu T spu
bu T sss
bu T ppp
bu T ooo // มันเอาตัวนี้ไปเก็บ
สรุปคือ มันเก็บข้อมูลตัวหลังสุดไปใส่ครับ ซึ่งไม่ถูกต้อง มันต้องนำสิ่งที่เป็นเงื่อนไขไปเก็บครับ

Code (PHP)
$strSQL = "SELECT * FROM another";
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");
$objResult = mssql_fetch_array($objQuery);
echo $strSQL."<br>";
$count1=count($_POST[select_another]);
if(is_array($_POST[select_another]) and ($count1)>0)
{
$strSQL ="INSERT INTO another ";
$strSQL .="(another_name,busi_no,bg_no,ser_no,Created,CreatedBy,CreatedTime,Enable)";
$strSQL .="VALUES ";
echo $strSQL."<br>";
$values = array();
foreach($_POST['select_another'] as $select_another)
{
$strSQL1 = "SELECT * FROM another";
$objQuery1 = mssql_query($strSQL1) or die ("Error Query [".$strSQL1."]");
echo $strSQL1."<br>";
while($objResult1 = mssql_fetch_array($objQuery1))
	{
$select_another = trim($select_another);
$another_name = trim($objResult1[another_name]);
if (empty($select_another) or $select_another==$another_name)
					{
           	 			$sum = "F";
       				}
				else
					{
            			$sum = "T"; 
        			}
					echo $select_another." ".$sum." ".$objResult1['another_name']."<br>";
	}
array_push($values, "('".$select_another."','".$_POST["select_busi"]."','".$_POST["select_bg"]."','".$_POST["select_service"]."',
'".$_POST["text_user_create"]."','".$_POST["text_date_create"]."','".$_POST["text_time_create"]."','".$sum."')");
}
$strSQL .= implode(", ", $values);
}
$objQuery = mssql_query($strSQL);


***ขอร้องผู้รู้ทุกท่านช่วยผมที่ครับ ส่งพรุ่งนี้เช้าแล้ว(7 ก.ย. 54)



Tag : PHP, Ms SQL Server 2008









ประวัติการแก้ไข
2011-09-06 16:33:50
2011-09-06 16:34:52
2011-09-06 16:38:55
2011-09-06 16:39:16
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-09-06 16:33:30 By : Nos1001 View : 959 Reply : 8
 

 

No. 1



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



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


เอางี้ดีกว่า ขอเริ่มจาก form ก่อนเลยแล้วกัน เอาฟอร์ม มา ผมจะได้ดูว่าจะเขียน php รับยังไงให้เหมาะ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-06 16:37:55 By : mr.v
 


 

No. 2



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



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


นี่ครับ อธิบายคร่าวๆ ก่อนนะครับ ถ้าเราเลือก Listmenu มาเสร็จ ข้อมูลที่เป็น sub ย่อยก็จะมาแสดงที่ Listmenu แบบ multiple เมื่อกด submit ข้อมูลก็จะไปเข้าที่ตาง another ตรงนี้ละครับ มัน insert เข้าไป มันก็เลยซ้ำกัน ผมก็เลยถ้าข้อมูลซ้ำกับ db อยู่แล้วก็ให้เป็น F เพราะผมจะ Where Enable =T เอาครับ จะได้ไม่ขึ้นซ้ำกัน ผมใช้ Distinct ไม่ได้นะครับ พอใส่แล้ว javascript แบบ Dependent ไม่ขึ้นเลยครับ

Code (PHP)
<select id="select_another" name="select_another[]"  multiple size="5">
       	 	<?PHP
			$another=$_POST['select_another'];
			if($another){
			foreach ($another as $n){echo 'You selected ',$n,'<br />';}
			}
			?>
                </select>
<input type="text" name="text_etc" id="etc"> <input type="button" onClick="addOptionAllAnother();" value='เพิ่ม'>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-06 16:46:34 By : Nos1001
 

 

No. 3



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



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


ผมก็ดูแล้วงงๆ ขอไปทีละขั้นแล้วกัน form จะได้แบบนี้ถูกมั้ย?
Code (PHP)
			<select id="select_another" name="select_another[]"  multiple size="5">
				<option value="dpu">dpu</option>
				<option value="spu">spu</option>
				<option value="sss">sss</option>
				<option value="ppp">ppp</option>
				<option value="ooo">ooo</option>
			</select>
			<input type="text" name="text_etc" id="etc"> <input type="button" value='เพิ่ม'>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-06 16:54:07 By : mr.v
 


 

No. 4



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



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


ถ้าจะเช็คการซ้ำกับในฐานข้อมูล ต้องเช็คก่อน แล้วค่อย insert ไม่ใช่เหรอครับ
Code (PHP)
<?php

$strSQL = "SELECT * FROM another";
$objQuery = mssql_query($strSQL) or die("Error Query [" . $strSQL . "]");
$objResult = mssql_fetch_array($objQuery);
echo $strSQL . "<br>";
$count1 = count($_POST[select_another]);

if (is_array($_POST[select_another]) and ($count1) > 0) {
	
	$strSQL = "INSERT INTO another ";
	$strSQL .="(another_name,busi_no,bg_no,ser_no,Created,CreatedBy,CreatedTime,Enable)";
	$strSQL .="VALUES ";
	echo $strSQL . "<br>";
	$values = array();
	
	foreach ($_POST['select_another'] as $select_another) {
		
		$strSQL1 = "SELECT * FROM another";
		$objQuery1 = mssql_query($strSQL1) or die("Error Query [" . $strSQL1 . "]");
		echo $strSQL1 . "<br>";
		
		while ($objResult1 = mssql_fetch_array($objQuery1)) {
			
			$select_another = trim($select_another);
			$another_name = trim($objResult1[another_name]);
			
			if (empty($select_another) or $select_another == $another_name) {
				$sum = "F";
			} else {
				$sum = "T";
			}
			
			echo $select_another . " " . $sum . " " . $objResult1['another_name'] . "<br>";
			
		}
		
		array_push($values, "('" . $select_another . "','" . $_POST["select_busi"] . "','" . $_POST["select_bg"] . "','" . $_POST["select_service"] . "',
'" . $_POST["text_user_create"] . "','" . $_POST["text_date_create"] . "','" . $_POST["text_time_create"] . "','" . $sum . "')");
		
	}
	
	$strSQL .= implode(", ", $values);
	
}

$objQuery = mssql_query($strSQL);
?>

โค้ดนี้ก๊อปจากข้างบน

ดูจากโค้ดแล้วก็ไม่ค่อยเข้าใจหรอกว่า form มันมายังไง แต่ $strSQL1 = "SELECT * FROM another"; ข้างใน foreach มันเป็นการ while เหมือนกับวนแสดงผลข้อมูลเลย
ทั้งที่จริงๆใน select ควรจะมี where หาตามเงื่อนไขไปเลย
แต่เอามา while loop แบบนี้ แล้วไม่มีการ break เมื่อตรงเงื่อนไขแบบนี้ มันก็วนไปจนจบฐานข้อมูล ซึ่งถ้าข้อมูลสุดท้ายในฐานเป็น T มันก็ T หมด ถ้าเป็น F มันก็ F หมดน่ะสิครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-06 17:14:57 By : mr.v
 


 

No. 5



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



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


แล้วแก้ยังไงดีครับ ช่วยหน่อยครับ พรุ่งนี้แล้ว เขาต้องเทสระบบ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-06 19:53:13 By : Nos1001
 


 

No. 6



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



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


แนะนำว่าต้องหาทางออกจากเงื่อนไข while ครับ ลองเอา break ไปใส่ดูในส่วนใดส่วนหนึ่งของ if ภายใน while ลองดู
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-06 20:17:20 By : mr.v
 


 

No. 7



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



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


ขอบคุณหลายๆเด้ออ ได้ละครับ แต่ม่ายรู้ถ้าเจอข้อมูลมากๆ จะติดอีกไหมเนี่ย ตะงิดๆไงไม่รู้

Code (PHP)
if (empty($select_another) or $select_another==$another_name)
					{
           	 			$sum = "F";
						break;
       				}
				else
					{
            			$sum = "T"; 
        			}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-06 20:29:31 By : Nos1001
 


 

No. 8



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



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


ควรใส่ทั้งสองเงื่อนไขนะครับ


คืออย่างที่ผมบอกจริงๆนั่นแหละ เวลาจะ select หาเงื่อนไขเพื่อนำมา insert มันควรจะเป็น select * from table WHERE ควรจะมีตรงนี้ด้วย
แต่คุณทำแล้วไม่มีเลย
สภาพมันเลยออกมาเหมือนกับ select ทั้ง table แล้วมา while loop เอาจนหมดตาราง ค่าสุดท้ายในตารางเป็นยังไงก็ได้ค่า $sum เป็นอย่างนั้น แบบนี้มันผิดครับ แต่ถ้า break ช่วยได้ก็ ok.
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-06 20:59:33 By : mr.v
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : มีปัญหาในการ Insert ข้อมูลไม่ต้องเงื่อนไขของ if-else ครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 02
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 อัตราราคา คลิกที่นี่