|
|
|
เพิ่มข้อมูลจาก checkbox แล้วข้อมูลมันเข้ามั่วอ่ะครับ บางอันก็ไม่เข้า |
|
|
|
|
|
|
|
ระบบคือ ผมคิวรี่รายชื่อทั้งหมดของออกแผนกมา แล้วใส่ checkbox ด้านหน้า พร้อมทั้งใส่อาร์เรย์ไปแล้ว รวมถึงซ่อนinputไว้เพื่อส่งข้อมูลขึ้นไป ตอนนี้ผมมีพนักงานทั้งหมด 4 คน ถ้าผมติ้กเลือกทุกคน ข้อมูลเข้าฐานข้อมูลทุกคน แต่ถ้าผมเลือกแค่ 3 คน ไม่ว่าจะเป็นคนใดก็ตาม คนล่างสุดจะไม่มีชื่อในฐานข้อมูล รบกวน เพื่อนๆพี่ เช็คให้ทีนะครับ ว่าเป็นที่ลูป หรือ input กัน หรือเป็นที่ตรงไหน
จากบทความ อันนี้เลยครับ https://www.thaicreate.com/php/forum/051650.html ล่างสุดของadmin ผมทำออกมาได้ ตามนี้
Code (PHP)
<? $strSQL = "SELECT * FROM tbprofile";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<table width="406" border="1">
<tr>
<td> </td>
<td align="center">รหัสประจำตัว</td>
<td align="center">ชื่อ</td>
<td align="center"> </td>
</tr>
<?
while($objResult = mysql_fetch_array($objQuery))
{
?>
<tr>
<td width="68" align="center"><input type="checkbox" name="chk_id[]" value="<?=$objResult["id"];?>" /></td>
<td width="81" align="center"><?=$objResult["id"];?>
<input type="hidden" name="id[]" value="<?=$objResult["id"];?>"/></td>
<td width="131"><?=$objResult["name_thai"];?><input type="hidden" name="name[]" value="<?=$objResult["name_thai"];?>"/></td>
<td width="98" align="center"><?=$objResult["part"];?><input type="hidden" name="status[]" value="unread"/><input type="hidden" name="date" value="<?php echo date("Y-m-d H:i:s"); ?>"/></td>
</tr>
<?
}
?>
</table>
ส่วนโค้ดการเพิ่มข้อมูล
Code (PHP)
<? for($i=0;$i<count($_POST["chk_id"])+1;$i++)
{
if($_POST["chk_id"][$i] != "")
{
$strSQL = "INSERT INTO sent_doc ";
$strSQL .="(id,name_thai,status,id_doc,title,date) ";
$strSQL .="VALUES ";
$strSQL .="('".$_POST["chk_id"][$i]."','".$_POST["name"][$i]."','".$_POST["status"][$i]."' ";
$strSQL .=",'".$_POST["id_doc"]."','".$_POST["title"]."','".$_POST["date"]."') ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
echo 'ส่งให้คุณ'.$_POST["name"][$i].'เรียบร้อยแล้ว<br>' ;
}
}
echo "<script type='text/javascript'>alert('เพิ่มเอกสารในระบบเรียบร้อยแล้วค่ะ')</script>";
echo '<script language=Javascript>top.location.href="index.php";</script>';
}
?>
ขออภัยที่ช่วงนี้รบกวนบ่อยไปนะครับ งานจี้ตูดมากเลยตอนนี้ ขอบคุณทุกคนครับ
Tag : PHP, MySQL, HTML/CSS, Ajax, CakePHP
|
|
|
|
|
|
Date :
2014-05-28 17:00:23 |
By :
benzsara |
View :
1087 |
Reply :
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<? $strSQL = "SELECT * FROM tbprofile";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<table width="406" border="1">
<tr>
<td> </td>
<td align="center">รหัสประจำตัว</td>
<td align="center">ชื่อ</td>
<td align="center"> </td>
</tr>
<?
while($objResult = mysql_fetch_array($objQuery))
{
?>
<tr>
<td width="68" align="center"><input type="checkbox" name="chk_id[<?=$objResult["id"];?>]" value="<?=$objResult["id"];?>" /></td>
<td width="81" align="center"><?=$objResult["id"];?>
<input type="hidden" name="id[<?=$objResult["id"];?>]" value="<?=$objResult["id"];?>"/></td>
<td width="131"><?=$objResult["name_thai"];?><input type="hidden" name="name[<?=$objResult["id"];?>]" value="<?=$objResult["name_thai"];?>"/></td>
<td width="98" align="center"><?=$objResult["part"];?><input type="hidden" name="status[<?=$objResult["id"];?>]" value="unread"/><input type="hidden" name="date" value="<?php echo date("Y-m-d H:i:s"); ?>"/></td>
</tr>
<?
}
?>
</table>
Code (PHP)
<?
foreach($_POST["chk_id"] as $val)
{
if($_POST["chk_id"][$val] != "")
{
$strSQL = "INSERT INTO sent_doc ";
$strSQL .="(id,name_thai,status,id_doc,title,date) ";
$strSQL .="VALUES ";
$strSQL .="('".$_POST["chk_id"][$val]."','".$_POST["name"][$val]."','".$_POST["status"][$val]."' ";
$strSQL .=",'".$_POST["id_doc"]."','".$_POST["title"]."','".$_POST["date"]."') ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
echo 'ส่งให้คุณ'.$_POST["name"][$val].'เรียบร้อยแล้ว<br>' ;
}
}
echo "<script type='text/javascript'>alert('เพิ่มเอกสารในระบบเรียบร้อยแล้วค่ะ')</script>";
echo '<script language=Javascript>top.location.href="index.php";</script>';
}
?>
|
|
|
|
|
Date :
2014-05-28 17:33:21 |
By :
WiTT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
บอกหน่อยครับผม ว่ามันต่างจากของเดิมอย่างไรบ้าง กับ
foreach($_POST["chk_id"] as $val)
อันนี้อ่ะครับ รบกวนขอเก็บความรู้หน่อยนะครับ ขอบคุณมากครับผม
|
|
|
|
|
Date :
2014-05-28 17:59:19 |
By :
benzsara |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แบบเดิมนั้นแบบฟอร์มจะมี name ตามด้วยเลข ลำดับ
แต่แบบที่สองแบบฟอร์มจะมี name[รหัสของแต่ละเรคอร์ด]
จึงใช้ foreach ดึงค่าแบบที่สองที่เป็นอาร์เรย์ออกมา
แต่แบบแรกใช้ for เพื่อดึงข้อมูลตามลำดับ 1 2 3
งงมั้ย ? ผมรู้สึกจะอธิบายเร็วไปหน่อย ฮ่าๆๆๆ
|
|
|
|
|
Date :
2014-05-28 20:37:17 |
By :
{Cyberman} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แบบที่คุณ {Cyberman} บอกแหร่ะครับ
ตอนแรกคุณตั้งชื่อ checkbox เป็นแบบ name[] ซึ่ง index array จะเริ่มที่ 0 เสมอ
แต่ checkbox มันจะส่งค่าไปได้ก็ต่อเมื่อคุณติ๊กเลือก หรือมีค่าเป็น checked เท่านั้น
ส่วน input ตัวอื่น เช่น hiden text จะส่งไปทั้งหมดที่อยู่ใน form
เพราะงั้นสมมติ คุณเลือกที่ไอดี 10005735 คนเดียว แล้วส่งค่าไป
ค่าที่จะได้ของ hiden name คุณก็จะเป็นของไอดี 10005732 เพราะไอดีมันเริ่มที่ 0
แต่แบบที่สองแบบฟอร์มจะมี name[รหัสของแต่ละเรคอร์ด] ซึ่งผมคิดว่า รหัสของแต่ละเรคอร์ด ของคุณไม่น่าจะซ้ำกัน
ผมเลยเอามาทำเป็น index array แทนที่จะให้มันเริ่มต้นที่ 0 เอง
ส่วนการใช้งาน foreach ก็ค้นหาวิธีใช้ใน google เอาเลยครับ
|
|
|
|
|
Date :
2014-05-28 21:04:48 |
By :
WiTT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ๋อ ขอบคุณมากครับ ผมว่าแล้วว่าต้องเป็นที่ loop ตรงการบันทึกข้อมูล
เดี๋ยวพรุ่งนี้ไปที่ทำงานแล้วจะลองทำดูครับ ขอบคุณมากๆครับ
|
|
|
|
|
Date :
2014-05-28 23:48:29 |
By :
benzsara |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|