Отображение функций PHP с помощью HTML / CSS - PullRequest
1 голос
/ 01 августа 2011

У меня есть код 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 ]

3 голосов
/ 01 августа 2011

Вы вызываете отдельный цикл для каждой из ваших переменных.Нет необходимости разделять это на несколько функций, поскольку цикл требует, чтобы две переменные отображались вместе.

Как бы я справился с этим?Я бы сохранил результат SQL в полном массиве, а затем перебрал этот массив для вывода вашего HTML.Это можно разделить на две функции, если вы хотите.Может быть полезно, если вам нужно использовать результаты более одного раза на странице.

Я использую строковый синтаксис HEREDOC , чтобы объединить переменные 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 голос
/ 01 августа 2011

Вам необходимо преобразовать логику отображения в один цикл вместо двух отдельных циклов.

Например:

<?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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...