在动态填充的表上打印两个单独的SQL表数据 - PHP

时间:2013-03-30 14:08:18

标签: php

有人可以帮我解决以下代码吗?简而言之,我正在尝试获取两个单独的SQL表数据,一个位于水平侧(品牌),另一个位于动态填充表的垂直一侧(分销商)。

我的问题是,如果你浏览代码我不能在每个相应的品牌名下填写文本框,我将从数据库中显示。文本框仅出现在第一个品牌名称列中。

我的第二个问题是如何在此处为动态填充的文本框分配唯一ID或名称?

    <?php
$q=$_GET["q"];

include ("../connection/index.php"); 
$sql="SELECT * FROM distributors WHERE rsm='".$q."'";
$sqlq="SELECT * FROM brands";
$result = mysqli_query($db,$sql) or die ("SQL Error_er1");
$resultq = mysqli_query($db,$sqlq) or die ("SQL Error_er2");

echo "<table border='1'>
<tr>
<th>Distributor</th>";
"<tr>";
while($rowq = mysqli_fetch_array($resultq))
    {
    echo "<td>" . $rowq['bname'] . "</td>";

    }
"</tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['dname'] . "</td>";
  echo "<td><input type='text' name='txt1'></td>";
  echo "</tr>";
  }
echo "</table>";

mysqli_close($db);
?>

1 个答案:

答案 0 :(得分:0)

你创建的循环没有相互关联,执行查询同样如此......

如果你想要解决它,你必须将循环嵌套在一起,如:

<?php
$q=$_GET["q"];

include ("../connection/index.php"); 
$sql="SELECT * FROM distributors WHERE rsm='".$q."'";
$result = mysqli_query($db,$sql) or die ("SQL Error_er1");

echo "<table border='1'>
<tr>
<th>Distributor</th>";
"<tr>";

//Go through all distributors
while($rowq = mysqli_fetch_array($result)) {
    echo "<td>" . $rowq['bname'] . "</td>";

    //Show all brands for current distributor
    $sqlq="SELECT * FROM brands where distributor_id = " . $rowq['rsm'];
    $resultBrands = mysqli_query($db,$sql) or die ("SQL Error Brands");

    while($row = mysqli_fetch_array($resultBrands))
    {
           $id = $row['rsm'];
        echo "<tr>";
        echo "<td>" . $row['dname'] . "</td>";
        echo "<td><input type='text' name='textBox[]'></td>";
        echo "</tr>";
    }
    //End show all brands for current distributor

}
//End Go through all distributors

更好的解决方案可能就是这样(当然,$ q必须在输入查询之前进行验证,并且还绑定了bind_param())。

<?php
$q=$_GET["q"];

include ("../connection/index.php"); 
$sql = " SELECT * FROM distributors d";
$sql .=" LEFT JOIN brands b ON (d.brand_id = b.brand_id)";
$sql .=" WHERE d.rsm=$q";
$result = mysqli_query($db,$sql) or die ("SQL Error");

echo "<table border='1'>";

while($rowq = mysqli_fetch_array($result))
{
    $id = rowq['rsm'];
    echo "<tr>";
    echo "<td>" . $rowq['dname'] . "</td>";
    echo "<td>" . $rowq['bname'] . "</td>";
    echo "<td><input type='text' name='textBox[]'></td>";
    echo "</tr>";
}


echo "</table>";

mysqli_close($db);
?>

注意name ='textBox []'。从PHP可以使用$ _POST ['textBox'](或$ _GET ['textBox']访问变量,PHP将返回一个数组)。