作者asd56799001 (贝尔菲格诺)
看板PHP
标题[请益] 使用者可挑选想要显示的栏位.如何做?
时间Tue Jul 28 11:40:52 2015
我是PHP新手鞭小力点~~
我有一个资料表
内有20个栏位
每个栏位和内容全部ECHO出来没问题
那现在我想做一个功能是
使用者可选择他想看哪些栏位
例如我有栏位A 栏位B 栏位C
我原本的网页是每个栏位都印出来
那我想让使用者可选择只想显示的栏位,例如可挑选显示A C 或 B C栏位
我想呈现的形式是做核取方块Checkbox让使用者去勾,
痾但想来想去没什麽方向...
因为也不是要存资料库是要看勾选的去显示资料和栏位
这只是我想到的一种形式,当然如果有更好或说更容易的方式希望大家给我建议
希望给点方向,谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.221.217.28
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1438054856.A.4AD.html
1F:→ teli: display:none 07/28 11:48
2F:推 hareion08: SELECT `栏位1`,`栏位2` FROM `table` 07/28 11:49
3F:推 jhunkyoiori: 这是Javascript的事 07/28 11:52
4F:→ asd56799001: 回楼上,好像是这样..想想这跟後台没关系 07/28 11:53
5F:→ RedMapleWing: 全部拉出来再切换要显示的内容,那是javascript 07/28 12:04
6F:→ RedMapleWing: 但如果是会跳页,根据条件重拉,那是php也没错 07/28 12:05
7F:→ MOONRAKER: 就checkbox给user勾一勾,form送回来看他勾什麽 07/28 12:10
8F:推 clerkhsiao: dataTable.js 07/28 13:03
9F:→ MOONRAKER: 有勾的就加到SELECT stmt里面 记得养成sanitation的 07/28 13:17
10F:→ MOONRAKER: 好习惯 form送回来的字串比对以後才能用 07/28 13:17
11F:→ MOONRAKER: 以基本练习而言这样最直接 js啥的以後再玩就好 07/28 13:18
$sql="SELECT * FROM bag WHERE id = '{$conid}' ";
$result=mysql_query($sql);
//如果查到的记录笔数大於 0, 便使用回圈显示所有资料
if (mysql_num_rows($result) >0){
echo "<table border='1' >
<tr>
<td>序号</td>
<td>发包日期</td>
<td>专案别</td>
.....
</tr>";
while ($row = mysql_fetch_array($result)) {
echo "<tr><td>{$row['序号']}</td>
<td>{$row['发包日期']}</td>
<td>{$row['专案别']}</td>
...
</tr>";
}
echo '</table>';
}
以上是原始的程式码
<?php
$field = $_POST ["field"];
//$myallsport = implode (",", $field);
//echo $myallsport;
if (isset($field)) {
for($i=0;$i<Count($field);$i++) {
echo $field[$i] . "<br>";
}
}
?>
<form method="post" action="<?php $_SERVER["PHP_SELF"] ?>">
请勾选您想显示的项目<br>
<input type="checkbox" name="field[]" value="序号" > 序号<br>
<input type="checkbox" name="field[]" value="发包日期" > 发包日期<br>
<input type="checkbox" name="field[]" value="专案别" > 专案别<br>
<input name="submit" type="submit" value="送出" class="myButton" />
</form>
目前可以做到勾什麽显示什麽
放到sql描述的话
$sql="SELECT * $field[$i] FROM bag WHERE id = '{$conid}' ";
这样方向对吗?
试了一下
痾 好像不能这样写...
12F:→ asd56799001: 不太懂sanitation?环境卫生? 07/28 14:35
※ 编辑: asd56799001 (61.221.217.29), 07/28/2015 14:48:32
13F:→ MOONRAKER: sanitation就是说 建一个table内栏位表 然後form收回来 07/28 14:36
14F:→ MOONRAKER: 的栏位名称跟这个表对照 有符合的才写进SQL里面 07/28 14:37
15F:→ MOONRAKER: 不然别人把form内容改掉再submit 你就可能被黑 07/28 14:38
※ 编辑: asd56799001 (61.221.217.29), 07/28/2015 14:57:59
16F:→ asd56799001: 你的意思是勾选的栏位再建一个表去新增进去 07/28 15:02
17F:→ asd56799001: 然後再跟原本的表比对才写进SQL,是这意思吗? 07/28 15:04
18F:→ asd56799001: 想问这功能有什麽关键字吗?依描述查都偏蛮多的.. 07/28 15:25
19F:→ MOONRAKER: 不是资料表啦 就一个阵列啦 07/28 15:29
20F:→ MOONRAKER: 有那种函数可以得知资料表里面有哪些栏位 查好变成一个 07/28 15:29
21F:→ MOONRAKER: 阵列以後 逐个检查form收回来的栏位名有没有在里面 07/28 15:30
22F:→ MOONRAKER: 检查通过的栏位名字才把他implode起来组成SQL述句 07/28 15:31
23F:→ MOONRAKER: 然後才查询 在此之前都不是资料库的工作 07/28 15:32
24F:→ MOONRAKER: 这步很重要但是对练习而言有点麻烦 可以暂时先跳过 07/28 15:34
25F:→ asd56799001: 我已经可以做到勾甚麽查什麽内容了 07/31 17:09
26F:→ asd56799001: 但我上面的栏位表格无法看到我下面的变数 07/31 17:10
27F:→ asd56799001: 因为我是靠那笔栏位有没有该内容去显示内容的Y 07/31 17:10
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<link rel="stylesheet" type="text/css" href="table_CSS.css" />
<title>此专案内容总览</title>
<style type="text/css">
</style>
<script src="OpenWin.js"></script>
</head>
<body>
<?php
$conid = $_GET['conid'];
$cyear = $_GET['cyear'];
$positionid = $_GET['positionid'];
?>
<input type ="button" onclick="javascript:location.href='year.php'" value="回
首页">
<input type ="button" onclick="history.back()" value="回到上一页"></input>
<input type ="button" onclick="javascript:location.href=
'indeXa.php?anme=add&&newcaseid=<?php echo $conid; ?>&&cyear=<?php echo
$cyear; ?>&&positionid=<?php echo $positionid; ?>'" value="建立新内容">
<input type="button" onclick="OpenWin('checkbox9_1.html')" value="选择欲显示的
栏位" ><br>
<!----<input type="checkbox" onclick="var yes = getElementById('yes');
yes.style.display=yes.style.display=='none'?'':'none';"/>---->
<form name="XXX" method="post" action="<?php $_SERVER["PHP_SELF"] ?>">
<input type="checkbox" name="sport[]" value="序号"><label>序号</label><br>
<input type="checkbox" name="sport[]" value="发包日期"><label>发包日期
</label><br>
<input type="checkbox" name="sport[]" value="专案别"><label>专案别</label><br>
<input type="checkbox" name="sport[]" value="发案者"><label>发案者</label><br>
<input type="checkbox" name="sport[]" value="委外类别"><label>委外类别
</label><br>
<input type="checkbox" name="sport[]" value="委外工作内容"><label>委外工作内容
</label><br>
<input type="checkbox" name="sport[]" value="外包人员"><label>外包人员
</label><br>
<input type="checkbox" name="sport[]" value="外包金额"><label>外包金额
</label><br>
<input type="checkbox" name="sport[]" value="分期"><label>分期</label><br>
<input type="checkbox" name="sport[]" value="比例"><label>比例</label><br>
<input type="checkbox" name="sport[]" value="分期金额"><label>分期金额
</label><br>
<input type="checkbox" name="sport[]" value="扣款"><label>扣款</label><br>
<input type="checkbox" name="sport[]" value="扣款事由"><label>扣款事由
</label><br>銔N<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<link rel="stylesheet" type="text/css" href="table_CSS.css" />
<title>此专案内容总览</title>
<style type="text/css">
</style>
<script src="OpenWin.js"></script>
</head>
<body>
<?php
$conid = $_GET['conid'];
$cyear = $_GET['cyear'];
$positionid = $_GET['positionid'];
?>
<input type ="button" onclick="javascript:location.href='year.php'" value="回
首页">
<input type ="button" onclick="history.back()" value="回到上一页"></input>
<input type ="button" onclick="javascript:location.href=
'indeXa.php?anme=add&&newcaseid=<?php echo $conid; ?>&&cyear=<?php echo
$cyear; ?>&&positionid=<?php echo $positionid; ?>'" value="建立新内容">
<input type="button" onclick="OpenWin('checkbox9_1.html')" value="选择欲显示的
栏位" ><br>
<!----<input type="checkbox" onclick="var yes = getElementById('yes');
yes.style.display=yes.style.display=='none'?'':'none';"/>---->
<form name="XXX" method="post" action="<?php $_SERVER["PHP_SELF"] ?>">
<input type="checkbox" name="sport[]" value="序号"><label>序号</label><br>
<input type="checkbox" name="sport[]" value="发包日期"><label>发包日期
</label><br>
<input type="checkbox" name="sport[]" value="专案别"><label>专案别</label><br>
<input type="checkbox" name="sport[]" value="发案者"><label>发案者</label><br>
<input type="checkbox" name="sport[]" value="委外类别"><label>委外类别
</label><br>
<input type="checkbox" name="sport[]" value="委外工作内容"><label>委外工作内容
</label><br>
<input type="checkbox" name="sport[]" value="外包人员"><label>外包人员
</label><br>
<input type="checkbox" name="sport[]" value="外包金额"><label>外包金额
</label><br>
<input type="checkbox" name="sport[]" value="分期"><label>分期</label><br>
<input type="checkbox" name="sport[]" value="比例"><label>比例</label><br>
<input type="checkbox" name="sport[]" value="分期金额"><label>分期金额
</label><br>
<input type="checkbox" name="sport[]" value="扣款"><label>扣款</label><br>
<input type="checkbox" name="sport[]" value="扣款事由"><label>扣款事由
</label><br>銔N
<input type="checkbox" name="sport[]" value="实付金额"><label>实付金额
</label><br>
<input type="checkbox" name="sport[]" value="交件日期"><label>交件日期
</label><br>
<input type="checkbox" name="sport[]" value="请款日期"><label>请款日期
</label><br>
<input type="checkbox" name="sport[]" value="付款日期"><label>付款日期
</label><br>
<input type="checkbox" name="sport[]" value="请款凭据"><label>请款凭据
</label><br>
<input type="checkbox" name="sport[]" value="备注"><label>备注</label><br>
<input type=submit name=ok value="送出"><br>
<form>
<?php
@header('Content-Type: text/html; charset=utf-8');
include("mysql.inc.php");
if ($conid !='' ){
$sql="SELECT * FROM `case` WHERE id = '{$conid}' ";
$result=mysql_query($sql);
$row_3=mysql_fetch_array($result);
$concaid=$row_3['caseid'];
echo "<a href='year.php'>$cyear</a>a\鵔懒
<input type="checkbox" name="sport[]" value="实付金额"><label>实付金额
</label><br>
<input type="checkbox" name="sport[]" value="交件日期"><label>交件日期
</label><br>
<input type="checkbox" name="sport[]" value="请款日期"><label>请款日期
</label><br>
<input type="checkbox" name="sport[]" value="付款日期"><label>付款日期
</label><br>
<input type="checkbox" name="sport[]" value="请款凭据"><label>请款凭据
</label><br>
<input type="checkbox" name="sport[]" value="备注"><label>备注</label><br>
<input type=submit name=ok value="送出"><br>
<form>
<?php
@header('Content-Type: text/html; charset=utf-8');
include("mysql.inc.php");
if ($conid !='' ){
$sql="SELECT * FROM `case` WHERE id = '{$conid}' ";
$result=mysql_query($sql);
$row_3=mysql_fetch_array($result);
$concaid=$row_3['caseid'];
echo "<a href='year.php'>$cyear</a>a\鵔懒
//做一个栏位阵列
$sql = "select * from bag";
$result = mysql_query($sql);
$arr = mysql_num_fields($result) -1; //取得栏位总数去id栏位
for ($i=0;$i<=$arr;$i++){
$fields[] = mysql_field_name($result,$i);//取得指定栏位的名称函数
}
if(!empty($_POST ['sport'])){
$sport = $_POST ['sport'];
}
else{
$sport = split("," , "序号,发包日期,专案别,发案者,委外类别,委外工作内容,外包
人员,外包金额,分期,比例,分期金额,扣款,扣款事由,实付金额,交件日期,请款日期,付款
日期,请款凭据,备注");
}
$result777 = array_intersect ($sport, $fields);
//$sql="SELECT * FROM bag WHERE id = '{$conid}' ";
$sql="SELECT ".implode (",", $result777)." FROM bag WHERE id = '{$conid}' ";
$result=mysql_query($sql);
//如果查到的记录笔数大於 0, 便使用回圈显示所有资料
if (mysql_num_rows($result) >0){
echo "<table border='1' >";
echo "<tr>";
echo "<td>序号</td>";
echo "<td>发包日期</td>";
echo "<td>专案别</td>";
echo "<td>发案者</td>";
echo "<td>委外类别</td>";
echo "<td>委外工作内容</td>";
echo "<td>外包人员</td>";
echo "<td>外包金额</td>";
echo "<td>分期</td>";
echo "<td>比例</td>";
echo "<td>分期金额</td>";
echo "<td>扣款</td>";
echo "<td>扣款事由</td>";
echo "<td>实付金额</td>";
echo "<td>交件日期</td>";
echo "<td>请款日期</td>";
echo "<td>付款日期</td>";
echo "<td>请款凭据</td>";
echo "<td>备注</td>";
echo "</tr>";
while ($row = mysql_fetch_array($result)) {
echo "<tr>";
if($row['序号']!=""){echo "<td>{$row['序号']}</td>";}
echo "<td>{$row['发包日期']}</td>";
echo "<td>{$row['专案别']}</td>";
echo "<td>{$row['发案者']}</td>";
echo "<td>{$row['委外类别']}</td>";
echo "<td>{$row['委外工作内容']}</td>";
echo "<td>{$row['外包人员']}</td>";
echo "<td>{$row['外包金额']}</td>";
echo "<td>{$row['分期']}</td>";
echo "<td>{$row['比例']}</td>";
echo "<td>{$row['分期金额']}</td>";
echo "<td>{$row['扣款']}</td>";
echo "<td>{$row['扣款事由']}</td>";
echo "<td>{$row['实付金额']}</td>";
echo "<td>{$row['交件日期']}</td>";
echo "<td>{$row['请款日期']}</td>";
echo "<td>{$row['付款日期']}</td>";
echo "<td>{$row['请款凭据']}</td>";
echo "<td>{$row['备注']}</td>";
echo "<td><input type=submit name=ok value='删除'
onclick=\"if(confirm('您确定送出吗?')) {
window.location.href='content_delete.php?del={$row['序号
']}&&newcaseid={$conid}&&cyear=$cyear&&positionid=$positionid&&caseid=$caseid';return
true}else return false\">
</td>
<td><input type='button' value='编辑'
onclick=\"self.location.href='indeXa.php?edit={$row['序号
']}&&anme=edit&&newcaseid={$conid}&&cyear=$cyear&&positionid=$positionid'\">
</td></tr>";
$hhh = $row['id'];
}
echo "</table>";
}
if($hhh == null){
echo "目前{$concaid}里并没有内容哦!请新增新内容哦!";
echo '<br>';
}
else{//计算目前资料总笔数,如果有内容才计算
$sql="select * from bag WHERE id = '{$conid}'";
$result=mysql_query($sql);
$row = mysql_num_rows($result) ;
echo "目前总共有{$row}笔";
}
?>
</body>
</html>
※ 编辑: asd56799001 (61.221.217.28), 07/31/2015 17:16:20
29F:→ asd56799001: 第98行if就是判断有无内容是否显示出来的 07/31 17:40
30F:推 xdraculax: 既然你资料栏位名称跟表格栏位名称一样,用捞出来的资 08/01 10:26
31F:→ xdraculax: 料栏位去跑回圈画表格吧 08/01 10:26