2016-02-27 70 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

当时忘了一个括号,再试一次 –