2012-11-09 222 views
1

我建立了一個簡單的網上商店,我需要處理訂購的產品。訂單與訂購產品的編號非常好。mysql從其他表中獲取數據

我希望產品的名稱和價格顯示在頁面上,我顯示有關訂單的所有詳細信息。太糟糕了,這是行不通的..

這是我的嘗試:

代碼來獲取產品(第)下令:

$query2 = mysql_query("SELECT * FROM orders_products WHERE order_id='".$_GET['order']."'"); 
while ($line2 = mysql_fetch_assoc($query2)) 
{ 
$row2[] = $line2; 
$smarty->assign('row2', $row2); 
} 

(嘗試)獲取產品名稱和價格:

$query4 = mysql_query("SELECT * FROM products WHERE id ='".$row2['product_id']."'"); 
while ($line4 = mysql_fetch_assoc($query4)) 
{ 
$row4[] = $line4; 
$smarty->assign('row4', $row4); 
} 

顯示它(請原諒我在html一些荷蘭的話):

   <div class="module"> 
       <h2><span>Bestelde Producten</span></h2> 
       {section name=row2 loop=$row2} 
       {section name=row4 loop=$row4} 
       <div class="module-table-body"> 
        <table id="bestelling" class="bestelling"> 
         <thead> 
          <tr> 
           <th style="width:3%">#</th> 
           <th style="width:10%">Naam</th> 
           <th style="width:10%">Bedrag</th>       
           <th style="width:3%">Aantal</th>          
          </tr> 
         </thead> 
         <tbody> 
          <tr> 
           <td>{$row2[row2].id}</td> 
           <td>{$row4[row4].name}</td> 
           <td>{$row4[row4].price}</td> 
           <td>{$row2[row2].product_amount}</td> 

          </tr> 
         </tbody> 
        </table></br> 
        <p><strong>Totaal: </strong></br> 
        <strong>BTW (21%): </strong></p> 
        </br> 
        <p><strong>Totaal Inclusief BTW: </strong></p> 
        {/section} 
        <div style="clear: both"></div> 
       </div> <!-- End .module-table-body -->   
       </div>  
       </div> 

orders_products表:

ID ORDER_ID的product_id product_amount

產品表:您的回答
ID CATEGORY_ID名稱描述蛞蝓價格IN_STOCK


謝謝你們! Kami的代碼適合我。

我是如何開始:

$queryx = mysql_query("SELECT * FROM products inner join orders_products on products.id = orders_products.product_id WHERE order_id = '".mysql_real_escape_string($_GET['order'])."'"); 

while ($linex = mysql_fetch_assoc($queryx)) 
{ 
$rowx[] = $linex; 
$smarty->assign('rowx', $rowx); 
} 

你認爲這是安全的?我將最終開始使用mysqli或PDO,但是我覺得它太難以應對,因爲我仍然是初學者。

你知道任何有關確保php - > mysql的好指南嗎?

到目前爲止感謝!

回答

1

嘗試

$queryx = mysql_query("SELECT * FROM products inner join orders_products on products.id = orders_products.product_id WHERE order_id = " . $_GET['order']); 

while ($linex = mysql_fetch_assoc($queryx)) 
{ 
    $rowx[] = $linex; 
    $smarty->assign('rowx', $rowx); 
} 

我做加盟到的數據通過一個查詢鏈接在一起。這將允許您在一個查詢中獲得所有產品信息。我懷疑你的問題是order_id='".$_GET['order']."'"附近的報價。

+0

你爲什麼認爲報價是一個問題? MySQL在必要時自動轉換數據類型。 – Barmar

1

使用JOIN:

select o.id, o.product_amount, p.name, p.price 
from orders_products o join products p 
on p.id = o.product_id 
where o.id = '" . mysql_real_escape_string($_GET['order']) . "'" 

如果你剛剛起步,你不應該使用mysql_XXX功能,它們已被取消,容易得到SQL注入(你需要使用mysql_real_escape_string宗教,以避免它)。您應該使用mysqli或PDO與準備語句來避免此問題。

+0

謝謝,我在我的固定代碼中使用了mysql_real_escape_string! – jediah