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 > Input number หากเป็นค่าว่าง ให้บันทึก 0 ไป Update ในฐานข้อมูลด้วยวิธีใดได้บ้างครับ



 

Input number หากเป็นค่าว่าง ให้บันทึก 0 ไป Update ในฐานข้อมูลด้วยวิธีใดได้บ้างครับ

 



Topic : 135907



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



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




Input number หากเป็นค่าว่าง ให้บันทึก 0 ไป Update ในฐานข้อมูลด้วยวิธีใดได้บ้างครับ เนืองจากเก็บเป็นคะแนนแบบ INT ในฐานข้อมูล และอัปเดตข้อมูลแบบหลายรายการ ส่งบันทึกเป็น foreach ครับ ติดปัญหาตรงที่ หากบางรายการไม่ระบุตัวเลขในฟอร์ม Input Number การส่งข้อมูลไปบันทึกจะไม่สามารถบันทึกได้ครับ เนื่องจากเป็นค่าว่าง

โค้ดฟอร์มครับ

Code (PHP)
<input type='number' class="form-control" name="update_score[<?php echo $row["id_registacti"];?>]" id="update_score[<?php echo $row["id_registacti"];?>]" placeholder="ใส่คะแนนที่ได้" value="<?php echo $row["score_registacti"];?>" min="0" max="100"></td>




โค้ดบันทึกข้อมูลดังนี้ครับ

Code (PHP)
foreach($_POST['update_score'] as $id_registacti=>$value){

$sql = "UPDATE scorecok_regisacti SET score_registacti=$value WHERE id_registacti=$id_registacti";
$result = mysqli_query($conn,$sql) or die ("Error in query: $sql " . mysqli_error());

}
        mysqli_close($conn);

        $Go_Back = $_GET['idactiviti'];
        
if($result){
		        echo "<script type='text/javascript'>";
			echo "window.location='../report.php?idactiviti=$Go_Back';";
			echo "</script>";
	  }
	  else{

            echo "<script type='text/javascript'>";
            echo  "alert('ไม่สามารถบันทึกข้อมูลได้ กรุณาติดต่อผู้ดูแลระบบ!!');";
			echo "window.location='../report.php?idactiviti=$Go_Back';";
			echo "</script>";
	  }
	




Tag : PHP, MySQL









ประวัติการแก้ไข
2021-02-14 20:48:41
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2021-02-14 20:44:04 By : ices View : 2685 Reply : 4
 

 

No. 1



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



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


ปกติแล้ว การจะบันทึกข้อมูลที่รับเข้ามาจากผู้ใช้ ไม่ว่าผู้ใช้นั้นจะเป็นใครก็ตาม แม้แต่เราเอง
มันจะต้องมีกระบวนการ validate ตรวจข้อมูลก่อนเสมอ ไม่ใช่รับมันดะทั้งหมด
อะไรมาก็รับ แบบนี้ก็เตรียมตัวพังได้เลยครับ ไม่พังวันนี้ก็พังพรุ่งนี้!
ที่ให้ตรวจแม้แต่ตัวเราเอง ก็เพราะ user error ได้เสมอครับ

เมื่อมีการตรวจสอบแล้ว ขั้นตอนการกำหนดค่าว่างให้เป็น 0 มันก็อยู่ในนั้นแหละไม่มีอะไรพิเศษหรอก.
ใช้ if ตรวจเอา if (empty($ค่าที่รับมา)) {...}






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-02-14 22:05:53 By : mr.v
 


 

No. 2



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.v เมื่อวันที่ 2021-02-14 22:05:53
รายละเอียดของการตอบ ::
ขอบคุณมากครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-02-15 19:22:00 By : ices
 

 

No. 3



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



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


จากที่ผมไปศึกษา ค้นคว้ามา แค่เสริมโค้ดในไฟล์อัปเดต โดยเพิ่มโค้ด
Code (PHP)
".(!$value ? 'NULL' : (int)$value)."



แบบเต็มครับ
Code (PHP)
foreach($_POST['update_score'] as $id_registacti=>$value){

$sql = "UPDATE scorecok_regisacti SET score_registacti=".(!$value ? 'NULL' : (int)$value)." WHERE id_registacti=$id_registacti";
$result = mysqli_query($conn,$sql) or die ("Error in query: $sql " . mysqli_error());

}
        mysqli_close($conn);

        $Go_Back = $_GET['idactiviti'];
        
if($result){
		        echo "<script type='text/javascript'>";
			echo "window.location='../report.php?idactiviti=$Go_Back';";
			echo "</script>";
	  }
	  else{

            echo "<script type='text/javascript'>";
            echo  "alert('ไม่สามารถบันทึกข้อมูลได้ กรุณาติดต่อผู้ดูแลระบบ!!');";
			echo "window.location='../report.php?idactiviti=$Go_Back';";
			echo "</script>";
	  }
	


ซึ่งจากการทดสอบแล้ว สามารถทำงานได้ตรงต่อความต้องการครับ
คือ หากผู้ใช้ไม่ระบุตัวเลขใน Input จะกลายเป็นค่าว่างใน Input (Input คือ ช่องกรอกข้อมูล , type='number' type คือ การระบุประเภทของข้อมูลในฟอร์ม Input ส่วน number คือ ประเภทข้อมูลแบบ *ตัวเลข) แต่เมื่อเราใช้โค้ดข้างบน ทำให้การส่งค่าว่าง กลายเป็น 0 ที่จะถูกบันทึกในฐานข้อมูลแทนค่าว่างนั้นเองครับ

คือ หากในฟอร์ม input เป็นค่าว่าง และเราทำการบันทึกข้อมูลเข้าไป จะมีการส่งค่า 0 ไปบันทึกในฐานข้อมูล ซึ่ง Field เป็น INT ซึ่งก่อนหน้านี้ input จะว่างไม่ได้ เพราะจะทำให้การบันทึกข้อมูลนั้นไม่สามารถดำเนินการได้



*********
การอธิบายอาจจะไม่เป็นทางการ และทั้งหมด เพราะผมไม่ใช่ผู้เชี่ยวชาญ การศึกษาคือการลองผิด เป็นครู ลองถูกเป็นตัวเรา ที่สามารถศึกษาและทำได้สำเร็จ

เอาจริงบางทีผมก็มีท้อนะครับที่ได้รับคำตอบบางครั้งเราก็ไม่เข้าใจ ด้วยกระบวนการที่หลายๆท่านตั้งใจที่จะช่วยเหลือ และมอบวิชาให้กับหลายๆคนที่เข้ามา แต่หลายๆท่านอาจจะลืมไปว่า ในเว็บเพจแห่งนี้ไม่ได้มีแต่ผู้เชี่ยวชาญที่จะมาถามเรื่องเล็กๆ น้อยๆ เหล่านี้ อย่าลืมผู้คนที่เป็นอย่างประเภทผม ที่เข้ามาด้วยบางครั้ง บางเรื่อง เริ่มจาก 0 ก็เป็นได้ บางคำศัพท์อาจจะไม่รู้จัก บางคำสั่งอาจจะไม่เคยชิน ขอแค่คำแนะนำ ที่ไม่ต้องบอกทั้งหมดก็ได้ ด้วยกระบวนการอื่นๆ แหล่งเรียนรู้อื่นๆ เพราะอะไรครับ ถ้าเรารู้แล้วว่า คำๆนั้นมันเรียกว่าอะไร ผมคิดว่าแค่ใส่คำที่เรารู้จักไปก็ค้นหาได้แล้ว แต่อย่าลืมว่าภาษาการเขียนโปรแกรมมันมีเยอะแยะไป บางคนรู้ บางคนไม่รู้ คือถ้าเราเอาความรู้เรามาเป็นเสาเอก ยังไงเราเองก็ไม่เข้าใจเสารอง การเรียนรู้ของทุกคน ทุกฝ่าย คือวันนี้ครับ และทุกๆวัน วันที่ทุกคนควรรับรู้การเรียนรู้ว่าทำไมเป็นแบบนี้ แต่ก็รู้ครับว่าตัวเราเองต้องเรียนรู้ ด้วยตัวเอง สุดท้ายการเรียนรู้ที่เราพยายามมันก็สำเร็จด้วย "การจัดการชุดความคิดของตัวเราเอง"

วันนี้ผมสำเร็จแล้วในเรื่องนี้ แต่ความสำเร็จ และปัญหา มันไม่ได้มีแค่วันนี้วันเดียว วันข้างหน้าอาจจะมีปัญหา วันข้างหน้าอาจจะเป็นวันที่สำเร็จ เพราะชีวิตคือการเรียนรู้ ไม่หยุดยั้ง เรียนรู้คน เรียนรู้งาน และทุกๆการเรียนรู้ คือ การเรียนรู้ตลอดชีวิต

ขอบคุณ thaicreate.com ที่่เป็นแหล่งเรียนรู้ขนาดใหญ่ มีปุ๋ยที่ดีบ้าง ไม่ดีบ้าง เป็นเรื่องธรรมดา
แค่เรา "จัดการชุดความคิดของตัวเราเอง" ก็จะทำให้เราสำเร็จ

ขอเป็นปุ๋ยเม็ดเล็กๆ อาจจะไม่มีสารอาหารที่มากมาย แต่ก็พอมีประโยชน์กับการเริ่มต้นการเรียนรู้เรื่องเดียวกัน ที่อาจจะมีบางคนติดปัญหาเหมือนกับผม

แค่...จัดการชุดความคิดของตัวเราเอง หลายๆอย่างก็มีทางออกเสมอ

>>> ท่านใดสามารถอธิบายได้ดีกว่าผม สามารถเสริมเป็นทักษะความรู้ให้กับหลายๆท่านที่เข้ามาศึกษาด้วยนะครับ

ขอบคุณครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-02-15 20:04:39 By : ices
 


 

No. 4



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



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


Code (PHP)
(!$value ? 'NULL' : (int)$value)


Quote:
หากเป็นค่าว่าง ให้บันทึก 0

Quote:
หากบางรายการไม่ระบุตัวเลขในฟอร์ม Input Number การส่งข้อมูลไปบันทึกจะไม่สามารถบันทึกได้ครับ เนื่องจากเป็นค่าว่าง



หมายความว่า ถ้าค่าไม่ได้ว่าง ให้บันทึก แต่ถ้าค่าว่าง ให้กำหนด 0 แล้วบันทึกใช่ไหม?

ถ้าใช่ แน่ใจหรือว่าโค้ดนั้นใช้ได้? มันไม่น่าจะได้มั้ง


var_dump(!$value);
ถ้าหาก value เป็น empty string ('') จะได้ true
value เป็น null ได้ true
value เป็น false ได้ true
value เป็น 0, '0' ได้ true

ดังนั้นแปลว่าถ้าค่าไม่ว่างไม่ใช่ 0, null, false จะบันทึกเป็น null นอกนั้นเป็นตัวเลข
แล้วมันจะกลายเป็นบันทึก 0 ได้ยังไง? มันจะกลายเป็นถ้าค่าไม่ว่างจะกลายเป็น null ซะงั้น กลายเป็นบั๊กขึ้นมาอีกตัว

ในการตรวจรับค่าจาก form (form validation)
ถ้าเป็นฟอร์มปกติ ผมก็คงบอกได้เลยว่าจะใส่เงื่อนไขไปตรงไหนยังไง แต่นี่มัน form array ซึ่งคุณเอามา foreach วน
ผมก็ไม่รู้ว่าจะตรวจทั้งหมดก่อน ถ้าถูกต้องทั้งหมดจึงจะบันทึก
หรือว่าวนไปตรวจไปบันทึกไป มีผิดบ้างก็ช่างมัน แบบนี้ก็ทำตรวจใน foreach รอบเดียวได้เลย

ถ้าจะเอาอย่างหลังก็ง่าย แต่ก็คือยอมรับว่ามันจะมี input error ได้เป็นบาง loop ถ้าผู้ใช้ไม่ได้กรอกถูกต้องทั้งหมด
อยากจะได้อะไรก็ต้องบอกให้ละเอียดสักหน่อยด้วย เพราะอยากได้คำตอบแบบย่อยง่ายแต่ถามกว้าง มันก็ยังไงอยู่?

Code (PHP)
foreach($_POST['update_score'] as $id_registacti=>$value){
    // หลังจากเริ่ม foreach ทำการ validate ข้อมูล
    if (empty($value)) {
        // ถ้าค่าที่รับมาเป็นค่าว่าง (empty ตรวจ false, null, empty string, 0, '0' ได้เป็น true)
        // กำหนดให้มันใหม่เป็นค่า 0
        $value = 0;
    }
    // update ตามปกติ
}



ประวัติการแก้ไข
2021-02-15 21:42:14
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-02-15 21:31:30 By : mr.v
 

   

ค้นหาข้อมูล


   
 

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