Как вы можете хранить строки результата mysql как переменную, содержащую строку в формате таблицы?

0

Моя цель состоит в том, чтобы отображать данные mysql из транзакции, которая будет просматриваться на другой странице, в другое время (данные из mysql должны быть удалены из этой таблицы после транзакции, чтобы удалить корзину покупок) Итак, я попытался сохранить mysql приводит к переменной, а затем кодирует и вставляет свои данные в столбец с форматированием blob в моей таблице Orders. Затем я добавил ввод формы со значением blob на страницу моих заказов (страница для просмотра предыдущей транзакции). Он отображает таблицу и одну строку результатов. Цикл while, похоже, не сохраняет каждую итерацию полученных результатов в таблицу, поэтому мой вывод на моей странице заказа содержит только одну позицию, а не кратность, как она должна быть. Может ли кто-нибудь помочь мне понять, как я могу исправить свой цикл, чтобы он правильно хранил данные?

Мой цикл while и попытайтесь объединить его обратно в строку, которая будет использоваться в качестве таблицы html на моей странице заказов:

...
$loop= "";
while($row = $result->fetch_assoc()) { 
$loop .=   "<tr><td>$row[product_id]</td>
                <td>$row[price]</td>
                <td>$row[quantity]</td></tr>";
}
$products= "<table><tr><th>Product</th>
                <th>Price</th>
                <th>Quantity</th>";

 $end =          "</table>";

$products= $products.$loop.$end;
$products=base64_encode(serialize($products));
$sql = "INSERT INTO orders (date,username,response,products)
VALUES ('$time', '$username', '$serial','$products')";
if ($conn->query($sql) === TRUE) {

} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}

Моя страница заказов:

echo "<table id= 'orders' style='text-align: center'>
<tr><th> date </th>
    <th> username  </th>
    <th> address  </th>
    <th> product total  </th>
    <th> shipping total  </th>
    <th> reference # </th>
    <th> products  </th>
    <th> packaging  </th></tr>";

$sql = "SELECT * FROM orders";
$result = $conn->query($sql);
if (!$result) {
trigger_error('Invalid query: ' . $conn->error);
}
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
    $response = $row['response'];

echo "<tr>  <td> $row[date]</td>
        <td> $row[username]</td>
        <td> $row[address]</td>
        <td> $row[prodtotal]</td>
        <td> shipping total </td>
        <td> reference #</td>
        <td> <form action= 
'http://localhost/WIP/secure_login/cart/Backend/orderview.php' method='POST'>
        <input type='hidden' name='products' value='$row[products]'>
        <input type= 'submit' value='Products'></form></td>
        <td> <form action= 
'http://localhost/WIP/secure_login/cart/Backend/packageview.php' 
method='POST'>
        <input type='hidden' name='pack' value='$row[response]'>
        <input type= 'submit' value='Packaging'></form></td></tr>";

 }}
  • 0
    Является ли $result->fetch_assoc() временем, когда вы используете этот набор результатов? Тогда проверь это . Но, как правило, хранить данные таким способом не очень хорошая идея. Если вы хотите сохранить историю корзины покупок, сохраните ее в таблице истории корзины покупок! (Например, таблица с product_id , price , quantity и первичным ключом таблицы ваших orders ). Представьте, что вы решили, например, отобразить price*quantity в качестве 4-го столбца в своей истории. Или, если вы хотите использовать данные для чего-либо еще, кроме отображения таблицы, например, отчета о количестве продуктов в корзине за месяц.
  • 0
    Очень хороший совет. Спасибо. Я не думал об этом. Я увлекся и не думал об этом. Полагаю, я был просто взволнован, узнав, что вы можете сохранить HTML-код и легко отобразить его одним нажатием кнопки. Правильно было бы начать с другого стола.
Теги:
loops
while-loop
mysqli

1 ответ

0

Ответ: Solarflare: $result-> fetch_assoc() во второй раз, когда вы используете этот результирующий набор? Затем проверьте это. Но, как правило, хранение данных таким образом не является такой хорошей идеей. Если вы хотите сохранить историю покупок, сохраните ее в таблице истории покупок! (Например, таблица с product_id, цена, количество и первичный ключ вашей таблицы заказов). Представьте, что вы решите, например, отобразить значение цены * в качестве 4-й колонки в своей истории. Или если вы хотите использовать данные для чего-либо еще, кроме отображения таблицы, например, отчета о количестве товаров в корзине в месяц. - Солнечные очки 1 час назад

Этот ответ показал мне, что мой второй результат не нужен, и все это можно сделать в первом. Это не только устранило мою проблему, но и заставило меня осознать, что использование дополнительной таблицы вместо отображения сохраненного кода html оставит мою историю истории корзины покупок более гибкой в будущем.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню