Я строю веб-сайт с легкой системой управления заказами бэк-офиса. Я сталкиваюсь с техническими трудностями, поскольку я все еще участвую в процессе обучения php. У меня есть php-меню, которое запускает разные сценарии, и этот (waiting_orders.php) отображает ожидающие заказы в таблице html. Нажимая на первичный ключ заказа, хранящийся в кнопке, пользователь должен иметь возможность просматривать детали заказа с помощью order_detail.php (присоединиться к таблице клиентов и т. Д.). Эти два сценария выполняются отлично, но order_detail.php не показывает ожидаемый результат.php/pdo/mysql доступ к выбранной строке из таблицы select * в html
waiting_orders.php
<?php
session_start();
if(isset($_POST['detail']))
{ header('Location: order_detail.php'); }
?>
<!DOCTYPE html>
all html stuff
<?php // all db connexion stuff
$status = "waiting";
$select = $connexion -> prepare("SELECT orderID,order_date,order_qty,order_amount
FROM Orders WHERE status = '$status'"
);
$select->execute();
$result = $select->fetchall();
echo '<table cellpadding="0" cellspacing="0" class="db-table">';
echo '<tr><th>Order no</th><th>Date</th><th>Quantity</th><th>Amount</th></tr>';
foreach($result as $row)
{
$_SESSION['order_key'] = $row['orderID']; // orderID is the primary key
echo '<tr>';
echo '<form method="post" action=""><td><button class="btn btn-danger bold" type="submit" name="detail" value="'.$_SESSION['order_key'].'">'.$row['cmdID'].'</button></td></form>';
echo '<td>',$row['order_date'],'</td>';
echo '<td>',$row['order_qty'],'</td>';
echo '<td>',$row['order_amount'],'</td>';
echo '</tr>';
}
echo '</table>';
?>
order_detail.php
<?php
session_start();
$select_key = $_SESSION['order_key'] ;
?>
<!DOCTYPE html>
all html stuff
<?php // all db connexion stuff
$select = $connexion -> prepare(
"SELECT * FROM Orders WHERE orderID = '$select_key'"
);
Как вы можете догадаться, order_detail.php всегда отображает последнюю строку, а не текущий OrderId, выбранный пользователем. Я пытался использовать массив, но безуспешно, поскольку я не вижу, как его обрабатывать. Благодарю.
вы делаете это в цикле => $ _SESSION [ 'order_key'] = $ строки [ 'номер заказа']; поэтому последний идентификатор OrderID будет сохранен в сеансе. –
Чтобы отладить order_detail.php, я бы попробовал 'echo 'SELECT * FROM Orders WHERE orderID =' $ select_key '" ', чтобы вы могли видеть фактический запрос, который делается в базе данных, затем скопируйте и вставьте это в phpMyAdmin, если вы имейте это, чтобы увидеть, дает ли он ожидаемый результат или сообщение об ошибке. – grateful
правильный Dr.Stitch, поэтому я попытался сохранить ключи OrderID в массиве, скажем, $ keys = array(); и $ keys [] = $ row ['orderID']; и $ _SESSION ['order_key'] = $ keys; У меня есть все ключи orderID, но я все еще не знаю, на какой из них пользователь нажал. – devoteur