2013-03-30 26 views
0

有人可以幫我關於下面的代碼嗎?簡而言之,我試圖在動態填充表的垂直面上獲取兩個單獨的SQL表的數據,一個位於水平面(品牌)和另一個(分配器)。在動態填充的表上打印兩個單獨的SQL表數據 - PHP

我的問題是,如果你通過代碼,我不能得到在我從數據庫中顯示的每個相應品牌名稱下填充的文本框。文本框僅出現在第一個品牌名稱列中。

我的第二個問題是如何在這裏爲動態填充的文本框分配唯一的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); 
?> 

回答

0

你正在創建循環,不與海誓山盟,和同樣爲querys的執行...

如果要解決這個問題,你將不得不雀巢環路一起,東西像:

​​

更好的解決方案,雖然,會是這樣的(當然$ 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); 
?> 

注意名稱='textBox []'。從PHP中,你可以用$ _POST ['textBox'](或$ _GET ['textBox'])訪問變量,PHP將返回一個數組。