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 > สอบถามครับ เรื่องการกำหนดข้อมูลซ้ำครับ ว่าจะให้ซ้ำได้กี่ record



 

สอบถามครับ เรื่องการกำหนดข้อมูลซ้ำครับ ว่าจะให้ซ้ำได้กี่ record

 



Topic : 108321



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



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




ต้องการเช็ค ฟิลด์ loc_id สามารถมีค่าซ้ำได้แค่ 3 record เท่านั้นครับ
เพราะต้องการ เพิ่มอาจารย์นิเทศก์ ต่อ สถานประกบการ ได้มากสุดแค่ 3 คนครับ
ที่มีอยู่ตอนนี้ เช็คได้แค่ว่า ใน 1 สถานประกอบการจะไม่มีอาจารย์ที่ซ้ำกัน

ตารางประมาณนี้ครับ

snt_id = รหัส
loc_id = สถานประกอบการ
per_id = อาจารย์

snt_id | loc_id | per_id
s0001 | l0002 | p0001
s0002 | l0002 | p0002
s0003 | l0002 | p0003
s0004 | l0003 | p0002
s0005 | l0003 | p0003

ขอบพระคุณครับ


Code (PHP)
if(isset($_GET['submit'])){
   for($i=1;$i<=$_GET["hdnLine"];$i++){
      $sql = "SELECT * FROM supervision_teacher WHERE loc_id = '".$_GET["loc_id$i"]."' AND per_id = '".$_GET["per_id$i"]."'";
      $result = mysql_query($sql);
      $num = mysql_num_rows($result);
      if($num > 0){
         echo "<script>alert('สถานประกอบการนี้มีอาจารย์ที่เลือกแล้ว');window.location='visionTeacherAdd.php?fav_id=$fav_id';</script>";
         exit();
      }else{
      $sql  = "INSERT INTO supervision_teacher (loc_id, per_id)";
      $sql .= " VALUES ('".$_GET["loc_id$i"]."','".$_GET["per_id$i"]."')";
      $result = mysql_query($sql);
      }
   }
      echo "<script>alert('บันทึกข้อมูลเรียบร้อยแล้ว');window.location='".$_SESSION['visionView']."';</script>";
}




Tag : PHP









ประวัติการแก้ไข
2014-05-13 23:30:09
2014-05-14 00:28:29
2014-05-14 00:32:07
2014-05-14 01:50:51
2014-05-14 01:54:13
2014-05-14 01:56:27
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-05-13 23:27:20 By : sabaitip View : 799 Reply : 5
 

 

No. 1



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



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

ให้นับจำนวนก่อนบันทึกครับ นับโดยใช้เงื่อนไข loc_id ในการเทียบข้อมูล

Code (SQL)
SELECT COUNT(*) AS cnt FROM supervision_teacher WHERE loc_id = 'xxx'


ถ้า cnt มากกว่า หรือ เท่ากับ 3 ก็ไม่ให้ INSERT






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-05-14 07:35:38 By : {Cyberman}
 


 

No. 2



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : {Cyberman} เมื่อวันที่ 2014-05-14 07:35:38
รายละเอียดของการตอบ ::
ผมจะเอาไปใช้กับเงื่อนไขด้านบนยังไงครับ คือ
ต้องเช็ค 2 อย่าง

1) หนึ่งสถานประกอบการไม่ให้มีอาจารย์ซ้ำ
2) หนึ่งสถานประกอบการไม่ให้มีอาจารย์เกิน 3คน (ไม่ถึง 3 ก็ได้)

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-05-15 22:13:56 By : sabaitip
 

 

No. 3



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



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

แยกเช็กสองครั้งไปเลยครับ

ปล. ครั้งแรกเช็คว่าอาจารย์ซ้ำรึเปล่าก่อนนะ


ประวัติการแก้ไข
2014-05-15 23:35:36
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-05-15 23:35:01 By : {Cyberman}
 


 

No. 4



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



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


ยังติดปัญหาอยู่ครับ

ตอนนี้มีอาจารย์ในโรงบาลอยู่ 2 ท่านครับ
1

จากนั้นผมเพิ่มเข้าไปอีก 2 ท่าน ซึ่งมันก็แจ้งเตือนว่า สามารถกำหนดอาจารย์ได้สูงสุด 3 ท่านเท่านั้น เพราะเพิ่มไปอีก 2 มันก็เกิน 3 แล้ว
2

แต่พอกลับไปดูจุดที่แสดงข้อมูล มันกลับ Insert อาจารย์ เข้ามา จากที่เลือกไป 2 คน
3


ทำไมมันยัง Insert เข้ามาอีกอ่ะครับ ทั้งๆ ที่ก็เข้าเงื่อนไข ที่ไม่ให้อาจารย์เกิน 3 คนแล้ว
คือถ้ามันแจ้งเตือนแล้ว อยากให้มันไม่ต้อง Insert อ่ะครับ

ปล. ผมใช้ group_concat ในการแสดงข้อมูลครับ

Code (PHP)
<?PHP
   include "config/connect.php";

// รับค่าที่ส่งมา
   $fav_id = $_GET['fav_id'];

   $sql  = "SELECT * FROM favor";
   $sql .= " LEFT JOIN location ON favor.loc_id = location.loc_id";
   $sql .= " WHERE fav_id = '$fav_id'";
   $result = mysql_query($sql);
   $show = mysql_fetch_array($result);

   if(isset($_GET['submit'])){

   for($i=0;$i<count($_GET["per_id"]);$i++){

   $per_id = $_GET["per_id"][$i];
   $loc_id = $_GET["loc_id"][$i];

   if($_GET["per_id"][$i] != ""){

// เงื่อนไข ไม่ให้มีอาจารย์ซ้ำ
   $sql1 = "SELECT * FROM supervision_teacher WHERE loc_id = '$loc_id' AND per_id = '$per_id'";
   $result1 = mysql_query($sql1);
   $num1 = mysql_num_rows($result1);

// เงื่อนไข ไม่ให้มีอาจารย์มากกว่า 3
   $sql2 = "SELECT COUNT(loc_id) AS cnt FROM supervision_teacher WHERE loc_id = '$loc_id'";
   $result2 = mysql_query($sql2);
   $show2 = mysql_fetch_array($result2);
                    
   if($num1 > 0){
      echo "<script>alert('สถานประกอบการนี้มีอาจารย์ที่เลือกแล้ว');window.location='visionTeacherAdd.php?fav_id=$fav_id';</script>";
      exit();
   }else if($show2['cnt'] >= '3'){
      echo "<script>alert('สามารถกำหนดอาจารย์ได้สูงสุด 3 ท่านเท่านั้น');window.location='".$_SESSION['visionView']."';</script>";
      exit();
   }else{
      $sql  = "INSERT INTO supervision_teacher (loc_id, per_id) VALUES ('$loc_id', '$per_id')";
      $result = mysql_query($sql);
         }
      }
   }
      echo "<script>alert('บันทึกข้อมูลเรียบร้อยแล้ว');window.location='".$_SESSION['visionView']."';</script>";
}
?>
<form name="visionViewN" action="<?PHP $_SERVER['PHP_SELF']?>" enctype="multipart/form-data">
   <table width="100%" cellpadding="0" cellspacing="1" border="1">
      <tr bgcolor="ghostwhite">
         <td colspan="2"><b>&nbsp;&raquo; จัดการผู้นิเทศก์&emsp;:&emsp;</b><?=$show['loc_name']; if($show['loc_suborder']==""){ echo "<font color=\"gray\"><i>(ไม่มีหนวยงานย่อย)</i></font>";} else { echo " (".$show['loc_suborder'].")"; }?></td>
      </tr>
      <tr>
         <td></td>
         <td>
            <select name="per_id[]">
               <option value="">ว่าง</option>
            <?PHP
            $sqlVis  = "SELECT * FROM personnel WHERE cyp_id = '1'";
            $sqlVis .= " ORDER BY per_name ASC";
            $resultVis = mysql_query($sqlVis);
            while($showVis = mysql_fetch_array($resultVis)){
            ?>
               <option value="<?=$showVis['per_id']?>"><?=$showVis['per_name']?></option>
            <?PHP } ?>
            </select>
            <input type="hidden" name="loc_id[]" value="<?=$show['loc_id']?>"/>
         </td>
      </tr>
      <tr>
         <td></td>
         <td>
            <select name="per_id[]">
               <option value="">ว่าง</option>
            <?PHP
            $sqlVis  = "SELECT * FROM personnel WHERE cyp_id = '1'";
            $sqlVis .= " ORDER BY per_name ASC";
            $resultVis = mysql_query($sqlVis);
            while($showVis = mysql_fetch_array($resultVis)){
            ?>
               <option value="<?=$showVis['per_id']?>"><?=$showVis['per_name']?></option>
            <?PHP } ?>
            </select>
            <input type="hidden" name="loc_id[]" value="<?=$show['loc_id']?>"/>
         </td>
      </tr>
      <tr>
         <td></td>
         <td>
            <select name="per_id[]">
               <option value="">ว่าง</option>
            <?PHP
            $sqlVis  = "SELECT * FROM personnel WHERE cyp_id = '1'";
            $sqlVis .= " ORDER BY per_name ASC";
            $resultVis = mysql_query($sqlVis);
            while($showVis = mysql_fetch_array($resultVis)){
            ?>
               <option value="<?=$showVis['per_id']?>"><?=$showVis['per_name']?></option>
            <?PHP } ?>
            </select>
            <input type="hidden" name="loc_id[]" value="<?=$show['loc_id']?>"/>
         </td>
      </tr>
      <tr>
         <td colspan="2" align="center">
            <input type="hidden" name="fav_id" value="<?=$fav_id;?>"/>
            <input type="submit" name="submit" style="width: 100px" value="บันทึก"/>
            <input type="button" style="width: 100px" onclick="window.location.href='<? echo $_SESSION['visionView']; ?>'" value="ย้อนกลับ"/>
         </td>
      </tr>
   </table>
</form>



ประวัติการแก้ไข
2014-05-17 13:59:36
2014-05-17 14:00:04
2014-05-17 14:01:08
2014-05-17 14:02:08
2014-05-17 14:02:39
2014-05-17 14:06:24
2014-05-17 14:09:29
2014-05-17 14:12:48
2014-05-17 14:15:12
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-05-17 13:59:02 By : sabaitip
 


 

No. 5



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



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

แสดงว่ามันทำงานแบบไม่สนใจ 2 เงื่อนไขนี้

if($num1 > 0){
.
.
.
}else if($show2['cnt'] >= '3'){
.
.

ดันไปเข้า else หมดเลยบันทึกข้อมูลได้
ลองสร้างข้อมูลทดสอบ แบบตั้งใจให้เข้าทีละเงื่อนไขดูครับ แล้วecho $sql ก่อนปิดแท็ก ว่าจะมีผลลัพธ์ออกมาหรือไม่?

ถ้ามีแสดงว่าเกิดข้อผิดพลาดตรงเงื่อนไขครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-05-17 18:20:41 By : {Cyberman}
 

   

ค้นหาข้อมูล


   
 

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