Я пытаюсь получить данные из нескольких таблиц в MySQL (таблицы содержат данные опций для каждого элемента, доступного для покупки на моем сайте электронной коммерции). Значения извлекаются из сеанса корзины покупок следующим образом:
foreach($_SESSION['cart'] as $id => $data)
{
// Calulate total for each item
$subtotal = $data['quantity'] * $data['price'];
$total += $subtotal;
// This gets the Cart sessions unique ID, so I can get the options from the database using it!
$sessionidforoptions = $data['uniquesessid'];
//Out put shopping cart data
echo "TABLE ROWS WITH EACH ITEM GO HERE (Product, Qty, Price for item etc...";
Затем я использую значение $ sessionidforoptions , чтобы получить параметры из базы данных:
// Get options IDs from Database
foreach($_SESSION['sessionoptions'][$sessionidforoptions] as $id2 => $data2) { $$id2 = $data2; }
if (isset($option1) && ($option1 != "")) { $list = $option1; }
if (isset($option2) && ($option2 != "")) { $list .= ",".$option2; }
if (isset($option3) && ($option2 != "")) { $list .= ",".$option3; }
// Query Database
$optionsquerysql = "SELECT * from productOptions WHERE productOptionsID IN ('". $list ."')";
$optionsresultsql= mysql_query($optionsquerysql) or die(mysql_error());
Затем выведите параметры:
while ($optionssql = mysql_fetch_array($optionsresultsql)) {
$optionNamesID = $optionssql["optionNamesID"];
$optionValue = $optionssql["optionValue"];
// Get option names from databsae
$optionsnamesquerysql = "SELECT * from optionNames WHERE optionNamesID = ".$optionNamesID."";
$optionsnamesresultsql= mysql_query($optionsnamesquerysql) or die(mysql_error());
//Output options names + options
while ($optionnamessql = mysql_fetch_array($optionsnamesresultsql)) {
$optionName = $optionnamessql['optionName'];
echo $optionName.': '.$optionValue.'<br />';
}
}
Это почти работает! Сессия имеет 3 варианта для каждого элемента в корзине (размер, цвет и т. Д.)
Я получаю следующее:
Товар 1 - £ 20,00 Размер: маленький
Товар 2 - £ 22,00 Размер: средний
Позиция 3 - £ 45.00 Размер: Большой
Вот что я должен получить:
Товар 1 - £ 20,00 - Размер: маленький - Цвет: черный - Пояс: маленький
Товар 2 - £ 22,00 - Размер: средний - Цвет: синий - Пояс: средний
Товар 3 - £ 45.00 Размер: большой - Цвет: розовый - Пояс: большой
Как видите, последний цикл while выводит только первый параметр каждый раз
while ($optionnamessql = mysql_fetch_array($optionsnamesresultsql)) { OPTION OUTPUT }
Должен ли я использовать foreach здесь вместо цикла while?
Действительно ценю любой совет, который кто-либо может предложить. Я понимаю, что мой код не очень чистый. Я все еще учусь ... Я сожалею об этом.
Спасибо за любой совет, который вы можете предложить