这是我第一次询问有关stackoverflow的问题,这个问题让我难过。我也是php和html的初学者。
<body>
<div class="topnav" id="navbar">
<a href ="user_main_page.php"><img style="max-width:32px; margin-top:-3px;"
src="/image/logo.jpg"></a1>
<a href="user_main_page.php">Home</a>
<a class="active" href="user_ordernow.php">Order Now</a>
<a href='user_menu.php'>Our Menu</a>
<a href="user_about.php">Who are we?</a>
<a href="user_contact.php">Contact Us</a>
<a style = "float:right" href="../login_page.php">Log Out</a>
</div>
<div class="tab">
<button class="tablinks" onclick="openTab(event, 'Breakfast')"
id="defaultOpen">Breakfast Menu</button>
<button class="tablinks" onclick="openTab(event, 'Snacks')">Snacks</button>
<button class="tablinks" onclick="openTab(event, 'Drinks')">Drinks</button>
<button class="tablinks" onclick="openTab(event, 'Main')">Main
Button</button>
<button class="tablinks" onclick="openTab(event,
'Checkout')">Checkout</button>
</div>
<div id="Breakfast" class="tabcontent">
<?php
/*declare parameters for $conn*/
$username="root";
$password="";
$database="login";
$con = mysql_connect("localhost", $username, $password);
$selectdb = mysql_select_db("login",$con);
$result = mysql_query("SELECT * FROM menu where category='1'")
or die(mysql_error());
echo "<table border='0' cellpadding='10'>";
echo "<tr> <th>Order</th> <th>ID</th> <th>Product</th> <th>Price ($)</th></tr>";
// loop through results of database query, displaying them in the table
while($row = mysql_fetch_array( $result )) {
echo "<tr>"; // echo out the contents of each row into a table
echo '<td><input type="checkbox" value="" name="id[]" />' . '</td>'; />' . '</td>';
echo '<td>' . $row['id'] . '</td>';
echo '<td>' . $row['name'] . '</td>';
echo '<td>' . $row['price'] . '</td>';
echo "</tr>";
}
echo "</table>";
?>
</div>
<div id="Snacks" class="tabcontent">
<h3>snacks</h3>
<p></p>
</div>
<div id="Drinks" class="tabcontent">
<h3>Drinks</h3>
<p></p>
</div>
<div id="Main" class="tabcontent">
<h3>Main</h3>
<p></p>
</div>
<div id="Checkout" class="tabcontent">
<h3>Checkout</h3>
<p></p>
</div>
它连接到mysql数据库登录和表格菜单。在代码的php部分,我访问数据库并在表中显示数据库。我遇到的问题是在最后按下提交按钮后检索勾选的复选框。在按下提交按钮后,我如何检索勾选了哪些复选框并将该信息存储到另一个mysql数据库?目前的布局是这样的。
提前谢谢!!
答案 0 :(得分:3)
假设您的所有字段都已命名,HTML会将所有文本框发送到服务器,但只会选择按钮。对于普通按钮和单选按钮,这很直观,但对于复选框,这需要额外的工作。
在您的情况下,复选框名为id[]
。 PHP会将其视为数据的数组:
$_POST['id'][]
(或者是$_GET
?我没有看到表单方法。)
问题在于您不会知道选中哪一个,因为数组键只反映所选的框。
如果您使用以下内容会更好:
'<td><input type="checkbox" value="" name="id[' . $row['id'] . ']" …
也就是说,将id
放在名称的数组键中。您将拥有一系列名称,如:
name=id[3]
name=id[4]
name=id[7]
或任何你的ids。
然后,在PHP中,您可以运行以下命令:
if(isset($_POST['id'])) { // any checked?
$ids=array_keys($_POST['id']); // get selected keys
foreach($ids as $id) {
// process each selected id
}
}
诀窍是:
name="id[…]"
答案 1 :(得分:0)
你需要通过JS更新页面 - 实际上你需要从你的html(视图)中分离你的检索和存储(CRUD)php代码。 JS应该对与db通信的脚本进行异步调用,并使用这些结果来更新字段。
然而,这可能超出了你现在的能力范围 - 所以相反 - 只需在你的while循环中添加一个评估,然后在有人“提交”表单后重绘页面,应该出现更新数据的想法,当评估发生在while循环中时,你的html反映了数据的当前状态 - 就像这样(我完全忽略了js):
<body>
<div class="topnav" id="navbar">
<a href ="user_main_page.php"><img style="max-width:32px; margin-top:-3px;"
src="/image/logo.jpg"></a1>
<a href="user_main_page.php">Home</a>
<a class="active" href="user_ordernow.php">Order Now</a>
<a href='user_menu.php'>Our Menu</a>
<a href="user_about.php">Who are we?</a>
<a href="user_contact.php">Contact Us</a>
<a style = "float:right" href="../login_page.php">Log Out</a>
</div>
<div class="tab">
<button class="tablinks" onclick="openTab(event, 'Breakfast')"
id="defaultOpen">Breakfast Menu</button>
<button class="tablinks" onclick="openTab(event, 'Snacks')">Snacks</button>
<button class="tablinks" onclick="openTab(event, 'Drinks')">Drinks</button>
<button class="tablinks" onclick="openTab(event, 'Main')">Main
Button</button>
<button class="tablinks" onclick="openTab(event,
'Checkout')">Checkout</button>
</div>
<div id="Breakfast" class="tabcontent">
<?php
/*declare parameters for $conn*/
$username="root";
$password="";
$database="login";
$con = mysql_connect("localhost", $username, $password);
$selectdb = mysql_select_db("login",$con);
$result = mysql_query("SELECT * FROM menu where category='1'")
or die(mysql_error());
echo "<table border='0' cellpadding='10'>";
echo "<tr> <th>Order</th> <th>ID</th> <th>Product</th> <th>Price ($)</th></tr>";
// loop through results of database query, displaying them in the table
while($row = mysql_fetch_array( $result )) {
echo "<tr>"; // echo out the contents of each row into a table
echo '<td><input type="checkbox" value="" name="id[]" '. ($row['selected'] ? .' checked=true '. : .''. ).' />' . '</td>'; />' . '</td>';
echo '<td>' . $row['id'] . '</td>';
echo '<td>' . $row['name'] . '</td>';
echo '<td>' . $row['price'] . '</td>';
echo "</tr>";
}
echo "</table>";
?>
</div>
<div id="Snacks" class="tabcontent">
<h3>snacks</h3>
<p></p>
</div>
<div id="Drinks" class="tabcontent">
<h3>Drinks</h3>
<p></p>
</div>
<div id="Main" class="tabcontent">
<h3>Main</h3>
<p></p>
</div>
<div id="Checkout" class="tabcontent">
<h3>Checkout</h3>
<p></p>
</div>