【问题标题】:For some reason my PHP code isn't working出于某种原因,我的 PHP 代码无法正常工作
【发布时间】:2014-03-09 21:46:10
【问题描述】:

所以我的代码应该按 ID 以 ASC(升序)顺序打印出我游戏的所有用户。它做得很好,但由于某种原因它不会正确打印他们的名字......

这是我的代码:

<table width="90%" border="1" style="border-collapse:collapse;border:4px solid #9f0606;">
  <tr height="41">
    <td align="center" colspan="2" style="border-collapse:collapse;border:4px solid #9f0606;"><strong>User List</strong></td>
  </tr>
<?
$presult = mysql_query("SELECT * FROM users ORDER BY id ASC") or die(mysql_error());
$b = 0;                    
while($row = mysql_fetch_array($presult)) {
?>
  <tr height="31">
    <td width="80%" style="border-collapse:collapse;border:4px solid #9f0606;" align="left">
      <?php
$b = $b + 1;
if($row['account_type'] == 1){
echo "<p><a style=\"color:black;text-decoration:none;\" href=\"view_profile.php?id=". $row['id'] ."\">".$row['username']."&nbsp;[".$row['id']."]</a></p>";
?>
     </td>
   <td width="20%" style="border-collapse:collapse;border:4px solid #9f0606;" align="left">
<?
echo "<p>Level:&nbsp;".$row['level']."</p>";
?>
  </td>
</tr>
<?
}elseif($row['account_type'] == 2){
?>
echo "<p><a style=\"color:#CC0000;text-decoration:none;\" href=\"view_profile.php?id=". $row['id'] ."\">".$row['username']."&nbsp;[".$row['id']."]</a></p>";
?>
  </td>
 <td width="20%" style="border-collapse:collapse;border:4px solid #9f0606;" align="left">
<?
echo "<p>Level:&nbsp;".$row['level']."</p>";
?>
</td>
 </tr>
<?
}else{
?>
echo "<p><a style=\"color:black;text-decoration:none;\" href=\"view_profile.php?id=". $row['id'] ."\">".$row['username']."&nbsp;[".$row['id']."]</a></p>";
?>
 </td>
<td width="20%" style="border-collapse:collapse;border:4px solid #9f0606;" align="left">
<?
echo "<p>Level:&nbsp;".$row['level']."</p>";
    ?>
    </td>
  </tr>
<?
}
}
?>
</table>

抱歉,它不是很干净或有条理,必须将所有内容间隔 4 次,这很烦人,所以我让它看起来有点草率。

这是我在浏览器中的代码截图:

(我不能发布图片,因为我显然还没有 10 名声望,但基本上截图显示的用户名/id 部分看起来像这样:

echo "

`this row in blue`".$row['username']." [".$row['id']."]

";?>

关卡部分看起来完全符合我的要求,如下所示:

Level: 12)

如您所见,循环的“级别”部分(打印用户级别)工作正常。如果你能在我的其余代码中找到错误,那就太棒了。哦,顺便说一句,上面写着 ($row['account_type'] == 1),没有一个用户是 account_type == 1,第一个是 account_type == 6,第二个是 account_type == 2 .它们都打印完全一样。谢谢!

图片在这里:

【问题讨论】:

  • 您是否阅读了帮助文档中有关适当标题的部分?
  • 他的意思是你的标题要具体。从字面上看,您当前的标题可能适用于数千个其他问题。
  • 你应该学习如何使用合适的文本编辑器来为你做一些事情,比如将代码块缩进 4 个空格。这样一来,StackOverflow 的格式化代码就不会很痛苦了。
  • 这是他们在学校教的通过 php 放置 html 的方式吗?我只是不明白为什么人们一直在脚本中打开和关闭 php 三百次,而不是将 html 代码放入模板中的变量中,从而实现了视觉上排列良好的代码和脚本末尾的单个 echo $html。同样值得注意的是,在一个脚本中回显 200 次会比单次回显相同的 html 代码更长。
  • @FélixGagnon-Grenier:不幸的是,PHP 最初就是这样设计的,所以人们这样使用它也就不足为奇了。

标签: php html loops if-statement


【解决方案1】:

您在多个地方过早地关闭了 php ?&gt;

<table width="90%" border="1" style="border-collapse:collapse;border:4px solid #9f0606;">
  <tr height="41">
    <td align="center" colspan="2" style="border-collapse:collapse;border:4px solid #9f0606;"><strong>User List</strong></td>
  </tr>
<?
$presult = mysql_query("SELECT * FROM users ORDER BY id ASC") or die(mysql_error());
$b = 0;                    
while($row = mysql_fetch_array($presult)) {
?>
  <tr height="31">
    <td width="80%" style="border-collapse:collapse;border:4px solid #9f0606;" align="left">
      <?php
$b = $b + 1;
if($row['account_type'] == 1){
echo "<p><a style=\"color:black;text-decoration:none;\" href=\"view_profile.php?id=". $row['id'] ."\">".$row['username']."&nbsp;[".$row['id']."]</a></p>";
?>
     </td>
   <td width="20%" style="border-collapse:collapse;border:4px solid #9f0606;" align="left">
<?
echo "<p>Level:&nbsp;".$row['level']."</p>";
?>
  </td>
</tr>
<?
}elseif($row['account_type'] == 2){
?>

***此处为示例*******

echo "<p><a style=\"color:#CC0000;text-decoration:none;\" href=\"view_profile.php?id=". $row['id'] ."\">".$row['username']."&nbsp;[".$row['id']."]</a></p>";
?>
  </td>
 <td width="20%" style="border-collapse:collapse;border:4px solid #9f0606;" align="left">
<?
echo "<p>Level:&nbsp;".$row['level']."</p>";
?>
</td>
 </tr>
<?
}else{
?>

****** 在这里 * ******

echo "<p><a style=\"color:black;text-decoration:none;\" href=\"view_profile.php?id=". $row['id'] ."\">".$row['username']."&nbsp;[".$row['id']."]</a></p>";
?>
 </td>
<td width="20%" style="border-collapse:collapse;border:4px solid #9f0606;" align="left">
<?
echo "<p>Level:&nbsp;".$row['level']."</p>";
    ?>
    </td>
  </tr>
<?
}
}
?>
</table>

【讨论】:

  • 我不明白你的意思 D:...你能告诉我一个解决办法吗?
  • 在那之后 elseif(.....){ 你正在关闭 php 标签(你给了 ?> )这将结束 php 代码,但是你仍然在输入 php 代码(echo "... 。”
  • 这只是一个地方,至少还有一个这样的错误,我建议你使用一个好的颜色编辑器并缩进你的代码
  • 天哪,谢谢你们
  • 我盯着那段代码看了大概 15 分钟,我终于决定把它贴在这里
猜你喜欢
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 2022-12-09
  • 2013-12-28
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
  • 2016-04-22
相关资源
最近更新 更多