我正在尝试向现有表添加一列并得到奇怪的结果。
我目前有:
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']` 到语句末尾,它仍然插入一个额外的列。我没有尝试将其放在靠近声明前面的位置。
最佳答案
printf() 命令用后续输入替换每个“%s”。因此,第一个 %s 替换为 $row['first_name'],第二个 %s 替换为 $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>
在表格标题行中。
关于php - 为什么要插入额外的可用列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21998510/