我正在尝试将列添加到现有表格并获得棘手的结果。
我目前有:
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']`,它仍会插入一个额外的列。我没有尝试将它放在声明的前面。
答案 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>
。