Php 为什么要插入和额外的可编辑列?

Php 为什么要插入和额外的可编辑列?,php,html,mysql,html-table,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>T

我正在尝试向现有表中添加一列,并得到扭曲的结果

我目前有:

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>";
print”“;
“打印”
名字
姓
电子邮件?
联盟
团队
船长
支付
播放的作品
";
while($row=mysql\u fetch\u assoc($results)){
如果($row['email_address']!=NULL){
$email='y';
}
否则{
$email='n';
}
如果($row[captain_id]==$row[player_num]){$iscapt=“captain”;}
else{$iscapt=”“;}
$paid=$row[paid];
如果($paid){$playpady=“paid”;}
else{$playpayed=“notpaid”;}
printf(“
%
%
%
%
%
%
%
%
",
$row[“名字”],
$row[“姓氏”],
$email,
$row['league_id'],
$row['name'],
$iscapt,
$PAYPAYED,
$row[“周”]
);
}
打印“”;
无论出于什么原因,当我没有船长和付费之间的
时,实际上会生成另一列

原代码为:

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);
printf(“
%
%
%
%
%
%
%s\n
",
$row[“名字”],
$row[“姓氏”],
$email,
$row['league_id'],
$row['name'],
$iscapt,
美元(已支付);
尽管我可能会尝试,但我无法解释独立
和独立
%s\n
是如何摆脱“额外”列的

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

那么,有人能解释一下为什么我需要插入一个额外的列,以及不合适的
%s\n
如何使用旧代码吗

顺便说一下,如果我只是添加一个
%s并在语句末尾添加
$row['weeks']`行,它仍然会插入一个额外的列。我还没有试着把它放在更靠近声明前面的地方

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

问题是$playpaid需要有与之相关的特殊条件格式,因此作者专门为该列构建了
标记。因此,您不能只将结果值放入ing
%s
,因为这样您将得到double
,如上面的注释所述

原始代码中似乎有一个额外的
。请尝试以下操作:

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']);
printf(“
%
%
%
%
%
%
%
%s\n
",
$row[“名字”],
$row[“姓氏”],
$email,
$row['league_id'],
$row['name'],
$iscapt,
$PAYPAYED,
$row['周]);
结尾的\n只是将回车符添加到生成的HTML中


至于额外的列,这是因为在表标题行中有一个额外的空白

..
放入另一个
..
中显然会生成无效的HTML。整个剧本是用想象中最糟糕的方式写的。您真正应该做的是,只需使用另一个占位符将类名动态插入“paid”
td
,而不是使用过时的HTML属性进行格式化。好吧,您的输出在某些方面包含明显不好的HTML。然而,许多浏览器试图“猜测”你的意思,并试图“修复”它。所以他们经常把它改成这样的东西,毫不奇怪地在你不期望的地方增加了一列。添加将抵消这种行为。@CBroe,它不一定是过时的HTML。当然,这是一个旧的标准(有效的HTML4),但这并不意味着它是错误的。只是不太好看,而且远不如HTML5+CSS3强大。我没有说这在技术上是错误的(使用HTML4.01过渡Doctype是有效的)——但它已经过时了,现在不应该再写这样的代码了(除非是在非常特殊的情况下,可能无法选择使用CSS,例如过滤所有CSS的系统的电子邮件模板)@Tularis好的,我想我明白你在说什么了。既然有一个
%s
,其中有一个变量被定义为
未支付
,我们没有得到支付……那么
。那么未标记的“%s\n”如何工作呢?