php & mySQL: выбор нескольких книг и отображение их информации на следующем экране - PullRequest
0 голосов
/ 19 февраля 2010

Позвольте мне проиллюстрировать это на примере.

  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) )

, чтобы можно было показать результаты. Я прав?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2010

Прошло много времени с тех пор, как я использовал MySQL, но в oracle вы могли бы заменить свой ???? с

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

где 1,2,3,4,5 - список идентификаторов вашей книги через запятую.

Я почти уверен, что это будет работать и в MySQL.

0 голосов
/ 19 февраля 2010
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...