php使html表行相等

时间:2014-08-19 20:53:13

标签: php jquery html foreach

我从我的数据库中获取数据。还有一个管理面板,人们可以在其中向数据库添加数据。数据会在页面上显示,但某些行(<tr>)的表数据标记(<td>)比其他行少(<td>)。因此表格不合理。有没有办法将空echo "<table class=\"zebra1\">"; echo "<th>N. </th>" . "<th>Team name: </th>" . "<th colspan=\"5\">Points: </th>" . "<th>Sum: </th>"; $numbering =1; $query2 = $db->prepare("SELECT pisteet_1 As PIY, pisteet_2 as PIK, nimi As NIM, opisto As OPI, pisteet.kaupunki_id As KA FROM pisteet INNER JOIN joukkueet ON joukkueet.id = pisteet.team_id INNER JOIN oppilaitokset ON oppilaitokset.opisto_id = joukkueet.opisto_id ORDER BY team_id ASC"); $query2->execute(); $results = $query2->fetchAll(); $tableD = array(); foreach ($results as $key) { $tableD[$key['NIM']][] = array('PIY'=>$key['PIY'],'PIK'=>$key['PIK'],'KA'=>$key['KA'], 'OPI'=>$key['OPI']); } foreach($tableD as $teamN=>$values2){ //Echoing the Team name echo "<tr class=\"all " . $values2[0]['KA'] . "\">"; echo "<td>" . $numbering . "</td>"; echo "<td>" . $teamN ."<span>" . $values2[0]['OPI'] ."</span></td>"; $sum1=0; $sum2=0; //Echoing the points foreach($values2 as $v2){ echo "<td class=\"points\">" . $v2['PIY'] . "/" . $v2['PIK'] . "</td>"; $sum1 +=$v2['PIY']; $sum2 +=$v2['PIK']; } //Echoing the total sum of points echo '<td class="Sum">'.$sum1.'/'.$sum2."</td>"; echo "</tr>"; $numbering ++; } echo '</table>'; 添加到需要它们的行?我已经尝试了一切,但我无法理解。

关于表格当前情况的图片: enter image description here 绿色数字是点的总和,但不清楚,因为表格行是锯齿状的。如何解决这个问题?

如果有一个jQuery解决方案也没关系。

我的代码:

$colspancalculated

我有一个名为{{1}}的变量,它具有最长的行:此时它存储的值为5。

2 个答案:

答案 0 :(得分:2)

假设你有一个固定数量的列(我假设这是因为你的表头单元格上有一个colspan),你需要像你一样输出td元素,或者如果记录输出空格单元格不存在。

考虑这样的事情,而不是你的foreach:

// Echoing the points - as you mention in your comment, you've calculated
// the maximum column size as $colspancalculated - so you that as your upper limit
for($i = 0; $i < $colspancalculated; $i++) {
    if(!isset($values2[$i]['PIY'])) {
        // This record doesn't exist! Output a blank cell
        echo '<td></td>';
        continue;
    }

    // Otherwise, output the cell and do your calculations
    echo '<td class="points">' . $values2[$i]['PIY'] . '/' . $values2[$i]['PIK'] . '</td>';
    $sum1 += $values2[$i]['PIY'];
    $sum2 += $values2[$i]['PIK'];
}

答案 1 :(得分:1)

而不是foreach循环,使用for循环 - 或者,因为你必须使用迭代器,无论如何,只需这样做:

$i = $numberOfColumnsLeftAtThisPointInYourScript
foreach($values2 as $v2){
    echo "<td class=\"points\">" . $v2['PIY'] . "/" . $v2['PIK'] .  "</td>";
    $sum1 +=$v2['PIY'];
    $sum2 +=$v2['PIK'];
    $i--;
}
while($i > 0){
    echo '<td>&nbsp;</td>';
    $i--;
}