เขียนยังไงดีครับ ไม่ให้ refresh page แล้วระบบต้อง add ข้อมูลลง db อีกรอบ

เริ่มโดย okgofun, 16 ตุลาคม 2007, 01:49:20

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

okgofun

เขียนยังไงดีครับ ไม่ให้ refresh page แล้วระบบต้อง add ข้อมูลลง db อีกรอบ

คือเช่น ถ้าผมทำไฟล์ a.php ไว้ แล้วให้โพสต์ข้อความ ซึ่ง function ที่จัดเก็บข้อความ หรือพูดง่ายๆว่า <form action="a.php"> นั่นเอง ให้โพสต์ไปที่ไฟล์เดิมนี่หละ (ประมาณว่าหลีกเลี่ยงไม่ได้ ที่จะให้ action ไปไฟล์อื่นหนะคับ)

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

ปัญหาคือ ถ้าเรากด F5 หรือ Refresh ระบบมันก็จะทำ action นั้นเหมือนเดิมเลยครับ คือเก็บข้อมูลเข้าฐานข้อมูล

ไม่ทราบว่าผมควรทำยังไงดีครับ จะเขียนโค๊ดป้องกันกรณีแบบนี้ยังไงดีครับ เพราะต้องการให้โพสต์ปุ๊บระบบเก็บข้อมูลแล้วแสดงผลในหน้านั้นเลยทันที โดยไม่ได้ใช้ ajax ด้วย แต่มันจะแย่ตรงที่กด refresh แล้วกลายเป็นจำ action เดิมนี่สิ

ขอบคุณครับ  :P

จะต้องทำให้ได้เดือนละอย่างต่ำ $1,000 แล้วก็ไม่โดนแบน

UnzO

ไม่ทราบว่า ข้อมูลที่จะให้ใส่ลงไปเนี้ย เป็นข้อมูลเดิมรึป่าวหว่า

คือในกรณีของผมก็คล้ายๆ กันครับ แต่ผมไม่การข้อมูลเดิม ที่มีใน Database แต่ถ้าเป็นข้อมูลใหม่ผมเอาหมด ก็ใช้วิธีเช็ตจาก Database เลยว่ามีรึป่าว คือการ เอา ข้อมูลใหม่ มา query ดูจาก database ถ้ามี ก็ไม่เพิ่ม แต่ถ้าไม่มีก็เพิ่ม ลงไปใหม่ ผมทำแบบนี้อ่าครับ

ไม่รู้ผม งง กับคำถามรึป่าวแหะๆๆ

ปล. อีกอย่างผมก็ยังไม่ค่อยเก่ง php งับ แหะๆ  :P

Newbies

ก็ให้สคริบมันอยู่บนสุดเลย รับค่า ประมวลผลเสร็จ แล้วใส่ header location หน้าเดิมมัน น่าจะแก้ได้นะ



DSci

วิธีผม ใส่ Primary Key ที่ Database เลยครับ
ไม่งั้นก็เช็คข้อมูลก่อน ว่ามีใน DB หรือยัง (เหมือนคุณ UnzO ครับ)

Tee++;

1. เก็บลง DB
2. Get Last ID ออกมา
3. header ไป หน้าที่จะแสดงผล เ่ช่น

header("Location: view.php?id=lastid");
[direct=http://laravel.in.th]Laravel in Thai[/direct]
[direct=http://jquerytips.com]jQueryTips by Tee++;[/direct]
[direct=https://www.facebook.com/jQueryTips]jQueryTips Page[/direct]
[direct=https://www.facebook.com/Laravel.in.th]Laravel in Thai Page[/direct]
[direct=https://twitter.com/Teepluss]Teepluss's Twitter[/direct]