为什么要插入额外的列?

时间:2014-02-24 20:39:44

标签: php html mysql html-table

我正在尝试将列添加到现有表格并获得棘手的结果。

我目前有:

print "<table border=1>";
print "<tr>
        <td>First Name</td>
        <td>Last Name</td>
        <td>Email?</td>
        <td>League</td>
        <td>Team</td>
        <td>Captain</td>
        <td></td>
        <td>paid</td>
        <td>wks played</td>
</tr>";
while ($row=mysql_fetch_assoc($results)){
if($row['email_address'] != NULL ){
$email='y';
}
else {
$email='n';
}
if($row[captain_id]==$row[player_num]){ $iscapt="Captain"; }
else{$iscapt="";}
$paid=$row[paid];
if($paid){$playpaid="<td bgcolor=#99ff33>paid</td>";}
else {$playpaid="<td bgcolor=#ff6633>not paid</td>";}

printf ("<tr>
    <td>%s</td>
    <td>%s</td>
    <td>%s</td>
    <td>%s</td>
    <td>%s</td>
    <td>%s</td>
    <td>%s</td>
    <td>%s</td>
</tr>",
    $row['first_name'],
    $row['last_name'],
    $email,
    $row['league_id'],
    $row['name'],
    $iscapt,
    $playpaid,
    $row['weeks']
);
}
print "</table>";

出于什么原因,当我没有船长之间的<td></td>并且支付了另一列时,实际上已经生成了。

原始代码是:

printf("
<tr>
    <td>%s</td>
    <td>%s</td>
    <td>%s</td>
    <td>%s</td>
    <td>%s</td>
    </td>
    <td>%s</td>
    %s \n
</tr>",
$row['first_name'],
$row['last_name'],
$email,
$row['league_id'],
$row['name'],
$iscapt,
$playpaid);

尽我所能,我无法破译独立</td>和独立%s \n如何摆脱“额外”列。

是的我知道这应该用CSS等完成,但我只修改现有的代码。我还没达到能够重写整个页面的水平。 (差不多准备好了)

有人可以解释为什么我需要插入一个额外的列,以及不合适的<\td>%s \n如何处理旧代码?

顺便说一句,如果我只是在语句的末尾添加一个<td>%s</td> and add $ row ['weeks']`,它仍会插入一个额外的列。我没有尝试将它放在声明的前面。

1 个答案:

答案 0 :(得分:1)

printf()命令用随后的输入替换每个“%s”。所以第一个%s被替换为$ row ['first_name'],第二个用$ row ['last_name']替换,依此类推。

问题是$ playpaid需要有特殊的条件格式,因此作者专门为该列构建了<td></td>标签。因此,您不能仅将结果值与<td>%s</td>放在一起,因为您最终会得到双<td><td>,如上面的评论所述。

原始代码中似乎有一个额外的</td>。请尝试以下方法:

printf("
<tr>
    <td>%s</td>
    <td>%s</td>
    <td>%s</td>
    <td>%s</td>
    <td>%s</td>
    <td>%s</td>
    %s
    <td>%s</td> \n
</tr>",
$row['first_name'],
$row['last_name'],
$email,
$row['league_id'],
$row['name'],
$iscapt,
$playpaid,
$row['weeks']);

最后的\ n只需在生成的HTML中添加回车符。

至于额外列,那是因为表标题行中有一个额外的空白<td></td>