2014-12-29 70 views
0

代码有效,但每个新数据集重复标题。我想要在顶部设置标题,从不重复...不知道是什么导致它。PHP SQL表标题重复

---------------------------------------------- -------------------------------------------------- ---------------------- randomtextrandomtextrandomtextrandomtextrandomtextrandomtextrandomtextrandomtextrandomtext --------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------------

$conn = new mysqli($servername, $username, $password, $dbname); 
$sql = "SELECT deadchar, level, class, killforumid, realm, date FROM pkdata ORDER BY deadchar DESC"; 
$result = $conn->query($sql); 
while($row = $result->fetch_assoc()) { 


$deadchar = $row['deadchar']; 
$level = $row['level']; 
$class = $row['class']; 
$killforumid = $row['killforumid']; 
$realm = $row['realm']; 
$date = $row['date']; 

$conn->close(); 

    echo 
     "<table><center><tr> 

      <th>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

      <font size=3 color=#070719>Victim</font> 

      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th> 
      <th>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

      <font size=3 color=#070719>Level</font> 

      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th> 
      <th>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

      <font size=3 color=#070719>Class</font> 

      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th> 
      <th>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

      <font size=3 color=#070719>Killer</font> 

      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th> 
      <th>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

      <font size=3 color=#070719>Realm</font> 

      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th> 
      <th>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

      <font size=3 color=#070719>Date</font> 

      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th> 

      </tr></center>"; 




     echo 
      "<tr><center> 

      <td><center>$deadchar</center></td> 
      <td><center>$level</center></td> 
      <td><center>$class</center></td> 
      <td><center>$killforumid</center></td>    
      <td><center>$realm</center></td> 
      <td><center>$date</center></td>   

      </tr>"; 

    echo "</table>"; 




} 

?> 
+0

你应该看看CSS做间距和分配方式。看看我的例子,因为它会让你得到你想要的。 – les

+0

@les和我都给你提供了工作示例,他在他的例子中留下了'&nbsp'。我选择改变你的'',这样它就更加整洁和易于阅读。 'style ='text-align:center''将作为你的'

',这样你的标题文本就在中心。你可能也想考虑给你的''和'​​'一定的宽度 – Colum

+0

你不应该** **回应HTML标签,因为PHP本身就是一个模板引擎。使用备用标签,如'if/endif' – Yang

回答

0

从您的循环中删除表格标题。把它们放在循环之上,这不会发生。请确保在循环之外/之后放置</table>

编辑:

<?php 
    $conn = new mysqli($servername, $username, $password, $dbname); 
    $sql = "SELECT deadchar, level, class, killforumid, realm, date FROM pkdata ORDER BY deadchar DESC"; 
    $result = $conn->query($sql); 

    // initialize your variable (not needed, but okay to do at the top to keep things organized if you have multiple variables at play.) 
    $myTable = ''; 

    // the ".=" appends to a variable once it is initialized already 
    $myTable .= 
    '<table> 
     <tr> 
      <th>Victim</th> 
      <th>Level></th> 
      <th>Class</th> 
      <th>Killer</th> 
      <th>Realm</th> 
      <th>Date</th> 
     </tr>'; 

    while($row = $result->fetch_assoc()) 
    { 
    $deadchar = $row['deadchar']; 
    $level = $row['level']; 
    $class = $row['class']; 
    $killforumid = $row['killforumid']; 
    $realm = $row['realm']; 
    $date = $row['date']; 

    $myTable .= ' 
     <tr> 
      <td>'.$deadchar.'</td> 
      <td>'.$level.'</td> 
      <td>'.$class.'</td> 
      <td>'.$killforumid.'</td>    
      <td>'.$realm.'</td> 
      <td>'.$date.'</td>   
     </tr>'; 
    } 
    $myTable .= '</table>'; 
    $conn->close(); 
?> 
<html> 
<head> 
<style> 
    /* Here is where you enter your styles instead of in your PHP */ 
    table { 
    text-align:center; 
    margin:0 auto; 
    } 
    th, td { 
    font-size:3; 
    color:#070719 
    } 
</style> 
</head> 
<body> 
    <!-- This will echo out your table --> 
    <?php echo $myTable; ?> 
</body> 
</html> 
+0

不要犹豫,要么从循环中删除'$ conn-> close();',关闭它应该足够了...... – fpierrat

+0

@fpierrat好点。也看看CSS,因为它有助于清理代码,并让您专注于编程错误而不是样式。 – les

1

你的代码是非常混乱的。

你不应该使用

&nbsp; 

布局代码。

现在你的问题,你的标题重复,因为你有他们在你的while()循环,因此对于每一块数据它会再次创建标题。

echo 
     "<table><tr> 

      <th style='text-align:center'><font size=3 color=#070719>Victim</font></th> 
      <th style='text-align:center'><font size=3 color=#070719>Level</font></th> 
      <th style='text-align:center'><font size=3 color=#070719>Class</font></th> 
      <th style='text-align:center'><font size=3 color=#070719>Killer</font></th> 
      <th style='text-align:center'> <font size=3 color=#070719>Realm</font></th> 
      <th style='text-align:center'><font size=3 color=#070719>Date</font></th> 

      </tr>"; 





$conn = new mysqli($servername, $username, $password, $dbname); 
$sql = "SELECT deadchar, level, class, killforumid, realm, date FROM pkdata ORDER BY deadchar DESC"; 
$result = $conn->query($sql); 
while($row = $result->fetch_assoc()) { 


$deadchar = $row['deadchar']; 
$level = $row['level']; 
$class = $row['class']; 
$killforumid = $row['killforumid']; 
$realm = $row['realm']; 
$date = $row['date']; 
     echo 
      "<tr> 

      <td style='text-align:center'>".$deadchar."</td> 
      <td style='text-align:center'>".$level."</td> 
      <td style='text-align:center'>".$class."</td> 
      <td style='text-align:center'>".$killforumid."</td>    
      <td style='text-align:center'>".$realm."</td> 
      <td style='text-align:center'>".$date."</td>   

      </tr>"; 

} 

echo "</table>"; 


$conn->close(); 


?> 

试试这个,它会工作