如果title不在数据库中,请不要在表上显示标题

时间:2015-06-04 20:26:11

标签: php mysql html-table

我正在努力让我的桌子“建立”#39;仅当数据在数据库中时。

例如,一年中有10个事件,但不希望它们在发生之前列出。 我也不想通过下载页面并重新上传来手动添加该行。

以下是我的尝试,但不起作用。我想我只是把它弄错了。

<?php
$ct_results = mysql_query("SELECT *, (ct1 + ct2) AS total FROM resultsopen WHERE ct ='1' ORDER BY total DESC");
$title = mysql_query("SELECT * FROM openevents");

if(mysql_num_rows($ct_results) == '') { echo "<p>No Results Available."; } else {

$title = mysql_fetch_array($title);
echo "<table width=\"1000\" cellpadding=\"5\" cellspacing=\"2\" class=\"entrywriting\" align=\"center\">
<tr align=\"center\">
<th>Overall</th>
<th>Competitor</th>
<th>"(!empty($title['cta']) ? "<th>" . $title['cta'] . " : "")</th>
<th>" . $title['ctb'] . "</th>
<th>" . $title['ctc'] . "</th>
<th>" . $title['ctd'] . "</th>
<th>" . $title['cte'] . "</th>
<th>" . $title['ctf'] . "</th>
<th>" . $title['ctg'] . "</th>
<th>" . $title['cth'] . "</th>
<th>Total</th>
</tr>";

//set counter
$counter = 1;

$x=1; 
while($results_row = mysql_fetch_array($ct_results))
{
            if($x%2): $rowbgcolor = "#FFFFFF"; else: $rowbgcolor = "#D3D3D3"; endif;
echo "<tr align=\"center\" bgcolor=\"" .$rowbgcolor. "\">";
echo "<td>" . $counter . "</td>";
echo "<td>" . $results_row['competitor'] . "</td>";
echo (!empty($results_row['ct1']) ? "<td>" . $results_row['ct1'] . "</td>" : "");
echo (!empty($results_row['ct2']) ? "<td>" . $results_row['ct2'] . "</td>" : "");
echo (!empty($results_row['ct3']) ? "<td>" . $results_row['ct3'] . "</td>" : "");
echo (!empty($results_row['ct4']) ? "<td>" . $results_row['ct4'] . "</td>" : "");
echo (!empty($results_row['ct5']) ? "<td>" . $results_row['ct5'] . "</td>" : "");
echo (!empty($results_row['ct6']) ? "<td>" . $results_row['ct6'] . "</td>" : "");
echo (!empty($results_row['ct7']) ? "<td>" . $results_row['ct7'] . "</td>" : "");
echo (!empty($results_row['ct8']) ? "<td>" . $results_row['ct8'] . "</td>" : "");
echo "<td>" . $results_row['total'] . "</td>";
echo "</tr>";
$counter++; //increment count by 1
$x++;
}
echo "</table>";
}
?>

它回声的底部正如我所希望的那样工作。

我正在努力工作的是桌面上的标题。

有整体(永久),竞争对手(永久),然后是事件名称(一旦添加到数据库,就会出现,总计(永久)。

EDIT 如果数据库中没有事件名称,那么我不希望它显示该列。如果数据库中有名称显示该列。

<th>Overall</th>
<th>Competitor</th>
<th>"(!empty($title['cta']) ? "<th>" . $title['cta'] . " : "")</th>
<th>" . $title['ctb'] . "</th>
<th>" . $title['ctc'] . "</th>
<th>" . $title['ctd'] . "</th>
<th>" . $title['cte'] . "</th>
<th>" . $title['ctf'] . "</th>
<th>" . $title['ctg'] . "</th>
<th>" . $title['cth'] . "</th>
<th>Total</th>

例如&#39; cta&#39;在数据库中会说&#34;事件1&#34;所以它在网页上显示了事件1。 但是&#39; ctb&#39;数据库中没有任何内容,因此只有在添加标题之前它才会忽略该列。

2 个答案:

答案 0 :(得分:0)

我强烈建议您对表格进行规范化。但是,如果希望保留当前的表结构,可以使用:

  

SELECT COUNT(ct1)为ct1_count,COUNT(ct2)为ct2_count,COUNT(ct3)为ct3_count FROM openevents;

这将告诉您每列中非空条目的数量。然后,您只需检查每个列是否为0.如果是,请不要显示表的关联标题。

答案 1 :(得分:0)

mysql_num_rows($myVar)会返回一个数字。您的if语句应检查调用if(mysql_num_rows($ct_results) == 0)

的值