2016-02-27 67 views
2

嗨,大家好,我只是第一次使用學習PHP和建立我自己的網站等試用它。我有一個食譜數據庫。對於每個配方它有一個成分列表。每個配方將有不同的金額。所以一個將有5個,其他可以有3個等我的代碼的問題是。如果有人搜索食譜,並找到它,它會返回成分,但有時如果它比我放在那裏的div更多,它會返回一些空值。我也瞭解sql注入等和不好的做法,但我只是玩它。我想它的工作,然後解決這部分後來:)PHP搜索功能顯示null

PHP:

   <div class="panel panel-default"> 
        <div class="panel-heading"><b>' . htmlentities($rN, ENT_QUOTES) . '</b></div> 
           </a> 

    } 

?> 

現在,我在我的白圈很肯定我正在想,如果後聲明div標籤並做一個說,如果值== null,則不要顯示,但我曾嘗試和沒有奏效所以在這個問題上的任何幫助將是巨大

感謝

+0

這一切都很好,它只是我在while循環中放置的額外div,因爲有些食譜有超過3種成分 – Nevershow2016

+0

@ fusion3k,所以搜索功能都可以正常工作,正如我所說的,一些食譜有更多3 ing它會顯示在第4和第5項 – Nevershow2016

+0

空值所以我只需要一個如果說明第4和第5格周圍檢查是否爲空和不發佈它 – Nevershow2016

回答

1

您的成分HTML似乎被重複,這樣你就可以解決空<div>問題並縮短您的代碼使用for環路和if條件:

$output .= '<div class="panel panel-default"> 
      (...) 
      <h3 class="media-heading">INGREDIENTS:</h3>'; 

for($i=1; $i < 7; $i++) 
{ 
    if(${"rI$i"}) 
    { 
     $output .= '<div class="food-graph"> 
      <span class="food-graph-title">' . htmlentities(${"rI$i"}, ENT_QUOTES) . '</span> 
     </div>'; 
    } 
} 

$output .= ' (...) '; 
+0

對不起,這是去代替whiile循環嗎?> – Nevershow2016

+0

如果可能,我知道它的麻煩,但你可以複製和粘貼整個代碼,並且這是假設去,因爲我努力讓它工作 – Nevershow2016

+0

啊這是輝煌的,非常感謝你的幫助 – Nevershow2016

1

如果遇到空值是一個問題,這將只打印你的行中包含的成分。

while($row = mysql_fetch_array($query)) { 
     $rN = $row['recipeName']; 
     $i=1; 
     $recipes = ''; 
     if (isset($row['recipe_ing'.$i]) { 
      while(isset($row['recipe_ing'.$i]) { 
       $value = htmlentities($row['recipe_ing'.$i], ENT_QUOTES); 
       $recipes .= <<< EOT 
<div class="food-graph"> 
    <span class="food-graph-title">$value</span> 
</div>     
EOT; 
       $i++; 
      } 

      $output .= <<< EOT 
<div class="panel panel-default"> 
    <div class="panel-heading"><b>' . htmlentities($rN, ENT_QUOTES) . '</b></div> 
     <div class="panel-body"> 
      <div class="pull-left col-xs-12 col-sm-4"> 
       <a href="#"> 
        <img class="img-thumbnail img-responsive" src="Image/green.jpg"> 
       </a> 
       <a class="btn btn-success btn-block btnrec" href="#">View Recipe</a> 
      </div> 
      <div class="col-xs-12 col-sm-6 col-md-6"> 
       <div class="media-body"> 
        <h3 class="media-heading">INGREDIENTS:</h3> 
$recipes 
       </div> 
      </div> 
     </div> 
    </div> 
    <div class="panel-footer">Rating</div> 
</div> 
EOT; 
     } 
    } 

編輯:另外,我使用here文檔設置字符串。帶有EOT的行;的前面必須沒有空白或代碼。它必須在行的開始。也沒有代碼可能在它後面的同一行上。否則,你的文件將變成一個巨大的字符串。

+0

錯誤26行 – Nevershow2016

+0

while(isset($ row ['recipe_ing'。$ i] ){ – Nevershow2016

+0

當時忘了一個括號,再試一次 –