มีปัญหาในการ 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);
ดูจากโค้ดแล้วก็ไม่ค่อยเข้าใจหรอกว่า form มันมายังไง แต่ $strSQL1 = "SELECT * FROM another"; ข้างใน foreach มันเป็นการ while เหมือนกับวนแสดงผลข้อมูลเลย
ทั้งที่จริงๆใน select ควรจะมี where หาตามเงื่อนไขไปเลย
แต่เอามา while loop แบบนี้ แล้วไม่มีการ break เมื่อตรงเงื่อนไขแบบนี้ มันก็วนไปจนจบฐานข้อมูล ซึ่งถ้าข้อมูลสุดท้ายในฐานเป็น T มันก็ T หมด ถ้าเป็น F มันก็ F หมดน่ะสิครับ