корзина: нужно выводить заказанные товары - PullRequest
0 голосов
/ 25 мая 2011

Другая страница, которая является страницей указателя, показывает каталог пиццерии. Каждая пицца является гиперссылкой, которая передает идентификатор на эту страницу. Суть моего вопроса в коде, который начинается с цикла foreach. Я хотел бы просто прочитать из базы данных на основе запроса SELECT под рукой. Я знаю, что странно помещать запрос в цикл, но пока это единственный способ, которым я понял, как пройти через все идентификаторы, которые находятся в массиве SESSION. Я пробовал много вещей, чтобы вывести результат, который должен дать запрос, я возился с mysqli_stmt, и все это давало мне многочисленные типы ошибок.

<?php
session_start();
require 'pizza_sc_fns.php';
require 'header.php';

@$pizzaId = $_GET['pizza_id'];



if (!isset($_SESSION['order']))
{
    $_SESSION['order'] = array();
    $_SESSION['items'] = 0;
    $_SESSION['totalprice'] = 0.00;
}
if (isset ($_SESSION['order'][$pizzaId]))
{
    echo $_SESSION['order'][$pizzaId]++;
    echo "\$_SESSION['order'][\$pizzaId] is SET \n";
}
else 
{
    echo $_SESSION['order'][$pizzaId] = 1;
}

$conn = connect2db();

foreach ($_SESSION['order'] as $pizzaItem)
{
    $query = "SELECT pizza_name FROM pizzas WHERE pizza_id = $pizzaItem";
    $res = @$conn->query($query);
    echo $res->fetch_assoc(); 
    echo "<hr />";

    //$query = mysqli_prepare($conn, "SELECT * FROM pizzas WHERE pizza_id=$pizzaItem");
    //echo var_dump($query)."<br />";
    //$stmt_exec = mysqli_stmt_fetch($query);
    //print $pizzaItem."<br />";
}


?>

<a href="logout.php"> Destroy session >> </a>

1 Ответ

0 голосов
/ 25 мая 2011

Вам нужно будет использовать цикл, но вам не нужно запускать запрос для каждой итерации. Вы можете использовать предложение in .

Ваш код будет что-то вроде

$query = 'Select pizza_name from pizzas where id in (';

foreach($_SESSION['order'] as $pizza_id) {
    $query.= mysql_real_escape_string($pizza_id).', ';
}
$query= substr($query, 0, -2); //Get rid of the trailing comma and space
$query .= ')';

И вы можете запустить запрос.

Я бы порекомендовал вам использовать подготовленные операторы, хотя я не уверен, как их использовать для входных операторов.

...