php中的动态标题和表格单元格
我做二元表有问题 我的表格结构如下:php中的动态标题和表格单元格,php,Php,我做二元表有问题 我的表格结构如下: ====================================================================== tender_id | coc | datasheet | datecode | shelflife | Suppliername ====================================================================== 201 | No | Yes
======================================================================
tender_id | coc | datasheet | datecode | shelflife | Suppliername
======================================================================
201 | No | Yes | Yes | No | Supplier1
201 | Yes | No | Yes | No | Supplier2
201 | No | No | No | No | Supplier3
我对PHP的预期结果是
=============================================
COC | Datasheet | Date Code | Supplier Name
=============================================
- Yes Yes Supplier1
Yes - Yes Supplier2
仅当值为“是”时,结果才会显示。如果所有值均为“否”,则即使标题也不应显示。例如,在上述条件下,所有供应商的shelflife值均为“否”。在这种情况下,即使标题也不应显示。我试过一些脚本,但有一些问题
这是我尝试过的脚本:
$sql_shelf = "SELECT tender_id, suppliername, coc, date_code, shelf_life , datasheet FROM comparitive_statement1 WHERE (coc='Yes' OR technical_compliance='Yes' OR date_code='Yes' OR shelf_life='Yes' OR datasheet='Yes') tender_id='$tender_id' group by suppliername";
$result = mysql_query($sql_shelf) or die($sql_shelf."<br/><br/>".mysql_error());
$i = 0;
while ($list = mysql_fetch_array($result)) {
if($i == 0){
echo '<tr>';
$sh = $list['shelf_life'];
if ($sh=="No") {
} else {
echo '<td><b>Shelf Life</b></td>';
}
echo '</tr>';
$i++;
}
echo '<tr>';
$sl1 = $list['shelf_life'];
if ($sl1=="No") {
} else {
echo "<td>{$list['shelf_life']}</td>";\
echo "</tr>";
}
++$i;
}
$sql\u shelf=“从比较声明1中选择投标编号、供应商名称、coc、日期、保质期、数据表,其中(coc='Yes'或技术合规性='Yes'或日期\u code='Yes'或保质期='Yes'或数据表='Yes')投标编号='tender\u id'按供应商名称分组”;
$result=mysql\u query($sql\u shelf)或die($sql\u shelf。“
”。mysql\u error());
$i=0;
而($list=mysql\u fetch\u数组($result)){
如果($i==0){
回声';
$sh=$list[“保质期”];
如果($sh==“否”){
}否则{
echo“保质期”;
}
回声';
$i++;
}
回声';
$sl1=$list[‘保质期’];
如果($sl1==“否”){
}否则{
echo“{$list['shelf_life']}”\
回声“;
}
++$i;
}
脚本有点长,所以我刚刚放置了与shelflife相关的记录。为了确定是否应该显示整个列,您需要首先遍历所有记录。我尚未调试以下内容,但希望如果它不起作用,就足以让您了解需要做什么:
$result = mysql_query($sql_shelf) or die($sql_shelf."<br/><br/>".mysql_error());
$stuff = array(); //an array for all of the rows
$columns = array(); //an array for the columns
while ($list = mysql_fetch_array($result,MYSQL_ASSOC)) {
$stuff[] = $list; //add list to the appropriate array
if(empty($columns)) { foreach($list as $key=>$val) { $columns[$key] = 0; } } //fill $columns with a dynamic number of 0s based on how many columns the database returns
foreach($list as $key=>$val) { if(!is_numeric($val) && $val!= 'No') { $columns[$key] = 1; } } //sets column array value to 1 for any non-numeric/non-no answer
}
//now we actually build the table
echo "<table><thead>";
echo "<tr>";
foreach($columns as $name=>$display){
if($display== 1) { echo "<th>".$name."</th>"; } //if we set the value earlier to 1, then we want the column to show
}
echo "</tr></thead><tbody>";
foreach($stuff as $list){
echo "<tr>";
foreach($list as $key=>$val){
if($columns[$key] == 1){ echo "<td>".$val."</td>";
}
echo "</tr>";
}
echo "</tbody></table>";
$result=mysql\u query($sql\u shelf)或die($sql\u shelf。“
”。mysql\u error();
$stuff=array()//所有行的数组
$columns=array()//列的数组
而($list=mysql\u fetch\u数组($result,mysql\u ASSOC)){
$stuff[]=$list;//将列表添加到适当的数组中
if(empty($columns)){foreach($list as$key=>$val){$columns[$key]=0;}}}//根据数据库返回的列数,用动态的0填充$columns
foreach($key=>$val){if(!is_numeric($val)&&$val!='No'){$columns[$key]=1;}}}}//将任何非数字/非无答案的列数组值设置为1
}
//现在我们实际构建表
回声“;
回声“;
foreach($name=>$display形式的列){
如果($display==1){echo'.$name.“;}//如果我们将前面的值设置为1,那么我们希望显示该列
}
回声“;
foreach($stuff作为$list){
回声“;
foreach($key=>$val){
如果($columns[$key]==1){echo.“$val.”;
}
回声“;
}
回声“;
编辑:添加表标记为了确定是否应显示整个列,您需要首先遍历所有记录。我尚未调试以下内容,但希望如果它不起作用,它足以让您了解需要做什么:
$result = mysql_query($sql_shelf) or die($sql_shelf."<br/><br/>".mysql_error());
$stuff = array(); //an array for all of the rows
$columns = array(); //an array for the columns
while ($list = mysql_fetch_array($result,MYSQL_ASSOC)) {
$stuff[] = $list; //add list to the appropriate array
if(empty($columns)) { foreach($list as $key=>$val) { $columns[$key] = 0; } } //fill $columns with a dynamic number of 0s based on how many columns the database returns
foreach($list as $key=>$val) { if(!is_numeric($val) && $val!= 'No') { $columns[$key] = 1; } } //sets column array value to 1 for any non-numeric/non-no answer
}
//now we actually build the table
echo "<table><thead>";
echo "<tr>";
foreach($columns as $name=>$display){
if($display== 1) { echo "<th>".$name."</th>"; } //if we set the value earlier to 1, then we want the column to show
}
echo "</tr></thead><tbody>";
foreach($stuff as $list){
echo "<tr>";
foreach($list as $key=>$val){
if($columns[$key] == 1){ echo "<td>".$val."</td>";
}
echo "</tr>";
}
echo "</tbody></table>";
$result=mysql\u query($sql\u shelf)或die($sql\u shelf。“
”。mysql\u error();
$stuff=array();//所有行的数组
$columns=array();//列的数组
而($list=mysql\u fetch\u数组($result,mysql\u ASSOC)){
$stuff[]=$list;//将列表添加到适当的数组中
if(empty($columns)){foreach($list as$key=>$val){$columns[$key]=0;}}}//根据数据库返回的列数,用动态的0填充$columns
foreach($key=>$val){if(!is_numeric($val)&&$val!='No'){$columns[$key]=1;}}}}//将任何非数字/非无答案的列数组值设置为1
}
//现在我们实际构建表
回声“;
回声“;
foreach($name=>$display形式的列){
如果($display==1){echo'.$name.“;}//如果我们将前面的值设置为1,那么我们希望显示该列
}
回声“;
foreach($stuff作为$list){
回声“;
foreach($key=>$val){
如果($columns[$key]==1){echo.“$val.”;
}
回声“;
}
回声“;
编辑:添加了表标记请同时添加您已经编写的SQL语句。它是否存储在
$SQL\u shelf
中?如果您想隐藏完整的列,包括标题,那么您需要将返回的行保存在php数组中,然后过滤该数组,或者使用javascript检查列并过滤/隐藏。为什么支持er3不是输出的一部分?请尝试使用适当的if()语句编写。您可以编写if($sl1!=“否”)如果您的布尔值存储在$sl1变量中。@mapek。我已经用sql查询编辑了这个问题。是的,它存储在$sql\u shelf中。请同时添加您已经编写的sql语句。它是否存储在$sql\u shelf
中?如果您想隐藏完整的列,包括标题,那么您需要将返回的行保存在一个php数组,然后过滤该数组或使用javascript检查列并过滤/隐藏。为什么Supplier3不是您的输出的一部分?尝试使用适当的if()语句编写。您可以编写if($sl1!=“No”)如果您有存储在$sl1变量中的布尔值。@mapek。我已经用sql查询编辑了这个问题。是的,它存储在$sql\u shelf中。完整的表没有方向。但是我可以查看记录。您能告诉我从哪里开始,从哪里结束吗?我可以放我自己的标题吗?为了使用您自己的标题,您要走了需要类似的数组:$columnnames['Suppliername']='Suppliername';然后将echo“$Name.”修改为echo“$columnnames[$Name]”;整张表无法定向。但我可以查看记录。您能告诉我从何处开始以及从何处结束吗?我还可以设置自己的标题吗?为了使用自己的标题,您需要一个类似于:$columnnames['Suppliername']='Suppliername';然后修改echo.“$Name.”“to be echo”的数组.$columnnames[$name]。“”;