如何检索mysql表中的复选框?

时间:2017-04-27 11:08:56

标签: javascript php html mysql

这是我第一次询问有关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数据库?目前的布局是这样的。

webpage design - picture

提前谢谢!!

2 个答案:

答案 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
    }
}

诀窍是:

  • 将put id作为每个复选框名称中的键:name="id[…]"
  • 在PHP中提取这些键

答案 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>