2015-06-25 261 views
0

我正在編寫一個簡單的PHP頁面,將信息拉入卡片。 目前我的腳本編碼的數量是「linktitle_1,linktitle_2,linktitle_3」等,可以通過,現在是3,並且如果3個單元中的任何一個都是空的,它們仍然作爲空的,之後用逗號。 我想要做的是能夠打印出0-7項中的任何信息。 (適當的列存在於數據庫中) 的僞代碼將是這樣的:PHP - 檢查單元格是否爲空

if (linktitle_1 = empty, linktitle_1_url = empty) { 
echo '<p>linktitle_1</p>'} 
else { 
do nothing 
}; 

我期待與兩個相關的鏈接做到這一點,和鏈接標題部分。所以我想我需要知道的是:

  1. 如何避免這些語句將在裏面的回聲?
  2. 如何使用if語句來檢查某些內容是否爲空/空?
  3. 有沒有更有效的方法來做到這一點?

代碼=

<?php 
// DB details 
$hostname = "localhost"; 
$username = ""; 
$password = ""; 
$dbname = ""; 

// Create connection 
$conn = new mysqli($hostname, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM relevant_topics"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // Removing special characters from rows. 
    while($row = $result->fetch_assoc()) { 

    $title_clean = $row["title"]; 
    $title_clean = strtolower($title_clean); 
    $title_clean = preg_replace('/\s*/ ', '', $title_clean); 

    $class_clean = $row["class"]; 
    $class_clean = strtolower($class_clean); 
    $class_clean = preg_replace('/\s*/ ', '', $class_clean); 

    $related_clean_1 = $row["related1"] ; 
    $related_clean_1 = strtolower($related_clean_1); 
    $related_clean_1 = preg_replace('/[.,]\s*/ ', '', $related_clean_1); 

    $related_clean_2 = $row["related2"] ; 
    $related_clean_2 = strtolower($related_clean_2); 
    $related_clean_2 = preg_replace('/[.,]\s*/ ', '', $related_clean_2); 

    $related_clean_3 = $row["related3"] ; 
    $related_clean_3 = strtolower($related_clean_3); 
    $related_clean_3 = preg_replace('/[.,]\s*/ ', '', $related_clean_3); 

    $related_clean_4 = $row["related4"] ; 
    $related_clean_4 = strtolower($related_clean_4); 
    $related_clean_4 = preg_replace('/[.,]\s*/ ', '', $related_clean_4); 

    echo' 
     <div class="mix item '.$class_clean.'"> 
     <h3>'.$row["title"].'</h3> 
     <p>'.$row["description"].'</p> 
     </br> 
     <p>Related Items:</p> 
     <p> 
     <a href="#myModal'.$related_clean_1.'" role="button" data-toggle="modal">'.$row["related1"].'</a> 
     <a href="#myModal'.$related_clean_2.'" role="button" data-toggle="modal">'.$row["related2"].'</a> 
     <a href="#myModal'.$related_clean_3.'" role="button" data-toggle="modal">'.$row["related3"].'</a> 
     <a href="#myModal'.$related_clean_4.'" role="button" data-toggle="modal">'.$row["related4"].'</a> 
     <a href="'.$row["related1_link"].'">'.$row["related1"].',</a> &nbsp; 
     <a href="'.$row["related2_link"].'">'.$row["related2"].',</a> &nbsp; 
     <a href="'.$row["related3_link"].'">'.$row["related3"].',</a> </p> 
     </br> 
     <div class="item-bottom '.$row["class"].'_counter"> 
     <a href="#myModal'.$title_clean.'" role="button" data-toggle="modal">See more</a> 
     </div> 
    </div> 

    <div id="myModal'.$title_clean.'" class="modal fade"> 
     <div class="modal-dialog"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
      <h3 class="modal-title modal-top-health">'.$row["title"].'</h3> 
      <br> 
      <p>'.$row["details"].'</p> 
      <br> 
      <a href="'.$row["linktitle_1_url"].'">'.$row["linktitle_1"].', </a> 
      <p>'.$row["linktitle_1_desc"].'</p>  
      <a href="'.$row["linktitle_2_url"].'">'.$row["linktitle_2"].', </a> 
      <p>'.$row["linktitle_2_desc"].'</p> 
      <a href="'.$row["linktitle_3_url"].'">'.$row["linktitle_3"].', </a> 
      <p>'.$row["linktitle_3_desc"].'</p>  
      </div> 
     </div> 
     </div> 
    </div> 
'; 


} 
} else { 
echo "0 results"; 
} 
$conn->close(); 
?> 

回答

0

優化與一個循環,輸出存儲在一個變量:

// build list of titles 
$titles = ''; 
for($i=1; $i<=7; ++$i) { 

    // check for data 
    if($row['linktitle_'.$i.'_url'] != null && $row['linktitle_'.$i] != null) { 

     // add to output 
     $titles .= ' 
      <a href="'.$row['linktitle_'.$i.'_url'].'">'.$row['linktitle_'.$i].', </a> 
      <p>'.$row['linktitle_'.$i.'_desc'].'</p>'; 
    } 
} 

echo ' 
      <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
      <h3 class="modal-title modal-top-health">'.$row["title"].'</h3> 
      <br> 
      <p>'.$row["details"].'</p> 
      <br>'.$titles.' 
      </div>'; 

然後,可以改變7到任何數量。

如果可能會破壞HTML,您可以使用htmlspecialchars()來轉義這些值。

$titles .= ' 
     <a href="'.htmlspecialchars($row['linktitle_'.$i.'_url']).'">'. 
     htmlspecialchars($row['linktitle_'.$i]).', </a> 
     <p>'.htmlspecialchars($row['linktitle_'.$i.'_desc']).'</p>'; 

相同的邏輯可以應用於相關鏈接。

它可以通過具有用於標題的專用表在數據庫級別進一步優化:

表:relevant_topics_titles
topic_id | title_id |名稱| url |說明

topic_id是一個外鍵的加入與你的表relevant_topicstitle_id17(或更多或更少)之間的一個數。

然後,您可以獲取與您的主題ID相關聯的所有標題,並通過它們循環來構建標題列表。

相關問題