2016-11-29 39 views
0

我有一个水平使用表PHP和MySQL现在PHP MySQL的垂直表

table

我怎样才能做一个垂直表从这个代码?

<div class="content-loader"> 
    <table cellspacing="0" width="100%" id="rank2" class="table table-striped table-hover table-responsive"> 
    <thead> 
     <tr> 
     <th>Nick</th> 
     <th>Kredity</th> 
     <th>Body1</th> 
     <th>Body2</th> 
     <th>Cas</th> 
     <th>online</th> 
     </tr> 
    </thead> 
    <tbody> 
     <?php 
     require_once 'dbconfig.php'; 
     $stmt = $db_con->prepare("SELECT ranks.steamId, ranks.points, ranks.lastDisplayName, ranks.lastUpdated, ranksrussia2.points AS points2, uconomy.balance 
     FROM ranks 
     INNER JOIN ranksrussia2 ON ranks.steamId = ranksrussia2.steamId 
     LEFT JOIN uconomy ON ranks.steamId = uconomy.steamId 
     WHERE ranks.steamId = ?"); 
     $stmt->execute(array($steamprofile['steamid'])); 

     while($row = $stmt->fetch(PDO::FETCH_ASSOC)) 
     { 
      echo "<td>". $row['lastDisplayName']."</td><td>". $row['balance'] ."</td><td>". $row['points'] ."</td><td>". $row['points2'] ."</td><td>". $row['points2'] ."</td>"; 
     } 
     ?> 
    </tbody> 
    </table> 
</div> 
+2

您不清楚您实际询问的内容。在这里,你的意思是什么_exactly_是什么意思?你有一张有几列的桌子。精细。显然你会尝试将这些列输出到一个html表格中。 “垂直”和“水平”在哪里起作用? – arkascha

+0

@arkascha OP需要垂直列出“th”,我想。所以,每个'tr'都会有'td's值为一个类型 –

+0

@u_mulder可能是,可能是,但问题是模糊的... – arkascha

回答

0

你可以试试这个一个

只需复制并粘贴准备和改变的变量,同样的推移行的基础上,执行上的行

<div class="content-loader"> 

<?php 
    require_once 'dbconfig.php'; 
    $stmt1 = $db_con->prepare("SELECT ranks.steamId, ranks.points, ranks.lastDisplayName, ranks.lastUpdated, ranksrussia2.points AS points2, uconomy.balance FROM ranks INNER JOIN ranksrussia2 ON ranks.steamId = ranksrussia2.steamId LEFT JOIN uconomy ON ranks.steamId = uconomy.steamId WHERE ranks.steamId = ?"); 
    $stmt2 = $db_con->prepare("SELECT ranks.steamId, ranks.points, ranks.lastDisplayName, ranks.lastUpdated, ranksrussia2.points AS points2, uconomy.balance FROM ranks INNER JOIN ranksrussia2 ON ranks.steamId = ranksrussia2.steamId LEFT JOIN uconomy ON ranks.steamId = uconomy.steamId WHERE ranks.steamId = ?"); 
    $stmt3 = $db_con->prepare("SELECT ranks.steamId, ranks.points, ranks.lastDisplayName, ranks.lastUpdated, ranksrussia2.points AS points2, uconomy.balance FROM ranks INNER JOIN ranksrussia2 ON ranks.steamId = ranksrussia2.steamId LEFT JOIN uconomy ON ranks.steamId = uconomy.steamId WHERE ranks.steamId = ?"); 
    $stmt4 = $db_con->prepare("SELECT ranks.steamId, ranks.points, ranks.lastDisplayName, ranks.lastUpdated, ranksrussia2.points AS points2, uconomy.balance FROM ranks INNER JOIN ranksrussia2 ON ranks.steamId = ranksrussia2.steamId LEFT JOIN uconomy ON ranks.steamId = uconomy.steamId WHERE ranks.steamId = ?"); 
    $stmt5 = $db_con->prepare("SELECT ranks.steamId, ranks.points, ranks.lastDisplayName, ranks.lastUpdated, ranksrussia2.points AS points2, uconomy.balance FROM ranks INNER JOIN ranksrussia2 ON ranks.steamId = ranksrussia2.steamId LEFT JOIN uconomy ON ranks.steamId = uconomy.steamId WHERE ranks.steamId = ?"); 

    $stmt1->execute(array($steamprofile['steamid'])); 
    $stmt2->execute(array($steamprofile['steamid'])); 
    $stmt3->execute(array($steamprofile['steamid'])); 
    $stmt4->execute(array($steamprofile['steamid'])); 
    $stmt5->execute(array($steamprofile['steamid'])); 

    ?> 

<table cellspacing="0" width="100%" id="rank2" class="table table-striped table-hover table-responsive"> 
<thead> 
<tr> 
<td>Nick</td> 
<?php 
while($row = $stmt1->fetch(PDO::FETCH_ASSOC)) 
    { 
     echo "<td>". $row['lastDisplayName']."</td>"; 
    } 
?> 
</tr> 
<tr> 
<td>Kredity</td> 
<?php 
while($row = $stmt2->fetch(PDO::FETCH_ASSOC)) 
    { 
     echo "<td>". $row['balance'] ."</td>"; 
    } 
?> 

</tr> 
<tr> 
<td>Body1</td> 
<?php 
while($row = $stmt3->fetch(PDO::FETCH_ASSOC)) 
    { 
     echo "<td>". $row['points'] ."</td>"; 
    } 
?> 

</tr> 
<tr> 
<td>Body2</td> 
<?php 
while($row = $stmt4->fetch(PDO::FETCH_ASSOC)) 
    { 
     echo "<td>". $row['points2'] ."</td>"; 
    } 

?> 


</tr> 
<tr> 
<td>Cas</td> 
<?php 
while($row = $stmt5->fetch(PDO::FETCH_ASSOC)) 
    { 
     echo "<td>". $row['points2'] ."</td>"; 
    } 

?> 

</tr> 
<tr> 
<td>Online</td> 

</tr> 
</thead> 
<tbody> 

</tbody> 
</table> 

</div> 
+0

仅显示其首个​​,https://ctrlv.cz/shots/2016/11/ 29/nplc.png – Seuss

+0

所以我想你应该为每个表头创建不同的查询。你知道我的意思? –

+0

我不知道,对不起。它仍然是PHP?我不能编辑mysql cullums – Seuss

1

产生当表,fetch()作品对于水平印刷的桌子非常有效。但是,在你的情况下,它更好地打印出来之前fetchAll()数据:

<?php 

    function unite(string $prefix, string $suffix, array $array){ 
    $str = ''; 
    foreach($array as $value){ 
     $str.= $prefix . $value . $suffix; 
    } 

    return $str; 
    } 

    if($stmt->execute(array($steamprofile['steamid']))){ 
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
    } else { 
    die('query failed'); 
    } 

?> 

<table> 
    <tbody> 
    <tr> 
     <th>Nick</th><?php echo unite('<td>', '</td>', array_column($rows, 'lastDisplayName')) ?> 
    </tr> 
    <tr> 
     <th>Kredity</th><?php echo unite('<td>', '</td>', array_column($rows, 'balance')) ?> 
    </tr>  
    </tbody> 
</table> 

这样你就可以抓住列,打印出来的1分走。如果您不希望列数超过1,则还可以简单地执行以下操作:

<?php 

    if($stmt->execute(array($steamprofile['steamid']))){ 
    if(!is_array($row = $stmt->fetch(PDO::FETCH_ASSOC))){ 
     die('no results'); 
    } 
    } else { 
    die('query failed'); 
    } 

?> 

<tr> 
    <th>Nick</th><td><?php echo $row['lastDisplayName'] ?></td> 
</tr> 
+0

这可能会比我的想法做得更好。我不知道如何使用准备好的声明和Pdo呢。我只是想着它的逻辑部分。 –

+0

请仔细阅读,当你掌握它的时候,其实很简单。也更安全。 – Xorifelse

+0

是的。我知道它更安全,但我只是新的。我们学校不会教给我们。甚至PHP。我们只需要自己学习。 hehehe .. –