สอบถามการใช้ปุ่ม submit 2 ปุ่มในฟอร์ม แต่ทำงานต่างกัน

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
Tookta
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 641
ลงทะเบียนเมื่อ: 12/12/2022 9:12 am

สอบถามการใช้ปุ่ม submit 2 ปุ่มในฟอร์ม แต่ทำงานต่างกัน

โพสต์ที่ยังไม่ได้อ่าน โดย Tookta »

ในฟอร์มมีปุ่ม submit 2 ปุ่มค่ะ
ปุ่มทั้ง 2 ปุ่มทำงานเหมือนกันคือ ประมวลผล นับคำ
recap_3.PNG
recap_3.PNG (20.96 KiB) Viewed 605 times
ปุ่ม ประมวลผลและบันทึก ประมวลผลและบันทึกข้อมูลลงฐานข้อมูล ส่วนนี้ทำงานได้ปกติ
ปุ่ม ประมวณผล ต้องการใช้ทำการประมวลผลอย่างเดียว แต่ไม่บันทึกลง ฐานข้อมูล

โค้ด: เลือกทั้งหมด

<input type="submit" name="submit" class="btn btn-success" value="<?php echo $lang_process1; ?>">
                        <input type="submit" name="submit" class="btn btn-success" value="<?php echo $lang_process2; ?>">
มีวิธีไหนในการเช็ค หรือการแยกการทำงานบ้างคะ ขอบคุณค่ะ
ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 21988
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: สอบถามการใช้ปุ่ม submit 2 ปุ่มในฟอร์ม แต่ทำงานต่างกัน

โพสต์ที่ยังไม่ได้อ่าน โดย tsukasaz »

ใช้ javascript ไปดักที่ปุ่มได้ครับ อาจจะตั้ง input แบบเป็น hidden มา

โค้ด: เลือกทั้งหมด

<input type="hidden" name="save_history" value="0">
เวลาที่คลิกปุ่ม submit แบบบันทึกด้วย ก็ให้ javascript มาปรับ value เป็น 1 เราก็มาเช็คจากค่านี้ที่ส่งไปกับ form ได้
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)
ภาพประจำตัวสมาชิก
Tookta
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 641
ลงทะเบียนเมื่อ: 12/12/2022 9:12 am

Re: สอบถามการใช้ปุ่ม submit 2 ปุ่มในฟอร์ม แต่ทำงานต่างกัน

โพสต์ที่ยังไม่ได้อ่าน โดย Tookta »

สามารถทำได้แล้วค่ะ ใช้วิธีนี้ค่ะ
notsave_forshow คือ id ของปุ่มประมวลผล (ไม่บันทึก)

โค้ด: เลือกทั้งหมด

<script>
            document.getElementById("notsave_forshow").addEventListener("click", function(event){
               event.preventDefault();//ไม่ต้องทำตามสคิปก่อนหน้า = ไม่ submit 
               const user = document.getElementById("cha_counter_username").value;
               const detail_count = document.getElementById("cha_counter_detail").value;
               const lang = '<?php echo $lang; ?>';
               window.location = 'index.php?user='+user+'&detail='+detail_count+'&lang='+lang;
               
            });
            </script>
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41230
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: สอบถามการใช้ปุ่ม submit 2 ปุ่มในฟอร์ม แต่ทำงานต่างกัน

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

getElementById มาจากไหนครับ ในตัวอย่างโค้ดไม่ได้กำหนด id ให้ input object ไว้ :?:

ปัญหานี้
เช็ค if ใน php ว่า user กดปุ่มไหนก็ได้แล้วครับ

ปัญหาตามตัวอย่างโค้ดที่ยกมาผิด เพราะตั้งชื่อปุ่ม ปุ่มชื่อซ้ำกัน และชื่อปุ่มไม่สื่อถึงหน้าที่มัน

โค้ด: เลือกทั้งหมด

name="submit"
:idea:
ควรตั้งชื่อให้สอดคล้องกับ หน้าที่ของมัน
เปลี่ยนเป็น

โค้ด: เลือกทั้งหมด

name="save"
อีกปุ่มเปลี่ยนเป็น

โค้ด: เลือกทั้งหมด

name="save_logs"
ใน php ดัง if เช่น

โค้ด: เลือกทั้งหมด

if($_POST['save']) {
// TOOD save 
}

if($_POST['save_log']) {
// TOOD save & logs 
}
:!: แก้ปัญหาแบบนั้นจะทำได้ได้ปัญหาอื่นตามมา ถ้าส่งข้อมูลแบบ GET
ถ้า cha_counter_detail ข้อมูลเยอะๆ จะส่งไปไม่หมด
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
Tookta
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 641
ลงทะเบียนเมื่อ: 12/12/2022 9:12 am

Re: สอบถามการใช้ปุ่ม submit 2 ปุ่มในฟอร์ม แต่ทำงานต่างกัน

โพสต์ที่ยังไม่ได้อ่าน โดย Tookta »

mindphp เขียน: 01/02/2023 3:16 pm ปัญหานี้
เช็ค if ใน php ว่า user กดปุ่มไหนก็ได้แล้วครับ
ลองวิธีนี้ค่ะ

โค้ด: เลือกทั้งหมด

<input type="submit" name="notsave_forshow" class="btn btn-success" value="<?php echo $lang_process1; ?> " id="notsave_forshow">
                        <input type="submit" name="save_forshow" class="btn btn-success" value="<?php echo $lang_process2; ?>">
หน้า insert ข้อมูล

โค้ด: เลือกทั้งหมด

$save_forshow = !empty ($_POST['save_forshow']) ? $_POST['save_forshow'] : '';

if($save_forshow != ''){
$sql = "INSERT INTO tools_character_counter(cha_counter_username,cha_counter_detail,cha_counter_ip,cha_counter_date)
VALUES('$cha_counter_username','$cha_counter_detail','$cha_counter_ip',CURRENT_TIMESTAMP)";
 $result = mysqli_query($conn , $sql) or die  ("Error in query: $sql " . mysqli_error());
}
$results = isset($result) ? $result : '' ;
 if($save_forshow != '' || $results ){ 
	echo "<script type='text/javascript'>";
	echo "window.location = 'index.php?user=".$cha_counter_username."&detail=".$cha_counter_detail."&lang=".$lang."';";
	echo "</script>";
	}
	else{
	echo "<script type='text/javascript'>";
	echo "window.location = 'index.php'";
	echo "</script>";
}
แต่ไม่สามารถทำได้ค่ะ พอกดแล้วเค้าเงื่อนไขของ else

โค้ด: เลือกทั้งหมด

else{
	echo "<script type='text/javascript'>";
	echo "window.location = 'index.php'";
	echo "</script>";
ช่วยแนะนำเพิ่มเติมทีค่ะ
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: Bing [Bot] และบุคลทั่วไป 101