如何根据mysql返回的不同值显示php结果

时间:2015-03-09 14:12:36

标签: php html mysql css

我的数据库表包含字段 id 文字类型。在类型中,我可以将值 1 2 。如果返回的类型是1,我想显示一个html输出,如果type是2,我想显示其他输出。

表:

id  text       type
1   Some text  1
2   Blah Blah  2

所以我的简单查询SELECT * from table将返回值数组。在我的HTML中,我想输出它:

<?php foreach ($model as $data): ?>

<h4>Text where status is 1:</h4>  

echo $data['text'];

<h4>Text where status is 2:</h4>

echo $data['text'];

<?php endforeach ?>

我试过在这样的foreach中使用if:

<?php if ($data['type'] == "1"): ?>
    <h4>Text where status is 1:</h4>

    echo $data['text'];
<?php else: ?>
    <h4>Text where status is 2:</h4>

    echo $data['text'];
<?php endif ?>

但这并没有真正起作用。我的解决方案是否有一个查询将返回类型为1的文本,另一个类型为2的查询?或者有更好的解决方案吗?

我想输出如下:

<h4> Text where status is 1 </h4>    


First text.

Second text.

Third text.


<h4> Text where status is 2 </h4>  


Fourth Text.

Fifth Text.

2 个答案:

答案 0 :(得分:2)

在这种情况下,我会这样做,先生:

$outputs = array("1" => array(),"2" => array());

foreach ($model as $data) {
   $outputs[$data['type']][] = $data['text'];
}

foreach ($outputs as $type => $values) {
   echo "<h4>Text where status is {$type}: </h4><br />";
   foreach ($values as $text) {
      echo $text . " <br />";
   }
}

说明:

我们不能在PHP中以这种方式内联打印所有内容,这就是我们原因:

  1. 声明一个包含两个值的数组,它们是需要检查的“$ data ['type']”。通过这样做,我们将类型声明为键和与每个键对应的数组。
  2. 当我们遍历结果时,我们将结果推送到上面相应键的正确数组中。将$ output [$ data ['type']]传递给具有'type'2的结果与执行:$ output ['2']完全相同。下一个[]表示“在该数组中推送该元素”,因此我们根据其密钥填充数组。
  3. 由于数组的结构再次循环,我们通过获取TYPE(“key”)和它的值来循环它,它是$ data ['text']并且我们首先打印类型(dinamically,so如果明天要添加类型3,则可以在没有很多问题的情况下执行此操作),然后是与其类型对应的值。
  4. 输出:

    <h4>Text where status is 1: </h4><br />hello <br />ohai dude <br /><h4>Text where status is 2: </h4><br />hello dude <br />
    

    从这样的输入数组:

    $model = array(
    0 => array( "id" => "0",
                "type" => "1",
                "text" => "hello"
                ),
    1 => array( "id" => "1",
                "type" => "2",
                "text" => "hello dude"
                ),
    2 => array( "id" => "2",
                "type" => "1",
                "text" => "ohai dude"
                )
    );
    

答案 1 :(得分:0)

// connect to db first
$link = mysqli_connect('host','user','pass','database');
// get something from db
$result = mysqli_query($link, "SELECT * FROM table ORDER BY type");

// loop through result and echo
$flag1 = false;
$flag2 = false;
while($data = mysqli_featch_array($result, MYSQLI_ASSOC)) {
   if($data['type'] == "1") {
      if(!$flag1) {
         echo '<h4>Text where status is 1:</h4>';
         $flag = true;
      }
      echo $data['text'];
   } else {
      if(!$flag2) {
         echo '<h4>Text where status is 2:</h4>';
         $flag = true;
      }
      echo $data['text'];
   }   
}