|
|
|
Loop ฟอร์มแล้ว ข้อมูลบันทึกแค่ 2 แถวครับ รบกวนช่วยดูให้ทีครับ |
|
|
|
|
|
|
|
งงเหมือนกันครับ เท่าที่ดูจากโค้ด น่าจะเข้า 8 แถวมากกว่าเข้าแค่ 2 แถวนะครับ
แต่โค้ดนี้ผิดแน่ๆ จะอธิบายเท่าที่เห็นก็แล้วกันครับ
ที่ว่าผิดก็เพราะว่า loop for สร้าง input ทั้งหมด 8 ตัวครับ 4 ครั้ง ครั้งละ 2 input
ดังนั้นใน $_POST จะมีสมาชิก 8 ตัว ไม่ใช่ 4
ได้แก่
$_POST['Opt_title'][0] - $_POST['Opt_title'][3]
$_POST['Opt_price'][0] - $_POST['Opt_price'][3]
ดังนั้นเมื่อ for($i=0;$i<count($_POST);$i++){
count($_POST) จะเท่ากับ 8 ทำให้ค่า $i มันเกินจากที่สร้างไว้คือ 4
ดังนั้นทางที่ดีควรจะกำหนดชื่อ input ใหม่ครับ จัดกลุ่มมันด้วยตัวแปร $i ไปเลย
เช่น name=\"Opt_title[$i]\"
แล้วตอนอ่านเพื่อ INSERT ให้ตรวจสอบความถูกต้องของ index (ค่า $i) ก่อน
Code (PHP)
<?php
include ("./config.php");
// for($i=0;$i<count($_POST);$i++){
// วนลูปไม่รู้จบ
for ($i = 0; $i < PHP_INT_MAX; $i++) {
// ตรวจว่ามีข้อมูลตามค่า $i หรือไม่
if (!isset($_POST['Opt_title'][$i], $_POST['Opt_price'][$i])) {
// ถ้าไม่มี แสดงว่าไม่มีข้อมูลส่งมา หรือข้อมูลครบแล้ว ก็ออกจากลูปซะ
break;
}
$mysql->query("
INSERT INTO item_price
SET title = %s,
price = %s
",
array(
$_POST['Opt_title'][$i],
$_POST['Opt_price'][$i]
)
);
}
?>
<form method="post">
<?php
for($i=0; $i<4; $i++)
{
echo "สินค้า : <input type=text name=\"Opt_title[$i]\" size=38 > ราคา :<input type=text name=\"Opt_price[$i]\" size=5 ><br/>";
}
?>
<input type="submit">
</form>
|
|
|
|
|
Date :
2015-06-11 17:11:23 |
By :
phpinfo() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากครับ ผมคงจะเขียนโค้ดและคิดหลักการผิดไปเองครับ
|
|
|
|
|
Date :
2015-06-13 08:49:19 |
By :
ru |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|