• บทความ ในนี้จะไม่มีการ update แล้วนะครับ บทความทั้งหมดจะไป update ที่ Modoeye Articles
  • ระบบยังไม่สมบูรณ์ ระบบสมาชิกยังใช้ไม่ได้นะครับ ติดปัญหาไม่สามารถ post ได้ แจ้งปัญหาได้ทาง E-mail เลยครับ
คนผ่านทาง
คนผ่านทาง
Sat 4 Jul 2009 15:06:02

พอดีผมได้รับคำสั่งให้ทำระบบเช็คชื่อนักเรียน โดยการดึงข้อมูลนักเรียนจากฐานข้อมูลเพื่อแสดงรายชื่อออกมาแล้วมี radiobutton เป็นตัวเช็คว่ามาหรือไม่มา แล้วส่งค่าเอาไปเก็บไว้ในฐานข้อมูล ซึ่งผมได้ลองทำแล้วจะติดที่การกำหนดชื่อของ raiobutton ใครมีไอเดียช่วยผมด้วยครับ

webmaster
webmaster
Sat 4 Jul 2009 16:34:33
ก็สามารถใช้ prefix แล้วตามด้วย id ของนักเรียนแต่ละคนก็ได้ครับ เช่น
stu1234
จากนั้นก็เอาไปตัด stu ออกแล้วก็เอาไป update ในฐานข้อมูลอีกที
คนผ่านทาง
คนผ่านทาง
Sat 4 Jul 2009 20:40:15
ของคุณสำหรับคำแนะนำครับ พอดีผมมือใหม่ยังไม่ค่อยแม่นครับ รบกวนช่วยขยายความ กับตัวอย่างด้วยครับ ของคุณครับ
webmaster
webmaster
Sat 4 Jul 2009 21:03:06
<input type="radio" name="stu1234" id="stu1234" value="1" />

จากนั้นก็รับค่ามาก็ replace เอาแต่ข้อมูล
foreach($_POST as $name=>$value){
$_POST[@preg_replace("/^stu/is", "" $name)] = $value;
}

น่าจะประมาณนี้ครับ ลองเอาประยุกต์ดูครับ
คนผ่านทาง
คนผ่านทาง
Sun 5 Jul 2009 09:59:48

ผมลองเอาไปทำดูแล้วแต่ยังงงๆอยู่ครับเลยเอาตัวอย่างโค้ดมาให้ดู
หน้าส่งข้อมูลครับ
<?
global $con;
$conn=mysql_connect ("localhost","","");
if ( !$conn)
print("Error");
else
{      
 mysql_select_db("check_stu",$conn);
 $sql = "select * from students";
 $result = mysql_query($sql) or die(" SELECT HAS ERROR $result".mysql_error());
 //$rs = mysql_fetch_row($result);
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.style13 {font-family: Tahoma; font-size: 10pt; font-weight: bold; color: #003366; }
.style14 {
 font-family: Tahoma;
 font-size: 14pt;
 font-weight: bold;
 color: #0033CC;
}
-->
</style>
</head>

<body>
<form method="post" action="add.php">
  <table width="800" border="0" align="center" cellpadding="0" cellspacing="1" style="border:1px solid gray">
    <tr bgcolor="#D5E6F7" >
      <td height="29" colspan="8"><div align="center" class="style14">รายชื่อนักเรียนชั้น </div></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td width="39" align="center" bgcolor="#EEEEEE" style="border:1px solid gray"><span class="style13">เลขที่</span></td>
      <td width="84" align="center" style="border:1px solid gray"><span class="style13">รหัสนักเรียน</span></td>
      <td width="170" align="center" bgcolor="#EEEEEE" style="border:1px solid gray"><span class="style13">ชื่อ-นามสกุล</span></td>
      <td width="50" align="center" bgcolor="#EEEEEE" style="border:1px solid gray"><span class="style13">ชั้น</span></td>
      <td width="166" align="center" bgcolor="#EEEEEE" style="border:1px solid gray"><span class="style13">ครูผู้สอน</span></td>
      <td width="147" align="center" bgcolor="#EEEEEE" style="border:1px solid gray"><span class="style13">รายวิชา</span></td>
      <td colspan="2" align="center" bgcolor="#EEEEEE" style="border:1px solid gray"><span class="style13">สถานะ</span></td>
    </tr>
    <?
$i = 1;
 while($row = mysql_fetch_array($result))
 {

  if($count==0)
  {
?>
    <tr bgcolor="#FBF5E3" onmouseover="this.style.backgroundColor='#D8F8FA'" onmouseout="this.style.backgroundColor='#FBF5E3'">
      <td align="center" bordercolor="#EEEEEE" >&nbsp;<? echo $i ?></td>
      <td align="center" bordercolor="#EEEEEE" >&nbsp;<? echo $row[id] ?></td>
      <td align="center" bordercolor="#EEEEEE" >&nbsp;<? echo $row[sex] ?><? echo $row[name] ?>    <? echo $row[lastname] ?></td>
      <td align="center" bordercolor="#EEEEEE" >&nbsp;<? echo $row[classroom] ?></td>
      <td align="center" bordercolor="#EEEEEE" >&nbsp;</td>
      <td bordercolor="#EEEEEE" >&nbsp;</td>
      <td width="66" bordercolor="#EEEEEE" ><div align="center">
        <label>
        <input name="status<?$row[id]?>" type="radio" value="0" />
        </label>
      มา</div></td>
      <td width="67" bordercolor="#EEEEEE" ><div align="center">
   <input name="status<?$row[id]?>" type="radio" value="1" />
   ไม่มา</div></td>
    </tr>
    <?
 $count=1;
  }
else
{
?>
    <tr bgcolor="#FFFEF4" onmouseover="this.style.backgroundColor='#D8F8FA'" onmouseout="this.style.backgroundColor='#FFFEF4'">
      <td align="center" bordercolor="#EEEEEE" >&nbsp;<? echo $i ?></td>
      <td align="center" bordercolor="#EEEEEE" >&nbsp;<? echo $row[id] ?></td>
      <td align="center" bordercolor="#EEEEEE" >&nbsp;<? echo $row[sex] ?><? echo $row[name] ?>    <? echo $row[lastname] ?></td>
      <td align="center" bordercolor="#EEEEEE" >&nbsp;<? echo $row[classroom] ?></td>
      <td height="18" align="center" bordercolor="#EEEEEE" >&nbsp;</td>
      <td bordercolor="#EEEEEE" >&nbsp;</td>
      <td bordercolor="#EEEEEE" ><div align="center">
   <input name="status<?$row[id]?>" type="radio" value="0" />
   มา
   </div></td>
      <td bordercolor="#EEEEEE" ><div align="center">
   <input name="status<?$row[id]?>" type="radio" value="1" />
   ไม่มา
   </div></td>
    </tr>
    <?
$count=0;
}
$i++;
 } 
mysql_close($conn);
?>
    <tr bgcolor="#EEEEEE">
      <td colspan="8" align="center">&nbsp;</td>
    </tr>
    <tr bgcolor="#D5E6F7">
      <td colspan="8" align="center"><div align="center"></div></td>
    </tr>
  </table>
</form>
</body>
</html>

หน้ารับข้อมูล
<?
$id = htmlspecialchars(trim($_POST[id]));
$status = htmlspecialchars(trim($_POST[status]));

global $con;
$conn=mysql_connect ("localhost","","");
if ( !$conn)
print("Error");
else
{    
 mysql_select_db("check_stu",$conn); 
 $sql = "INSERT INTO status (id,status)";
 $sql = $sql."VALUES ('$id','$status')" ;
}

//print("<meta http-equiv='refresh' content='1;URL=showdata.php'>");

?>

ขอความกรุณาช่วยผมอีกซักครั้งครับ  ขอบคุณครับ

webmaster
webmaster
Sun 5 Jul 2009 16:59:37
คุณไม่สามารถรับข้อมูลทั้งหมดได้เพราะว่าตั้งชื่อ element เป็น statusnnn ดังนั้นคุณจึงไม่สามารถใช้
$status = htmlspecialchars(trim($_POST[status]));
เพราะว่าไม่มีตัวแปรนี้และไม่รู้ตัวแปรที่แน่นอน ผมจึงใช้ loop foreach ในตัวอย่าง code ด้านบน

ซึ่งจริงๆน่าจะเขียนได้เป็น
$student = array();
foreach($_POST as $name=>$value){
    if(@preg_match("/^status(\d+)/is", $name, $matches)){
       $student[$matches[1]] = $value;
    }
}

คุณก็จะได้ $student ที่เป็น array โดยมี index เป็น id ของนักเรียน และค่าเป็น 0 หรือ 1

การทำ record สลับสีผมเขียนบทความไว้ที่ การทำตารางสลับสีโดยใช้ PHP และมีอีกหลายบทความ อยากให้ลองอ่านครับ
Reply: การส่งค่าของ radiobutton
Name:
E-mail:
Verify: Verify code