0

我不确定如何显示该items字段。我想显示两个数据表;一个包含用户的所有项目,另一个包含用户的所有项目。我所能输出的只是item_id's(我粘贴了下面的html)。如何从表格中的这些 id 获取所有项目信息item并填充 HTML?

反式表

转换表

item桌子

在此处输入图像描述

$from = 1;
$sql = $db->prepare("SELECT * FROM test WHERE from_id = :id");
$sql->bindValue(':id', $from);

$sql->execute();

while($row = $sql->fetch())
{
    $t =$row['items'];
    $u =$row['to_id'];
    $trans .= "<tr><th>Items</th><th>To</th><th>Status</th></tr><tr><td>$t</td>
            <td>$u</td></tr>";
} 

HTML 显示

在此处输入图像描述

4

4 回答 4

2

尝试这个!

<?php
    $from = 1;
   $sql = $db->prepare("SELECT * FROM test WHERE from_id = :id");
   $sql->bindValue(':id', $from);

   $sql->execute();

  while($row = $sql->fetch())
    {
     $t =$row['items'];
     $u =$row['to_id'];
             $itemIDs = @explode(",", $t);
         $items = array();
            foreach($itemIDs as $ID){
            $sqlItem = $db->prepare("SELECT itemname FROM itemtable WHERE itemid = :itemid");
            $sqlItem->bindValue(':itemid', $ID);
            $sqlItem->execute();
            $itemname ='';
            while($rowItems = $sqlItem->fetch())
            {
                $itemname .=$rowItems['itemname'];
            }

            $items[$t] = $itemname;

     }   

        $trans .= "<tr><th>Items</th><th>To</th><th>Status</th></tr><tr><td>$items[$t]</td>  <td>$u</td></tr>";
   }  

下面是我的测试代码,

<?php

  $from = 1;
 $sql = mysqli_query($db,"SELECT * FROM test WHERE from_id = '$from'");  
 while($row = mysqli_fetch_array($sql))
 {

     $t =$row['items'];
     $u =$row['to_id'];
     $itemIDs = @explode(",", $t);
     $itemname ='';
        foreach($itemIDs as $ID){
            $sqlItem = mysqli_query($db, "SELECT itemname FROM itemtable WHERE item_id = '$ID'");           

            while($rowItems = mysqli_fetch_array($sqlItem))
            {
                 $itemname .= $rowItems['itemname'].', ';
            }       


            $items[$u] = $itemname;

     }      
    $trans .= "<tr><th>Items</th><th>To</th><th>Status</th></tr><tr><td>$items[$u]</td>  <td>$u</td></tr>";
  } 

  echo "<table>".$trans."</table>";
?>
于 2013-10-30T05:57:54.150 回答
2

注意:根据您的需要更改我的查询

在你的 while 循环中

while($row = $sql->fetch())
{
$items_array = array();
$items_array = explode(",",$row["items"]);

    foreach($items_array as $key => $value)
    {                                       
        //modify ur query according to ur need
        $query3 = "SELECT  item_name
            FROM item_table 
            WHERE item_id =".$value." ";
        $result3 = mysql_query($query3);
        $row3 = mysql_fetch_assoc($result3);                                            
        $item_name .= $row3['subcategory_name'].", ";

    }
}

现在你的数组将包含 item_id,在你的 while 循环中使用 foreach 循环,并使用来自 expolode 函数的 item_id 从项目表中获取项目的信息

于 2013-10-30T06:06:32.703 回答
1

在此期间,您将不得不触发新的查询来获取项目的信息。例如:

"SELECT * FROM item_info_table WHERE id IN (id1,id2, id3)"

它将返回与 id 对应的项目信息。

于 2013-10-30T06:08:57.080 回答
0

数据未标准化。让它正常化,您将拥有一个更好、更清洁的解决方案。

于 2013-10-30T06:53:55.110 回答