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

Registered : 108,209

HOME > PHP > PHP Forum > สอบถามการใช้ foreach เช็คข้อมูลซ้ำกับ database เพื่อป้องกันไม่ให้ INSERT ข้อมูลที่ซ้ำกัน








 

สอบถามการใช้ foreach เช็คข้อมูลซ้ำกับ database เพื่อป้องกันไม่ให้ INSERT ข้อมูลที่ซ้ำกัน

 
Topic : 135052



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



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



ตอนนี้ ถ้าข้อมูลที่ได้รับไม่ซ้ำก็ผ่านฉลุย แต่ติดตรงที่ ถ้ามีข้อมูลที่ซ้ำกันเข้ามา ระบบยังยอมให้ INSERT ลงตารางอยู่ครับ

Code (PHP)
$array[] = array(
         'username' => $_POST['course_username'],
         'fullname' => $_POST['course_fullname'],
         'title' => $_POST['course_title'],
         'sec' => $_POST['course_sec'],
         'datebook' => $date->format('Y-m-d'),
         'start_time' => $course_start_time,
         'end_time' => $course_end_time,
         'note_other' => $_POST['course_note_other'],
         'note1' => $_POST['course_note1'],
         'note2' => ($_POST['course_point']).($_POST['course_note2']).($_POST['course_point']),
         'icon1' => $_POST['course_icon1'],
         'icon2' => $_POST['course_icon2'],
         'icon3' => $_POST['course_icon3'],
         'icon4' => $_POST['course_icon4'],
         'icon5' => $_POST['course_icon5'],
         'icon_note2' => $_POST['course_icon_note2'], 
    );
}

//ตรวจข้อมูลซ้ำ
foreach($array as $course){
    $check = "SELECT * FROM schedule WHERE (course_start_time = '".$course[start_time]."' OR course_end_time = '".$course[end_time]."') AND course_date = '".$course[datebook]."'";
    $result = mysqli_query($mysqli, $check) or die ("Error in query: $check " . mysqli_error());
    $num = mysqli_num_rows($result);
   }
    if($num > 0)
   {
    echo "<script>";
    echo "alert('ห้องไม่ว่างครับ !\\nกรุณาติดต่อผู้จอง เพื่อขอปรับเปลี่ยนตาราง');";
    echo "window.history.back();";
    echo "</script>";	
  }else{
//เพิ่มเข้าไปในฐานข้อมูล
foreach($array as $course){
    $sql = "INSERT INTO schedule (course_username, course_fullname, course_title, course_sec, course_date, course_start_time, course_end_time, course_note_other, course_note1, course_note2, course_icon1, course_icon2, course_icon3, course_icon4, course_icon5, course_icon_note2)
    VALUES('".$course[username]."', '".$course[fullname]."', '".$course[title]."', '".$course[sec]."', '".$course[datebook]."', '".$course[start_time]."', '".$course[end_time]."', '".$course[note_other]."', '".$course[note1]."', '".$course[note2]."', '".$course[icon1]."', '".$course[icon2]."', '".$course[icon3]."', '".$course[icon4]."', '".$course[icon5]."', '".$course[icon_note2]."')";
    $result = mysqli_query($mysqli, $sql) or die ("Error in query: $sql " . mysqli_error());
     }
	mysqli_close($mysqli);
        
    if($result){
    $str1 = $_POST["course_title"];
    $str2 = $_POST["course_sec"];
    $str3 = $_POST["course_note1"];
    $str4 = $_POST["course_note_other"];

  echo "<script language=\"JavaScript\">";
  echo "alert('จองห้องเรียนสำเร็จ : $str1 $str2 $str3 $str4');";
  echo "parent.window.location.reload()";
  echo "</script>";
  }
}
    ?>




Tag : PHP, MySQL


Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2020-03-27 01:19:46 By : pisaranon View : 102 Reply : 6
 

 

No. 1



โพสกระทู้ ( 1,811 )
บทความ ( 10 )



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

ต้องทราบก่อนว่า ฟิลด์ไหนที่กำหนดว่าห้ามซ้ำ
เราก็เขียนเงื่อนไข WHERE เพื่อค้นหาค่าซ้ำ
หากไม่ซ้ำจึงทำการรันคำสั่ง INSERT ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-27 09:32:38 By : {Cyberman}
 


 

No. 2



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



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


แนะนำให้ ทำ unique key
แล้วตรวจสอบ error result query จากการ insert
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-27 09:45:34 By : Chaidhanan
 


 

No. 3



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



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

echo $num เพื่อดูค่าที่คิวรีออกมาว่าตรงตามต้องการหรือไม่
$array[] ไม่จำเป็นต้อง foreach เป็นตัวแปรใหม่เข้าจากมันโดยตรงเลยก็ได้
การตรวจสอบค่าซ้ำควรมี id หรือฟิลด์หนึ่งที่ข้อมูลไม่ซ้ำกัน
และการคิวรี่ตรวจสอบการใช้ AND หรือ OR ให้ถูกต้องเช็คจากค่า $num
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-27 17:32:01 By : PhrayaDev
 


 

No. 4



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



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


คือแบบนี้ครับ

ในกรณีรับข้อมูล array มาชุดเดียวสามารถป้องกันการบันทึกซ้ำได้

แต่ในกรณีรับข้อมูล array มามากว่า 1 ชุด ซึ่งบางชุดซ้ำและไม่ซ้ำ ไม่สามารถป้องการการบันทึกได้

เลยอยากให้ ถ้าการรับชุดข้อมูลใดๆในแต่ละรอบ รับมาไม่ซ้ำกับข้อมูลที่มีทั้งหมดจึงจะยอมให้ INSERT แต่ถ้าซ้ำแม้แต่ชุดเดียวไม่ยอมให้ INSERT


ประวัติการแก้ไข
2020-03-29 19:27:05
2020-03-29 19:29:31
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-29 19:23:41 By : pisaranon
 


 

No. 5



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



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


วิธีที่ถูกต้อง
จำเป็นต้องใช้ innodb ในการเก็บข้อมูล เพื่อใช้เครื่องมือ commit / rollback
MyIsam ไม่รองรับการทำ commit / rollback
https://www.php.net/manual/en/mysqli.rollback.php
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-29 20:39:10 By : Chaidhanan
 


 

No. 6



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



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


html:
Code (PHP)
<input type="text" name="test[]">


php: ตรวจสอบก่อน Insert หรือ Update
$test =$_POST['test'];
if (count(array_unique( array_diff_assoc($test, array_unique($test)))) > 0)
{
   //statement
}


หรือ

javascript:
Code (JavaScript)
function duplicate(arr){var sorted_arr=arr.sort();var results=[];for(var i=0;i<arr.length-1;i++){if(sorted_arr[i+1]==sorted_arr[i]){results.push(sorted_arr[i]);}}return results.length;}


ถ้าจะให้ Cool ก็ form validate ก่อน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-30 10:56:41 By : fossil31
 


   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามการใช้ foreach เช็คข้อมูลซ้ำกับ database เพื่อป้องกันไม่ให้ INSERT ข้อมูลที่ซ้ำกัน
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม , รับทำบัญชี , โรงงานผลิตครีม , สำนักงานบัญชี , รับจดทะเบียนบริษัท

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