使用HTML / CSS显示PHP函数

时间:2011-08-01 02:37:55

标签: php html css function mysqli

我有一些php和css代码,我试图分解成函数。我需要一些关于如何处理这个问题的建议。

 <?php
 $info = mysqli_query($dbc, "SELECT info_id, info_title FROM text") or die("Error: ".mysqli_error($dbc));
 while ($info_row = mysqli_fetch_array($info))
 {
      $info_id = $info_row['info_id'];
      $info_title = $info_row['info_title'];
 ?>
 <div style="width: 100%;">
      <div style="float: left;">
      <?php echo $info_id; ?>
      </div>
      <div style="float: left;">
      <?php echo $info_title; ?>
      </div>
      <div style="clear: both;"></div>
 </div>
 <?php } ?>

这样显示:

1个

2两个

3三

4四

以下是我将所有内容分离为函数的内容:

 function get_info()
 {
      $dbc = get_dbc();
      $info = mysqli_query($dbc, "SELECT info_id, info_title FROM text") or die("Error: ".mysqli_error($dbc));
      while ($info_row = mysqli_fetch_array($info))
      {
           $result[] = $info_row;
      }
      mysqli_free_result($info);          
      return $result;
 }

 function display_info_id()
 {
      $result=forum();
      foreach ($result as $info_row) 
      {
           $info_id = $info_row['info_id'];
           echo $info_id;
      }
 }

 function display_info_title()
 {
      $result=forum();
      foreach ($result as $info_row) 
      {
           $info_title = $info_row['info_title'];
           echo $info_title;
      }
 }



 <?php get_info(); ?>
 <div style="width: 100%;">
      <div style="float: left;">
      <?php display_info_id(); ?>
      </div>
      <div style="float: left;">
      <?php display_info_title(); ?>
      </div>
      <div style="clear: both;"></div>
 </div>

显示为: 1234 OneTwoThreeFour

我明白为什么它会这样显示,但我不明白如何让它显示我想要的方式。任何建议都会有所帮助。

编辑 -

这有可能与我拥有的3种功能有关吗?我不希望info_id和info_title在同一个函数中。

当我看到像WordPress这样的软件时,似乎我可能不得不在某种循环中包围我的HTML,并改变函数获取信息的方式?

2 个答案:

答案 0 :(得分:3)

您正在为每个变量调用一个单独的循环。将它分成多个函数是不必要的,因为循环要求两个变量一起显示。

我该如何处理?我将SQL结果存储到一个完整的数组中,然后遍历该数组以输出您的HTML。如果您愿意,可以分为两个功能。如果您需要在页面上多次使用结果,这可能很有用。

我正在使用HEREDOC string syntax将PHP变量(包含在{}中)与HTML块组合在一起。这样可以节省您通过<?php ?>

跳入和跳出PHP的麻烦
// This function is fine.
function get_info()
 {
      $dbc = get_dbc();
      $info = mysqli_query($dbc, "SELECT info_id, info_title FROM text") or die("Error: ".mysqli_error($dbc));
      while ($info_row = mysqli_fetch_array($info))
      {
           $result[] = $info_row;
      }
      mysqli_free_result($info);          
      return $result;
 }

function display_result($result)
{
  // Loop over your results and display each
  foreach ($result as $r)
  {
  // Now use the HEREDOC syntax to form your HTML block instead
  // of intermingling PHP function calls

    echo <<<HTML
   <div style="width: 100%;">
      <div style="float: left;">
        {$r['info_id']}
      </div>
      <div style="float: left;">
        {$r['info_title']}
      </div>
      <div style="clear: both;"></div>
   </div>
HTML;
// There must be no whitespace before or after the HTML; on the previous line!
  }
}

现在检索您的数据并显示它:

<?php
$results = get_info();
display_result($results);
?>

答案 1 :(得分:1)

您需要将显示逻辑重构为一个循环,而不是两个单独的循环。

例如:

<?php get_info(); ?>
 <div style="width: 100%;">
      <div style="float: left;">
      <?php display_info_id(); ?>
      </div>
      <div style="float: left;">
<?php 
      $result=forum();
      foreach ($result as $info_row) 
      {
           $info_id = $info_row['info_id'];
           $info_title = $info_row['info_title'];
           echo $info_id . "&nbsp; . $info_title . "<br/>\n";
      }
?>
      </div>
      <div style="clear: both;"></div>
 </div>