Ниже приведена таблица i, созданная для отображения имени ресторана, местоположения и меню для владельцев таблиц. Теперь каждая из строк для меню столбца имеет значение "Кнопка". Моя таблица готова с идеальными значениями.
После нажатия кнопки, соответствующей каждому Ресторану, откроется новый файл (openmenu.php) и отобразит название ресторана, номер мобильного телефона этого ресторана и меню. Но пока, нажав каждую кнопку, я могу отображать только верхние строки последней строки таблицы. Помоги мне. Я новичок в php.
<?php
include 'nav.php';
$sql = 'SELECT * FROM owners';
$query = mysqli_query($con, $sql);
if (!$query) {
die ('SQL Error: ' . mysqli_error($con));
}
?>
<html>
<head>
<link rel = "stylesheet" type = "text/css" href = "css/style.css">
<style>
.data-table{
width: 1024px;
margin-left: 150px;
text-align:center;
border: 1px solid firebrick;
background-color: white;
}
td,th{
border: 1px solid firebrick; padding: 3px 2px 1px 1px;
}
</style>
</head>
<body>
<div class="container">
<article>
<table class="data-table">
<thead>
<tr>
<th>Restuarant Name</th>
<th>Location</th>
<th>Menu</th>
</tr>
<tr>
</tr>
</thead>
<tbody>
<?php
while ($row = mysqli_fetch_array($query)){
$_SESSION['resphone'] = $row['resphone'];
$_SESSION['restaur'] = $row['restaur'];
echo '<tr>
<td>'.$row['restaur'].'</td>
<td>'.$row['loc'].'</td>
<td style="background-color:firebrick;"><form method="post" action="openmenu.php?id=$row[restaur]"><input value="<?php echo $restaur;?>" type="hidden">
<input type="submit" value="View"></form></td>
</tr>';
}
?>
</tbody>
</table>
</form>
</article>
</div>
</body>
</html>
<?php
include('nav.php');
?>
<html>
<head>
<link rel="stylesheet" href="css/style.css">
<style>
table, td {
border: none;
text-align: center;
text-align-last: center;
}
</style>
</head>
<body>
<div class="container">
<article>
<form method="get" align="center" action="" class="formwrap" enctype='multipart/form-data'>
<h1><?php $restaur = $_SESSION['restaur'];
echo $restaur ;?></h1>
<h1>Call to Order:</h1>
<?php $resphone = $_SESSION['resphone'];
echo $resphone;
?>
<br>
<br>
<?php
$sql = "select img from owners where restaur ='$restaur'";
$result = mysqli_query($con,$sql);
$row = mysqli_fetch_array($result);
$image_src2 = "upload/".$row['img'];
?>
<img src='<?php echo $image_src2; ?>' >
</form>
</article>
</div>
</body>
</html>
Проблема 1
В этом фрагменте вы устанавливаете переменные сессии resphone
и restaur
к значениям магазина вы сейчас Перебор. Снова и снова. Вот почему вы только когда-либо получаете информацию о последнем магазине - это последнее, что вы задали для этих переменных.
while ($row = mysqli_fetch_array($query)){
$_SESSION['resphone'] = $row['resphone'];
$_SESSION['restaur'] = $row['restaur'];
Выпуск 2
Вероятно, вы должны изменить метод формы, чтобы получить и отбросить неиспользуемый скрытый ввод следующим образом:
<form method="post" action="openmenu.php?id=<?=$row['restaur']?>">
<input type="submit" value="View">
</form>
Или более вероятно, просто изменить его обычную старую a
ссылку:
<a href="openmenu.php?id=<?=$row['restaur']?>">View</a>
Проблема 3
Вы полностью игнорируете идентификатор магазина, запрошенный в openmenu.php
. Вы используете $_SESSION
где вы должны использовать $_REQUEST
или $_GET
. Я не буду приводить пример того, как вы должны это делать. Вместо этого, пожалуйста, обратитесь к этому ответу, прежде чем двигаться дальше.
first you getting data from database & then use view button for openmenu.php but why u use this way
<form method="post" action="openmenu.php?id=$row[restaur]"><input value="<?php echo $restaur;?>" type="hidden"><input type="submit" value="View"></form>