ID Name Type ParentID
2 生活作息是否规律 0 1
3 是 1 2
4 否 1 2
5 不一定 1 2
6 生活作息时间 0 1
7 早起 0 6
8 晚起 0 6
9 饮食是否规律 0 1
10 是 0 9
11 否 0 9
我数据里面PARENTID为1是问题,其他的是选项,我想把问卷组合起来。
$row = $SqlDB->Query($sql);
$arr = $SqlDB->getRows($row);$str = "";
$str1 = "";
for($i=0; $i<count($arr); $i++){
if( $arr[$i]['parentid'] == "1" ){
$str .="<tr><td colspan=\"3\" bgcolor=\"#990000\">".$arr[$i]['question']."</td></tr>";
$str1 = "<tr>";
if($arrRowService[$i]['parentid'] == $arr[$i]['id']){
$str1 .="<td colspan=\"3\" bgcolor=\"#990000\">".$arr[$i]['question']."</td>";
}
$str11 .= "</tr>";
}
echo $str.$str1;
不知道为什么只列出来了问题,选项没关联出来???
2 生活作息是否规律 0 1
3 是 1 2
4 否 1 2
5 不一定 1 2
6 生活作息时间 0 1
7 早起 0 6
8 晚起 0 6
9 饮食是否规律 0 1
10 是 0 9
11 否 0 9
我数据里面PARENTID为1是问题,其他的是选项,我想把问卷组合起来。
$row = $SqlDB->Query($sql);
$arr = $SqlDB->getRows($row);$str = "";
$str1 = "";
for($i=0; $i<count($arr); $i++){
if( $arr[$i]['parentid'] == "1" ){
$str .="<tr><td colspan=\"3\" bgcolor=\"#990000\">".$arr[$i]['question']."</td></tr>";
$str1 = "<tr>";
if($arrRowService[$i]['parentid'] == $arr[$i]['id']){
$str1 .="<td colspan=\"3\" bgcolor=\"#990000\">".$arr[$i]['question']."</td>";
}
$str11 .= "</tr>";
}
echo $str.$str1;
不知道为什么只列出来了问题,选项没关联出来???
之所以不出来,是很正常的。因为少了个循环。
应该改成这样。
$str = " ";
$str1 = " ";
for($i=0; $i <count($arr); $i++){
if( $arr[$i][ 'parentid '] == "1 " ){
$str .= " <tr> <td colspan=\ "3\ " bgcolor=\ "#990000\ "> ".$arr[$i][ 'question ']. " </td> </tr> ";
$str1 = " <tr> ";
for($a=0;$a<count($arrRowService);$a++){
if($arrRowService[$a][ 'parentid '] == $arr[$i][ 'id ']){
$str1 .= " <td colspan=\ "3\ " bgcolor=\ "#990000\ "> ".$arr[$i][ 'question ']. " </td> ";
}
}
$str11 .= " </tr> ";
}
echo $str.$str1; 还有,虽然不能打tab,但是你打个空格行不行?看着我真的很累....囧。
require("config.inc.php"); $sqlService = "select a.name as question,b.parentid as parentid,a.healthrecordtplid as id from gst_HealthRecordTpl as a INNER JOIN gst_HealthRecordTpl as b ON a.Parentid =b.healthrecordtplid inner join gst_HealthRecordTpl as c on c.parentid=0";
$rowService = $SqlDB->Query($sqlService);
$arr = $SqlDB->getRows($rowService); $str1 = "";
$str = "<TABLE width=\"95%\" align=\"center\" border=\"1\">";
for($i=0; $i <count($arr); $i++){
if( $arr[$i]['parentid'] == "1" ){
$str .= " <tr><td>".$arr[$i]['question']."</td></tr> ";
$str1 = " <tr> ";
for($a=0;$a<count($arr);$a++){
if($arr[$a]['parentid'] == $arr[$i]['id']){
$str1 .= " <td>".$arr[$i]['question']. "</td> ";
}
}
$str1 .= " </tr> ";
}
}
$str .="</table>";
echo $str.$str1;
?>楼上的兄弟,谢谢你,但是还有个问题第二个循环里面问题选项能显示出来,第一个循环里面的问题为什么没有出来呢。
require("config.inc.php"); $sqlService = "select a.name as question,a.parentid as parentid,a.healthrecordtplid as hid from gst_HealthRecordTpl as a INNER JOIN
gst_HealthRecordTpl as b ON a.Parentid =b.healthrecordtplid";
$rowService = $SqlDB->Query($sqlService);
$arr = $SqlDB->getRows($rowService); $str1 = "";
$str .= "<table width=\"95%\" align=\"center\" border=\"1\">";
//print_r($arr);
for($i=0; $i<count($arr); $i++){
//echo $arr[$k]['parentid']."<br>";
if( $arr[$i]['parentid'] == "1" ){
$str .= "<tr><td>".$arr[$i]['question']."</td></tr>";
$str1 .= "<tr>";
for($a=0; $a<count($arr); $a++){
//echo $arr[$a]['parentid']."<br>";
if($arr[$a]['parentid'] == $arr[$i]['hid']){
$str1 .= "<td>".$arr[$a]['question']. "</td>";
}
}
$str1 .= "</tr>";
}
}
$str .="</table>";
echo $str.$str1;
?>
楼上的兄弟我这显示的结果成了下面的
<table width="95%" align="center" border="1"><tr><td>生活作息是否规律</td></tr><tr><td>生活作息时间</td></tr><tr><td>饮食是否规律</td></tr><tr><td>饮食喜好</td></tr></table><tr><td>是</td><td>否</td><td>不一定</td></tr><tr><td>早起</td><td>晚起</td></tr><tr><td>是</td><td>否</td></tr><tr><td>牛肉</td><td>猪肉</td><td>羊肉</td><td>鱼肉</td><td>海鲜</td><td>蔬菜</td><td>水果</td><td>煎</td><td>炸</td><td>蒸</td><td>煮</td><td>炖</td><td>烤</td><td>火锅</td><td>药膳</td><td>冷饮</td><td>烫食</td></tr>我是想实现生活作息是否规律(问题)这个TR结束后跟着><tr><td>是</td><td>否</td><td>不一定</td></tr>问题这个tr
你把$str1的地方都换成$str试试。
然后我自己用了一个现成的数据库类,先贴代码,然后你哪不明白的再问我,这个我自己敲过了,绝对没有问题。
<?phprequire_once('config.php');require_once('cls_mysql.php');$db =new cls_mysql($read_db_host, $read_db_user, $read_db_pass, $read_db_name, 'UTF8');$sql = "select * from gst_healthrecordtpl";
$row = $db->getAll($sql);$str = "";
$str .="<table width=\"95%\" align=\"center\" border=\"1\">";
for($i=0;$i<count($row);$i++){
if($row[$i]['ParentID'] == '1'){
$str .= "<tr><td colspan=\"3\" bgcolor=\"#990000\">".$row[$i]['name']."</td></tr>";
}
$str .= "<tr>";
for($a=0;$a<count($row);$a++){
if($row[$a]['ParentID'] == $row[$i]['Id']){
$str .= "<td>".$row[$a]['name']."</td>";
}
}
$str .= "</tr>";
}
echo $str;
?>
config.php里面是配置的数据库链接参数。cls_mysql类是个现成的数据库类。查询语句我没写你那么复杂的内链接,因为你给我的表就4个字段,而且基本都用上了,所以我就直接select *了,其实我觉得你应该把type用上来判断数据是问题还是答案,而不应该通过父类ID,这样会出现问题的。$row出来的结果是个二维数组,你懂的...
<?phprequire_once('config.php');require_once('cls_mysql.php');$db =new cls_mysql($read_db_host, $read_db_user, $read_db_pass, $read_db_name, 'UTF8');$sql = "select * from gst_healthrecordtpl";
$row = $db->getAll($sql);
$row1=$row;//复制一份用于循环,因为数组遍历时指针会发生移动$str = "";
$str .="<table width=\"95%\" align=\"center\" border=\"1\">";
foreach($row as $key=>$value){
if($row[$key]['ParentID'] == '1'){
$str .= "<tr><td colspan=\"3\" bgcolor=\"#990000\">".$row[$key]['name']."</td></tr>";
}
$str .= "<tr>";
foreach($row1 as $key=>$value){
if($row1[$key]['ParentID'] == $row[$key]['Id']){
$str .= "<td>".$row1[$key]['name']."</td>";
}
}
$str .= "</tr>";
}
echo $str;
?>
注意 $row = $db->getAll($sql);得到的一定要是数组