2013-05-02 243 views
2

正向:

我已經檢查了Stack Overflow上類似的措辭問題,但沒有具體說明我正在嘗試的內容。將PHP foreach循環與SQL foreach循環結合使用

我有:

我有會話數據,兩個循環和一個SQL表。

  1. 特定現有會話數據的第一循環檢查,並使用該數據的 鍵(而不是值),以確定哪些IDS 應該從表中選擇(SQL)。
  2. 第二個循環逐行輸出SQL結果。

    1. 第一循環查找當前添加到購物車 (鍵=產品ID,貴重物品:

    ......這也可以在一個不那麼抽象和友好的方式進行=數量)來確定什麼產品 應列在「您的訂單」頁面上。

  3. 第二個循環列表的數據行與每個產品ID 相關聯,如標題,說明和單位成本。

我需要什麼:

由於我的會話數據包括產品標識(鍵)和相應的量(值),我需要顯示的數量,因爲每個輸出行的一部分。

id    | title   | description | unit cost  | amount    | subtotal 
session data key | from database | from database | from database | session data value | basic PHP math 
(also in database)                  (unit cost * amount) 

我的代碼:

第一循環中使用的會話數據密鑰來查詢要求的產品:

$id_from_session = "WHERE id = '9999999999'"; //fix due to not being sure how to simuataneously incorporate "WHERE" and "OR" into query loop (only looping the "OR" condition). 

foreach($_SESSION['post'] as $key=>$value) 
    {  
     $id_from_session .= "OR id ='".$key."'"; 
    } 

第二回路,以輸出所產生的查詢的行:

foreach ($yourorders as $yourorder) 
    { 
    ?> 
     <?php echo $yourorder->title; ?></br> 
     <?php echo $yourorder->description; ?></br> 
     <?php echo $yourorder->value; ?></br> 
     <?php /* I NEED THE QUANTITY HERE */ ?></br> 
     <?php /* VALUE * QUANTITY HERE */ ?></br> 
    <?php 
    } 
<?php /* OVERALL TOTAL OUTSIDE OF LOOP */ ?></br> 

我的問題:

如何將會話數據循環中的數量(和數量*單元值)合併到SQL結果循環中?

回答

2
$_SESSION['post'][$yourorder->id] 

應該讓你的數量正確嗎?所以,

<?php echo $_SESSION['post'][$yourorder->id]; ?> 

,或者如果短標籤被允許

<?= $_SESSION['post'][$yourorder->id]; ?> 

還要建設WHERE串一個更好的方式。

$where = array(); 
foreach($_SESSION['post'] as $key=>$value) 
{  
    $where[] = "id ='".$key."'"; 
} 

$id_from_session = "WHERE " . implode(' OR ', $where); 
+0

您的解決方案獲得的數量和工作容易讓我計算分類彙總(VALUE *數量)。我目前正在檢查你對WHERE字符串的建議,並試圖找出如何實現總體。 – 2013-05-02 05:16:42

+1

您可以在foreach循環中保持運行總數。 – shapeshifter 2013-05-02 05:31:41

+0

你的WHERE字符串解決方案的工作原理是,它更好,謝謝。 – 2013-05-02 05:31:46

0

$ _SESSION [ '後'] [$ yourorder-> ID]給你量,因爲密鑰是產品ID :)

以及..如果你能絕對確保您的購物車鑰匙不需要進行轉義,你可以這樣寫:

$id_from_session = "WHERE id IN ('" . implode("', '", array_keys($_SESSION['post'])) . "')"; 
+0

感謝您的回答。變形者大約在10分鐘前回答。老實說不知道這個ID是否應該逃脫。它起源於文本框的名稱而不是文本框的值。文本框的值代表數量。爲了安全起見,最好逃脫嗎? – 2013-05-02 05:52:29

+1

來自瀏覽器的任何數據(用戶可以更改它)應該被轉義或者必須被轉義 – indriq 2013-05-02 12:06:54

+0

瞭解,謝謝。 – 2013-05-02 12:13:24