0

誰かが次のコードで私を助けてくれますか? 簡単に言えば、2 つの別々の SQL テーブルのデータを取得しようとしています。1 つは水平方向 (ブランド) にあり、もう 1 つは動的に入力されたテーブルの垂直方向 (ディストリビューター) にあります。

私の問題は、コードを実行すると、データベースから表示するそれぞれのブランド名の下に入力されたテキスト ボックスを取得できないことです。テキスト ボックスは、最初のブランド名の列にのみ表示されます。

ここで、動的に入力されたテキスト ボックスに一意の 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);
?>
4

1 に答える 1

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 は配列を返します) で変数にアクセスできます。

于 2013-03-30T14:37:03.140 に答える