2013-05-04 33 views
0

我正在製作一個側欄供稿,它將顯示提交到我的數據庫中的10個最新內容。我對這一切都很陌生,所以我想知道..這是一個好方法去做這件事嗎?它的工作..不是自動的,但當我提交的東西到我的數據庫,它去那裏..我提交了其他的東西,然後頂部去第二.. ..!我只是不能動搖這種感覺,也許這不是一個好辦法。用mysql數據庫和php製作一個內容「feed」,這是一種安全的方式嗎?

前3節

<div class="span3 offset3"> 

<?php include 'feed/one.php'; ?> 

    <ul class="nav nav-list well"> 


     <li class="nav-header"></li> 
     <li class="active"><a href="#">HIT INFO</a></li> 
     <?php while($row = $data->fetch_assoc()) { ?> 

     <li><a href="<?php print $row['link']?>"><?php 
      Print "<tr>"; 
      Print "<th>Hit:</th> <td>".$row['hit'] . "</td> "; 
      Print "<th>Amount:</th> <td>".$row['amount'] . " </td>"; 
      Print "<th>Category:</th> <td>".$row['category'] . "</td></tr> "; 
      Print "<br><br/>"; 
      Print "</table>";?></a></li> 
     <?php } ?> 

     <li class="divider"></li> 
     <?php $data = $mysqli->query("SELECT * FROM hit ORDER BY hit_id DESC LIMIT 1, 1"); ?> 
     <?php while($row = $data->fetch_assoc()) { ?> 

     <li><a href="<?php print $row['link']?>"><?php 
      Print "<tr>"; 
      Print "<th>Hit:</th> <td>".$row['hit'] . "</td> "; 
      Print "<th>Amount:</th> <td>".$row['amount'] . " </td>"; 
      Print "<th>Category:</th> <td>".$row['category'] . "</td></tr> "; 
      Print "<br><br/>"; 
      Print "</table>";?></a></li> 
     <?php } ?> 
     <li class="divider"></li> 
     <?php $data = $mysqli->query("SELECT * FROM hit ORDER BY hit_id DESC LIMIT 2, 1"); ?> 
     <?php while($row = $data->fetch_assoc()) { ?> 

     <li><a href="<?php print $row['link']?>"><?php 
      Print "<tr>"; 
      Print "<th>Hit:</th> <td>".$row['hit'] . "</td> "; 
      Print "<th>Amount:</th> <td>".$row['amount'] . " </td>"; 
      Print "<th>Category:</th> <td>".$row['category'] . "</td></tr> "; 
      Print "<br><br/>"; 
      Print "</table>";?></a></li> 
     <?php } ?> 
     <li class="divider"></li> 
     <?php $data = $mysqli->query("SELECT * FROM hit ORDER BY hit_id DESC LIMIT 3, 1"); ?> 
     <?php while($row = $data->fetch_assoc()) { ?> 

     <li><a href="<?php print $row['link']?>"><?php 
      Print "<tr>"; 
      Print "<th>Hit:</th> <td>".$row['hit'] . "</td> "; 
      Print "<th>Amount:</th> <td>".$row['amount'] . " </td>"; 
      Print "<th>Category:</th> <td>".$row['category'] . "</td></tr> "; 
      Print "<br><br/>"; 
      Print "</table>"; ?></a></li> 
      <?php } ?> 

是被提交獲取顯示我的主頁上,直到其他東西被提交的數據,轉移到「飼料」,也進入到另一個頁面,顯示過去的數據。

回答

1

您似乎沒有任何用戶可以截取的內容,因此「安全」不是問題。

雖然你在查詢不合邏輯。沒有必要在整個頁面重複相同的查詢時使用多個偏移量,這時您可以最初獲取數據並使用該對象在需要的地方中繼內容。在文件的開頭運行一個像這樣的查詢,或者在渲染任何輸出之前運行。

"SELECT * FROM hit ORDER BY hit_id DESC LIMIT 4" 

現在你有4項,所以訪問這些整個頁面可以是這樣的:

<ul class="nav nav-list well"> 
    <li class="nav-header"></li> 
    <li class="active"><a href="#">HIT INFO</a></li> 
     <?php while($row = $data->fetch_assoc()): ?> 

      <li> 
       <a href="<?php print $row['link']?>"> 
       <table> 
        <tr> 
         <th>Hit:</th> <td><?php echo $row['hit']; ?></td> 
         <th>Amount:</th> <td><?php echo $row['amount']; ?></td> 
         <th>Category:</th> <td><?php echo $row['category']; ?></td> 
        </tr> 
        <br><br/> 
       </table> 
       </a> 
      </li> 
      <li class="divider"></li> 
     <?php endwhile; ?> 
</ul> 

現在,你有幾個標記錯誤。你關閉一張你永遠不會打開的桌子。這隻能在很小的方面被視爲表格數據,所以表格可能不是最好的方式來做到這一點。我自己並不瞭解你以這種方式使用th和td,但如果它對你有用,那麼很好。

你應該跳出php來顯示html。迴應類似"<th>"是完全沒有必要的。

1

每次查詢數據庫,並得到一個記錄顯示它的相反,你應該這樣做在其中獲取的行數單查詢,你需要:

<?php $data = $mysqli->query("SELECT * FROM hit ORDER BY hit_id DESC LIMIT 1, N"); ?> 

這取第N行,當然N必須是數字。然後,你應該循環拋出行並按照你現在正在做的方式打印。唯一的區別是它可能需要一段時間才能正確地獲得開放/循環/關閉表的細微差別,但是這是一個非常好的投資時間來圍繞它!

0

您實際上使用hit_id字段來對從數據庫中獲得的數據進行排序。

如果你想實際檢索「10個最新的東西提交到我的數據庫」,你需要的不是自動遞增的ID。 (例如amount行上的COUNT)。這將取決於實際值/的方式來填補這一領域,但它可能是這樣的,而不是:

SELECT * FROM hit GROUP BY Category ORDER BY amount DESC; 

關於這一部分:

但是當我提出的東西到我的數據庫,它去那裏..我 提交別的東西,然後將頂部進入到第二

的原因很簡單,你用ORDER BY hit_id DESC,這就是爲什麼最後插入的ID是第一次來。

相關問題