|
|
|
ทำ Multi chkbox โดยดึงข้อมูลจากฐานข้อมูล แล้ว insert ไม่ได้ ทำไงดีคะ |
|
|
|
|
|
|
|
พอดีอ่านบทความในเว็บ นี้ค่ะ แล้วเจอเรื่อง multi ทั้งหลายแหล่ คิดว่าตรงกับที่ต้องการใช้พอดีเลยทำดู แต่ติดปัญหาตอน ที่จะบันทึกลงฐานข้อมูลนี่แหละค่ะ รบกวนดูโค้ดด้วยนะคะ ใช้โค้ดของ Multi chkbox delete มาดัดแปลงจ้า
Code (PHP)
<html>
<head>
<title>ThaiCreate.Com PHP & MySQL Tutorial</title>
</head>
<body>
<script language="JavaScript">
function ClickCheckAll(vol)
{
var i=1;
for(i=1;i<=document.frmMain.hdnCount.value;i++)
{
if(vol.checked == true)
{
eval("document.frmMain.chk"+i+".checked=true");
}
else
{
eval("document.frmMain.chk"+i+".checked=false");
}
}
}
function onSaving()
{
if(confirm('Do you want to Saving ?')==true)
{
return true;
}
else
{
return false;
}
} </script>
<form name="frmMain" action="add_money.php" method="post" OnSubmit="return onSaving();">
<?
include("connect.php");
$strSQL ='SELECT m.id_m AS id, m.name_m AS name, m.idcard_m AS idcard, m.address_m AS address, m.rdate_m AS rdate, v.id_village AS village, v.village AS vill, s.id_status AS '
. ' status , s.status AS sta, w.id_welfare AS welfare, w.welfare AS wel,sa.id_saving As saving,sa.saving As sav'
. ' FROM member m, village v, '
. ' status s, welfare w,saving sa'
. ' WHERE m.id_welfare = w.id_welfare'
. ' AND m.id_village = v.id_village'
. ' AND m.id_status = s.id_status'
. ' AND m.id_saving =sa.id_saving'
. ' AND m.id_saving =1 order by m.id_village asc';
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$res = mysql_query($sql,$con);
$Num_Rows = mysql_num_rows($objQuery) or die ("ไม่พบข้อมูล");
$result = mysql_fetch_array($objQuery);
@$row = mysql_fetch_row($res);
$id_m = $result["id"];
$name_m = $result["name"];
$idcard_m = $result["idcard"];
$address_m = $result["address"];
$rdate_m = $result["rdate"];
$bdate_m = $result["bdate"];
//ตาราง village
$id_village = $result["village"];
$village =$result["vill"];
//ตาราง status
$id_status = $result["status"];
$status = $result["sta"];
$id_saving = $ $result["saving"];
$saving = $ $result["sav"];
?>
<table width="600" border="1" align="center">
<tr>
<th width="150"> <div align="center">ชื่อ </div></th>
<th width="200" align="center"> <div align="center">เลขบัตรประชาชน</div></th>
<th width="70"> <div align="center">บ้านเลขที่</div></th>
<th width="50"> <div align="center">หมู่ </div></th>
<th width="130"> <div align="center">เป็นสมาชิกเมื่อ</div></th>
<th width="70"> <div align="center"> ออมเงิน
<input name="CheckAll" type="checkbox" id="CheckAll" value="30" onClick="ClickCheckAll(this);">
</div></th>
</tr>
<?
$i = 0;
while($objResult = mysql_fetch_array($objQuery))
{
$i++;
?>
<tr>
<td><div align="left"><?=$objResult["name"];?></div></td> //ส่วนนี้ในโค้ด multi insert ของเว็บเป็นการรับค่ามามี เป็น textbox โดย name="ตัวแปร $i" อยากทราบว่ากรณีที่ดึงข้อมูลจากฐานข้อมูลมา $i จะแทรกตรงไหนของโค้ดนี้
<td><div align="center"><?=$objResult["idcard"];?></td>
<td><div align="center"><?=$objResult["address"];?></td>
<td><div align="center"><?=$objResult["village"];?></div></td>
<td align="right"><?=$objResult["rdate"];?></td>
<td align="center"><input type="checkbox" name="deposit[]" id="chk<?=$i;?>" value="30"></td>
</tr>
<?
}
?>
</table>
<input type="submit" name="submit" value="ตกลง" >
<?
mysql_close();
?>
<input type="hidden" name="hdnCount" value="<?=$i;?>"> //ค่านี้ส่งไปแล้วอีกหน้าแสดงค่าได้
<input type="hidden" name=" <?=$objResult["name"];?>"> // ลอง hidden ส่งค่าไปดู ไม่สามารถแสดงได้
</body>
</html>
นี่เป็นตัวโค้ดเพิ่มข้อมูลลงฐานข้อมูล
Code (PHP)
<html>
<head>
<title>ThaiCreate.Com PHP & MySQL Tutorial</title>
</head>
<body>
<?
include "connect.php";
echo $_POST["hdnCount"]; //ทดสอบค่าตัวแปร ตัวนี้เห็น
echo $_POST["id_m"]; // ตัวนี้ไม่แสดงเลย
for($i=1;$i<=$_POST["hdnCount"];$i++)
{
if($_POST["name_m$i"] != "")
{
$strSQL = "INSERT INTO customer ";
$strSQL .="(id_m,id_saving_sts,date,deposit) ";
$strSQL .="VALUES ";
$strSQL .="('".$_POST["id_m"]."','".$_POST["id_saving_sts"]."', ";
$strSQL .="'".$_POST["date"]."' ";
$strSQL .=",'".$_POST["deposit"]."','".$_POST[""]."', ";
$strSQL .="'".$_POST[""]."') ";
$objQuery = mysql_query($strSQL);
}
}
echo "<br>Save Done. Click <a href='all_list.php'>here</a> to view.";
mysql_close($con);
?>
</body>
</html>
ต้อง hidden ค่าที่ต้องการส่งก่อนรึเปล่า อีกหน้าถึงจะแสดงได้แล้ว การแสดงค่าจากโค้ดนี้ ทำได้ยังไงเหรอ
จากที่ลอง ปริ้นดูมันไม่ขึ้น ตอนนี้งงกับตัวเองมากเลย ใกล้จะส่งงานแล้วด้วย ทำยังไงดี
เพราะ ที่จะเอาลงฐานข้อมูลแค่บางส่วนเท่านั้น ที่เหลือ ใช้ช่วยในการแสดงรายละเอียดเฉยๆ ค่ะ
Tag : PHP, MySQL
|
|
|
|
|
|
Date :
2011-02-13 10:12:07 |
By :
หมูอ้วนบ้าบอ |
View :
1471 |
Reply :
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
for($i=1;$i<=$_POST["hdnCount"];$i++)
{
if($_POST["name_m"][$i] != "")
{
$strSQL = "INSERT INTO customer ";
$strSQL .="(id_m,id_saving_sts,date,deposit) ";
$strSQL .="VALUES ";
$strSQL .="('".$_POST["id_m"][$i]."','".$_POST["id_saving_sts"][$i]."', ";
$strSQL .="'".$_POST["date"][$i]."' ";
$strSQL .=",'".$_POST["deposit"][$i]."') ";
$objQuery = mysql_query($strSQL);
}
}
|
|
|
|
|
Date :
2011-02-13 10:58:50 |
By :
PlaKriM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณค่ะพี่ ไม่ทราบว่าตัวแปร $i ต้องเอาแทรกไว้ในโค้ด ของหน้ารับจ้อมูล ด้วยรับค่ารึเปล่า
ตอนนี้ยัง insertไม่ได้อยู่ดี เอาเป็นว่าค่าที่แสดงในหน้าแรก แค่แสดงรายละเอียดเท่านั้นค่ะ
ส่วนค่าข้อมูลที่จะ insert ไม่ได้เอามาตัวแปรแสดงผล คือหนู จะส่งค่าตัวแปร เหล่านี้
เช่น $id_m = $result["id"]; ไปให้อีกหน้ายังไงคะ
ลอง hidden ส่งไปก็ ปริ้นค่าดูไม่ได้ค่ะ
Code (PHP)
<input type="hidden" name="id" value="<?=$objResult["id"] ;?>"> //ต้องแทรกตัวแปร $i ไปด้วยรึเปล่าหากแทรกเอาไว้ตรงไหนคะ
<input type="hidden" name="id" value="<?=$objResult["id"][$i] ;?>"> //แบบนี้error เลยอะ
ส่วนอีกหน้า ก่อน insert ปริ้นดูค่ายังไงเหรอรบกวนด้วยนะคะ ยังไม่ได้นอนเลย ตั้งแต่เมื่อคืนแล้ว
ที่จริงหนู ทำเอกสารโปรเจค ส่วนโค้ดนี้เพื่อนมันทำ ตอนนี้มันไม่สบายเลยต้องทำแทน T T
รบกวนด้วยนะคะ
|
|
|
|
|
Date :
2011-02-13 11:17:57 |
By :
หมูอ้วนบ้าบอ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<input type="hidden" name="id[]" value="<?=$objResult["id"] ;?>">
ส่งแบบอาร์เร ใส่ [] ไว้หลังชื่อ element เวลารับก็ใช้ ['id'][$i]
|
|
|
|
|
Date :
2011-02-13 12:03:24 |
By :
PlaKriM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอนนี้ ส่งค่าแล้วแสดงค่าได้แล้วค่ะ (บางตัว )ทำมาทั้งวัน คำถามมีเป็นหมื่นพัน กลัวรำคาญกันค่ะ จนปัญญาแล้วกลั้นใจมาถาม อิอิ
ปัญหาตอนนี้คือ มันแอดลงฐานข้อมูล แต่ค่าที่ได้เป็น 0 ทั้งหมดแก้ไขได้ ดูใน localhost
Code (PHP)
<?
include 'connect.php';
$id_saving_sts=1; // บรรทัดนี้กำหนดค่าให้ตัวแปรค่ะ
$deposit=30; // บรรทัดนี้กำหนดค่าให้ตัวแปรค่ะ
for($i=0;$i<count($_POST["chkDel"]);$i++)
{
echo "<br>";
echo "รหัส";
echo $_POST["chkDel"][$i];// ตัวแปร id ถูกส่งมาจากอีกหน้า เก็บไว้ในตัวแปรนี้ เป็นค่า ที่สามารถ ดูได้
echo "<br>";
echo "รหัสสถานะ";
echo $_POST["id_saving_sts"][$i];
echo "<br>";
echo "วันที่สมัคร";
$Y= date("Y")+543;
$rdate_m = date("$Y-m-d");
echo $rdate_m;
echo "<br>";
echo "เงินฝาก";
echo "$deposit";
echo "<br>";
//คำสั่ง นี้มัน insert ไม่ลง เชคตัวแปร หมดแล้วนะ
if($_POST["chkDel"][$i] != "")
{
$strSQL = "INSERT INTO saving_money ";
$strSQL .="(id_m,id_saving_sts,saving_date,deposit) ";
$strSQL .="VALUES ";
$strSQL .="('".$_POST["chkdel"][$i]."','".$_POST["id_saving_sts"][$i]."', ";
$strSQL .="'".$_POST["rdate_m"][$i]."' ";
$strSQL .=",'".$_POST["deposit"][$i]."') ";
$objQuery = mysql_query($strSQL);
}
}
echo "บันทึกเรียบร้อย";
mysql_close();
?>
|
|
|
|
|
Date :
2011-02-13 20:27:19 |
By :
หมูอ้วนบ้าบอ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ยังพยายามทำต่อ แต่ก็ไม่เป็นผลรบกวนช่วยหน่อยค่าาา
หนู คิดไม่ออกแล้ว
|
|
|
|
|
Date :
2011-02-13 23:19:09 |
By :
หมูอ้วนบ้าบอ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อธิบายใหม่นะ ว่าต้องการทำอะไรบ้าง แล้วโค๊ดที่ทำไปมีอะไรบ้าง ผลลัพธ์ที่ต้องการเป็นย้ังไง ฟอร์มเป็นยังไง
|
|
|
|
|
Date :
2011-02-13 23:39:24 |
By :
PlaKriM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือหนูจะทำ การเพิ่มข้อมูลการออมเงินน่ะค่ะ ซึ่งหน้าที่แสดงผลรายชื่อ จะทำการดึงข้อมูลจากฐานข้อมูลมา
แล้วใช้ chk box รับค่าเพื่อเพิ่มข้อมูลลงฐานข้อมูลโดยหนูได้ใช้โค้ด การลบข้อมูลแบบ multiple chk box ของเว็บนี้
มาดัดแปลงค่ะ ซึ่งหน้าตาโค้ดเป็นแบบนี้นะคะ
Code (PHP)
<html>
<head>
<title>ThaiCreate.Com PHP & MySQL Tutorial</title>
</head>
<body>
<script language="JavaScript">
function ClickCheckAll(vol)
{
var i=1;
for(i=1;i<=document.frmMain.hdnCount.value;i++)
{
if(vol.checked == true)
{
eval("document.frmMain.chkDel"+i+".checked=true");
}
else
{
eval("document.frmMain.chkDel"+i+".checked=false");
}
}
}
function onDelete()
{
if(confirm('Do you want to delete ?')==true)
{
return true;
}
else
{
return false;
}
}
</script>
<form name="frmMain" action="add_money.php" method="post" OnSubmit="return onDelete();">
<?
include("connect.php");
$strSQL ='SELECT m.id_m AS id, m.name_m AS name, m.idcard_m AS idcard, m.address_m AS address, m.rdate_m AS rdate, v.id_village AS village, v.village AS vill, s.id_status AS '
. ' status , s.status AS sta, w.id_welfare AS welfare, w.welfare AS wel,sa.id_saving As saving,sa.saving As sav'
. ' FROM member m, village v, '
. ' status s, welfare w,saving sa'
. ' WHERE m.id_welfare = w.id_welfare'
. ' AND m.id_village = v.id_village'
. ' AND m.id_status = s.id_status'
. ' AND m.id_saving =sa.id_saving'
. ' AND m.id_saving =1 order by m.id_village asc';
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$res = mysql_query($sql,$con);
$Num_Rows = mysql_num_rows($objQuery) or die ("ไม่พบข้อมูล");
$result = mysql_fetch_array($objQuery);
@$row = mysql_fetch_row($res);
$id_m = $result["id"];
$name_m = $result["name"];
$idcard_m = $result["idcard"];
$address_m = $result["address"];
$rdate_m = $result["rdate"];
$bdate_m = $result["bdate"];
//ตาราง village
$id_village = $result["village"];
$village =$result["vill"];
//ตาราง status
$id_status = $result["status"];
$status = $result["sta"];
$id_saving = $ $result["saving"];
$saving = $ $result["sav"];
?>
<table width="600" border="1">
<tr>
<th width="91"> <div align="center">ชื่อ</div></th>
<th width="98"> <div align="center">เลขประจำตัวประชาชน</div></th>
<th width="198"> <div align="center">บ้านเลขที่</div></th>
<th width="97"> <div align="center">หมู่</div></th>
<th width="59"> <div align="center">เป็นสามาชิกเมื่อ </div></th>
<th width="30"> <div align="center">ออมเงิน
<input name="CheckAll" type="checkbox" id="CheckAll" value="Y" onClick="ClickCheckAll(this);">
</div></th>
</tr>
<?
$i = 0;
while($objResult = mysql_fetch_array($objQuery))
{
$i++;
?>
<tr>
<td><div align="center"><?=$objResult["name"];?></div></td>
<td><?=$objResult["idcard"];?></td>
<td><?=$objResult["address"];?></td>
<td><div align="center"><?=$objResult["village"];?></div></td>
<td align="right"><?=$objResult["rdate"];?></td>
<td align="center"><input type="checkbox" name="chkDel[]" id="chkDel<?=$i;?>" value="<?=$objResult["id"];?>"></td>
</tr>
<?
}
?>
</table>
<?
mysql_close();
?>
<?
$Y= date("Y")+543;
$saving_date= date("$Y-m-d");
?>
<input type="submit" name="btnDelete" value="Delete">
<input type="hidden" name="hdnCount" value="<?=$i;?>"> // ค่านี้รับได้
<input type="hidden" name="saving_date" value="<?=$saving_date;?>"> //ลองส่งค่าไปแต่รับค่าไม่ได้ค่ะ
</form>
</body>
</html>
จากโค้ดดังกล่าว เป็นแบบฟอร์มการรับค่าการออมค่ะ ซึ่งค่า value ของ chkbox จะกำหนดให้เป็น ตัวแปร $id
ต่อไปเป็นโค้ดที่รับข้อมูลเพื่อ insert ลงตารางนะคะ
Code (PHP)
<html>
<head>
<title>ThaiCreate.Com PHP & MySQL Tutorial</title>
</head>
<body>
<?
include 'connect.php';
$id_saving_sts=1; // บรรทัดนี้กำหนดค่าให้ตัวแปรค่ะ
$deposit=30; // บรรทัดนี้กำหนดค่าให้ตัวแปรค่ะ
for($i=0;$i<count($_POST["chkDel"]);$i++)
{
echo "<br>";
echo "รหัส";
echo $_POST["chkDel"][$i];// ตัวแปร id ถูกส่งมาจากอีกหน้า เก็บไว้ในตัวแปรนี้ เป็นค่า ที่สามารถ ดูได้
echo "<br>";
echo "รหัสสถานะ";
echo $_POST["id_saving_sts"][$i];
echo "<br>";
echo "วันที่สมัคร";
echo $_POST['saving_date'] ;
echo "<br>";
echo "เงินฝาก";
echo $deposit;
echo "<br>";
//คำสั่ง นี้มัน insert ไม่ลง
if($_POST["chkDel"][$i] != "")
{
$strSQL = "INSERT INTO saving_money ";
$strSQL .="(id_m,id_saving_sts,saving_date,deposit) ";
$strSQL .="VALUES ";
$strSQL .="('".$_POST["chkdel"][$i]."','".$_POST["id_saving_sts"][$i]."', ";
$strSQL .="'".$_POST["rdate_m"][$i]."' ";
$strSQL .=",'".$_POST["deposit"][$i]."') ";
$objQuery = mysql_query($strSQL);
}
}
echo "บันทึกเรียบร้อย";
mysql_close();
?>
</body>
</html>
ที่ ปริ้นค่าดู มันจะแสดงผลตามที่ติ๊ก chkbox ไว้ค่ะ แสดงว่าถูกต้องแล้วใช่รึเปล่าคะ
** ตัวแปรบางตัว ยังเป้นชื่อที่ใช้สำหรับการลบอยู่เลย -*-
เข้าคำถามเลยนะคะ
สาเหตุที่มันไม่ลงฐานข้อมูลเป็นเพราะ ชื่อตัวแปรไม่ตรงกับชื่อฟิลด์ในฐานข้อมูลรึเปล่าคะ เท่าที่ศึกษามา ชื่อไม่เหมือนกัน แต่ตำแหน่งที่เพิ่มข้อมูลถูกต้องก็ใช้ได้ หนูเข้าใจถูกรึเปล่าคะ ปัญหาตอนนี้คือ ค่าข้อมูลที่มัน insert เข้าไป มันเพิ่มเข้าเพียงแถวเดียว แลัวค่าที่ได้ก้เป็น
ศูนย์ ทั้งแถวเลยค่ะ เหลือปัญหาเพียงเท่านี้แล้วค่ะ ขอบคุณที่สละเวลามาตอบคำถามนะคะ หนู นั่งทำจนเบลอไปหมดแล้ว
|
|
|
|
|
Date :
2011-02-14 00:46:37 |
By :
หมูอ้วนบ้าบอ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เพิ่มเติมค่ะ ฟิลในตาราง saving_money มีดังนี้ค่ะ
id_m, id_saving_sts, saving_date, deposit
รหัส รหัสสถานะ วันที่ออมเงิน เงินที่ออม
จำนวนเงินที่ออม จะกำหนดค่า เลยค่ะ เพราะเงื่อนไขกองทุนนี้เขาออมเงินกันตามจำนวนวัน ซึ่งหากมัน insert เข้าไปได้
หนูจะทำ drop downlist เพื่อให้ผู้ที่ใช้บันทึก เลือกค่า การออมของแต่ละเดือน ก็จะมี 28 29 30 31
** คิดว่าตอนแสดงข้อมูลหน้าแรก หนูทำผิดนะคะ ยังไม่ได้ลองทำตามที่พี่แนะนำเลย ขอโทษค่ะ หนูเบลอแล้ว
ในส่วนของโค้ด การเพิ่มข้อมูล $_POST["rdate"] หนูไม่ได้แก้ค่ะ ตอนแรกใช้ตัวแปร ชื่อ $rdate ตอนนี้ใช้ $_POST['saving_date']
ก็เหมือนเดิม ขอบคุณค่ะ
|
|
|
|
|
Date :
2011-02-14 01:03:49 |
By :
หมูอ้วนบ้าบอ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มัน insert บ่ลง เจ้า หื้อน้องยะใดนิ วันวา กะบ่ได้ไปแอ่วไหนโตยเขา
ถ้าน้องจะ ยะเหมือนตี้ insert ข้อมูลธรรมดา จะได้ก่ เช่นว่า
$cmd = "insert into `$tbname2` (`id_m`,`name_m`)
values ('$id_m','$name_m')";
แล้วเอา [$i] ใส่ไปโตยจะได้ก่ เจ้า แบบข้างบนนี้ พึ่งจะเคยเหน อย่างใดกะขอความกรุณาโตยหนาเจ้า
|
|
|
|
|
Date :
2011-02-15 20:28:30 |
By :
หมูอ้วนบ้าบอ ฮาจะไห้ละเน่อ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สมัครสมาชิกก่อนก็ดีนะ ท่าทางจะยาว
เริ่มแรก debug ก่อน
Code (PHP)
echo $strSQL;
$objQuery = mysql_query($strSQL) or die(mysql_error());
|
|
|
|
|
Date :
2011-02-15 22:24:00 |
By :
PlaKriM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ทราบว่าพี่ ยังอยู่รึเปล่าคะวันนี้หนูพร้อมแล้วค่ะ พึ่หายจากไข้ พอดีติดเพื่อน
ปัญหาของหนู คือมันแอดไม่ลงอย่างเดียวค่ะโค้ด ตอนนี้ลองใช้ Debug ที่พี่ให้ได้ผลมาเป็นแบบนี้ค่ะ
INSERT INTO saving_money (id_m,id_saving_sts,saving_date,deposit) VALUES ('','', '5' ,'') Duplicate entry '0-0' for key 1
|
|
|
|
|
Date :
2011-02-16 20:57:56 |
By :
หมูอ้วนบ้าบอ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ค่ามันไม่มามั้ง key มันเลยซ้ำ
ปล. ดู pm ด้วย
|
|
|
|
|
Date :
2011-02-16 21:25:59 |
By :
PlaKriM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|