ติก checkbox หลายหน่วยเพื่อแสดงผล... หน้าหลักเขียน ถ้าเกิด 1 แถว เรียงครบ 3 คอลัมน์แล้วก็ให้วนลูปไปเริ่มแถวใหม่ อีก 3 คอลัมน์ต่อไปเรื่อยๆ
<html>
<head>
<title>หน้าหลักเขียน</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<link href="../color/tm.css" type="text/css" rel="stylesheet">
</head>
<style type="text/css">
<!--
BODY {font-family:;font-size="14"}
A:link {text-decoration: none; color: blue }
A:visited {text-decoration: none; color: blue }
A:hover {text-decoration: none; color: darkorange }
A:active {text-decoration: none; color: blue }
p, div, td, ul li, ol li { font-family: MS Sans Serif, Microsoft Sans Serif; font-size: 10pt }
-->
</style>
<?
$division=$_POST['division'];
?>
<body leftmargin="0" topmargin="0" rightmargin="0">
<table align="center" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%">
<tr>
<td>
<table width=100% border=0 cellPadding=0 cellSpacing=0>
<tbody>
<tr>
<td valign=top width=100%>
<table background="" border=0 cellPadding=0 cellSpacing=0 width=100%>
<tbody>
<tr>
<td width="100%" align=right><img src="../../image/adv.gif" width="193" height="89"><img border=0 height=89 src="../contactlogo/contactlogo.jpg" width=585></td>
</tr>
<tr>
</tr></tbody></table>
<div align="right"></div></td></tr></tbody></table>
</td>
</tr>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF" style="border-collapse: collapse">
<form method="post" action"index.php">
<input type=hidden name=division value=".$division.">
<input type=hidden name=idmainpos value=".$idmainpos.">
<input type=hidden name=idsubpos value=".$idsubpos.">
<tr bgcolor="#D2E9FF">
<?
$s = @mssql_connect("xxx", "xxx", "xxx") or die("Couldn't connect to SQL Server on $myServer");
$d = @mssql_select_db("xxx", $s) or die("Couldn't open database $myDB");
$result = mssql_query("select division,divisionname from division");
$count=0;//นับค่าของcheckbox
$i=0; //กำหนดค่าให้เป็นค่าเริ่มต้น
while($row=mssql_fetch_array($result))
{
echo("<td bgcolor=#D2E9FF>
<input type=checkbox name=checkbox[".$count."] value=".$row['division']." checked>
<font color=darkred size=2 face=MS Sans Serif><strong>".$row['divisionname']."</strong></font>
<input type=hidden name=sum value=$count>
</td>");
?>
<?
$i++;
if(($i%3)==0) // ถ้าเกิด 1 แถว เรียงครบ 3 คอลัมน์แล้วก็ให้วนลูปไปเริ่มแถวใหม่ อีก 3 คอลัมน์ต่อไปเรื่อยๆ
{
echo("</tr><tr>");
}
}
?>
</tr>
<td colspan="3"> <div align="center"><font color="666666" size="2" face="MS Sans Serif">
<input type="submit" name="Submit3" class='FlatTextBox' value="แสดงผล" >
</font></div>
</td>
</tr>
</form>
</table>
<?
//==================================================================
//รับข้อมูลจาก checkbox เพื่อนำค่าไปเปรียบเทียบ
$sum = $_POST['sum'];
for( $i= 0; $i<$sum ; $i++) $checkbox[$i]=$_POST['checkbox'][$i];
for ($i=0; $i<count($checkbox); $i++)
{
if ($checkbox[$i]=="on")
{
$select.=$select.$checkbox[$i]." OR ";
}
}
$select = substr($select, 0, -4);
//===================================================================
//แบ่งหน้า
$pagesize=10; // กำหนดว่าหน้า 1 แสดงกี่ Reccord
$pageNo = $_GET['page'];
if ($pageNo=="") $pageNo = 1;
$s = @mssql_connect("xxx", "xxx", "xxx") or die("Couldn't connect to SQL Server on $myServer");
$d = @mssql_select_db("xxx", $s) or die("Couldn't open database $myDB");
$result = mssql_query("SELECT c.id,c.idempcontact,c.title,c.detail,c.division WHERE division=$select ORDER BY c.id DESC");
$i=1;
if( mssql_num_rows($result)>0 && $pageNo >1 && $i <= (($pageNo-1)*$pagesize)) // เลื่อนหน้า
for(;$i<=(($pageNo-1)*$pagesize) ; $i++) $row = mssql_fetch_array($result);
// แสดงรายการทั้งหมด
while( mssql_num_rows($result) > 0 && $i>=(pageNo-1)*$pagesize && $i<=$pageNo*$pagesize && $row =
mssql_fetch_array ($result))
{
?????????..
} // แสดงรายการทั้งหมด
echo("</TABLE></TABLE>");
?>
</table>
</body>
</html>
// ปัญหาก็คือ $select.=$select.$checkbox[$i]." OR "; ($select ผลลัพธ์ไม่ออกครับ) งั้นผมจะแสดงการทำงานนะครับว่าทำงานยังไง คือตอนนี้ $result = mssql_query("select division,divisionname from division"); โดยที่ divisionคือรหัสแผนก และ divisionnameคือ ชื่อแผนก ซึ่งได้ตัวอย่างดังนี้ครับ
01 การเงิน , 02 การตลาด , 03 การบัญชี ,??..ประมาณ 10 แผนก การทำงานคือ ถ้าผมติกcheckการเงินก็จะแสดงผลของการเงินออกมา หรือ ผมติกcheckbox ทั้งการเงินและการตลาด(ในโค้ดคือการเงิน OR การตลาด) ก็จะแสดงผลของการเงินและการตลาดออกมาหรือ ผมติกcheckbox ทั้งการเงินและการตลาดและการบัญชี(ในโค้ดคือการเงิน OR การตลาด OR การบัญชี) ก็จะแสดงผลของการเงินและการตลาดและการบัญชี ออกมา แต่ปัญหาผมคือค่า $select ค่ายังไม่ออกมาครับ แล้วถ้าเราเปิดเว็บออกมาแล้วเป็นหน้ารวมแผนกก่อนจะต้องทำยังไงบ้างครับ??ยังไงช่วยแก้ให้หน่อยนะครับ หรือมีเทคนิคดีๆก็ช่วยเสริมก็ได้นะครับ ??ช่วยหน่อยนะครับ...จะส่งโปรเจ็คให้อาจารย์วันจันทร์นี้แล้วครับเหลือแสดงผลอย่างเดียวครับ.....ขอขอบคุณมากครับ
Tag : - - - -
Date :
27 Aug 2547 11:15:02
By :
ตั้ม
View :
3935
Reply :
3
$result = mssql_query("SELECT c.id,c.idempcontact,c.title,c.detail,c.division WHERE division=$select ORDER BY c.id DESC");
ในส่วนนี้ ตรง command ต้องเป็น
"select c.id,c.idempcontact,c.title,c.detail,c.division WHERE division= '01' or division = '02' ORDER BY c.id DESC"
แต่คุณแทนตรงส่วน WHERE ด้วยตัวแปร $select ใช่ไม๊ครับ ถ้าอย่างนั้นตรงส่วน
$select.=$select.$checkbox[$i]." OR ";
ก้ต้องเป็น $select .= "division ='".$checkbox[$i]."' OR ";
สงสัยอีกอย่าง
if ($checkbox[$i]=="on")
checkbox ของคุณ value จะเป็น 01,02,03 ไม่ใช่หรือครับ ถ้าใช่มันก้จะไม่ทำงานส่วนนี้นะครับ ลองไล่โปรแกรม และค่าแต่ละตัวแปรดูอีกทีนะครับ
ตรง <input type=checkbox name=checkbox[".$count."] value=".$row['division']." checked> ไม่จำเป็นต้องใส่ $count ก้ได้นะครับ ใช้ checkbox[] ไปเลยครับ หรือใส่เพื่อจุดประสงค์อื่น แล้วตรง
<input type=hidden name=sum value=$count> มันวนลูปสร้าง hidden ชื่อ sum ตามจำนวน division ของคุณเลยนะครับ เวลา sumit ไปค่าอาจจะไม่ถูกก้ได้นะครับ ผมเข้าใจว่าคุณเอาไว้นับจำนวนใช่ไม๊ครับ ให้ใช้วิธีเก็บไว้ในตัวแปร $sum++;
แล้วค่อยใส่ hidden field นอกลูป ครับ ลองดูใหม่นะครับ
Date :
27 Aug 2547 14:07:54
By :
onizuka
"ให้ใช้วิธีเก็บไว้ในตัวแปร $sum++; แล้วค่อยใส่ hidden field นอกลูป ครับ ลองดูใหม่นะครับ "
ทำแบบไหนครับ ลองเขียนให้ดูหน่อยนะครับ...พี่มีเมล์หรือเปล่าครับ...ช่วยบอกหน่อยครับผมจะได้ให้พี่ดูทั้งหมดเลยครับ..
Date :
27 Aug 2547 14:24:03
By :
ตั้ม
ถ้าต้องการนับจำนวนทั้งหมดก้ใช้ค่า $i ก้ได้ครับ ที่ว่าให้ใส่ hidden นอกลูป หมายถึงลูป while อะครับ แล้วที่สังเกตอีกอย่าง ค่า $count ของคุณ เป็น 0 ครับ เมื่อมาเป็น value ของ input type=hidden name='sum'
$sum = $_POST['sum']; จึงมีค่าเท่ากับ 0 จึงไม่ทำลูป for( $i= 0; $i<$sum ; $i++) เพราะลูปนี้จะทำงานก้ต่อเมื่อ $i<$sum (0<0) เงื่อนไขนี้จึงไม่มีโอกาสเป็น true ได้ครับ ลองไล่โปรแกรมอีกทีครับ ไม่ยากครับไม่ยาก ส่วนเมลล์ผม ก้ [email protected] ครับ
Date :
27 Aug 2547 18:33:21
By :
onizuka
Load balance : Server 03