2010-02-19 41 views
0

讓我用一個例子來說明這一點。php&mySQL:選擇多本書並在下一屏幕中顯示其信息

  1. 考慮有10本書(可能有更多,甚至在一個屏幕上可能有100多本書)。顧客可以訂購任意數量的書籍。在方案中,每本書都是連續出現的,而書中的詳細信息則以列的形式排列。現在10本書(以及它們的細節)以10行顯示。

    BOOK_NAME DESCRIPTION PRICE 
    B1   Book 1  10  Checkbox 
    B2   Book 2  20  Checkbox 
    B3   Book 3  30  Checkbox 
    B4   Book 4  40  Checkbox 
    ... 
    B10   Book 10  100  Checkbox 
    ------------------------------------------ 
    Add to Cart button 
    
  2. 現在,用戶可以檢查以上任意數量的書籍。點擊「添加到購物車」按鈕後,我希望下一個屏幕以上述格式顯示所選圖書的詳細信息。因此,舉例來說,如果用戶選擇:B1,B3和B10和點擊「加入購物車」按鈕,在接下來的畫面,我想如下表現出來:

    BOOK_NAME DESCRIPTION PRICE IN_STOCK 
    B1   Book 1  10   2 
    B3   Book 3  30   5 
    B10   Book 10  100   1 
    

我已經添加了'有貨'欄。在這一欄中,顯示了每本書(庫存)的編號。

我在執行上述操作時遇到了問題,所以如果有人能幫助我解決這個問題,那麼這個問題真的很有幫助。我已經指出了我遇到最麻煩的部分,放置?????那裏。我試圖以最有效的方式並在單個查詢中執行此操作,而不必一遍又一遍地執行查詢(在循環中)。 (請注意,若50本書籍進行了檢查,則需要顯示50行的書與他們相關的信息,以便希望這是有道理的。)

我當前的查詢:

SELECT 
(SELECT COUNT(*) FROM books_stock WHERE books_stock.book_id ?????) AS books_in_stock, 
       books.book_id, books.description, books.book_price, books.book_name 
       FROM books 
       INNER JOIN books_stock ON books.book_id = books_stock.book_id 
       WHERE book_id ????? 

我相信,一旦查詢完成,我需要爲了能夠顯示的結果做一個

while($rows = mysql_fetch_array($result))

。我對嗎?

謝謝。

回答

0
SELECT 
(SELECT COUNT(*) FROM books_stock WHERE books_stock.book_id = books.book_id) AS books_in_stock, 
      books.book_id, books.description, books.book_price, books.book_name 
      FROM books 
      INNER JOIN books_stock ON books.book_id = books_stock.book_id 
      WHERE book_id IN (21, 23, 30) 
+0

太棒了!謝謝。 – Devner 2010-02-19 11:53:19

0

這是很長的時間,因爲我用MySQL,但在oracle中,你可以取代你的????與

IN (1,2,3,4,5) 

其中1,2,3,4,5是您的書籍ID的逗號分隔列表。

我很確定這也可以在MySQL中工作。

+0

謝謝你的迴應。另一種解決方案運行良好。 – Devner 2010-02-19 11:54:26

相關問題