【问题标题】:Use $_GET to grab multiple values with same id from URL and update DB使用 $_GET 从 URL 中获取具有相同 id 的多个值并更新数据库
【发布时间】:2013-03-18 00:13:48
【问题描述】:

我在尝试使用一系列复选框从列表中选择多件设备时遇到了问题,以便用户可以“签出”这些项目。

这是我提交数据的第一个页面

        <div class="list"><form action="remove.php" enctype="multipart/form-data"
         name="form" id="form">

<input type="submit" style="color: white; background: none repeat scroll 0% 0%
 black; font-size: 21px; padding-bottom: 30px; position: fixed; height: 30px;
 right: 0px; margin-right: 1px;"
     value="Checkout" />
    <table cellpadding="0" cellspacing="0" border="0" id="table">
<thead>
<tr>
<th>Select</th>
<th>Equipment Number</th>
<th>Equipment</th>
</tr></thead>
    <tbody>
  <? $sql    = "SELECT * FROM equipment";
    $result = mysql_query($sql);
    while ($rows = mysql_fetch_array($result)) {
        if ($rows['equip_avail'] == "1") {
?>

<tr>
<td width="5%"><input type="checkbox" name="equip_id" value="<?php echo 
$rows['equip_id']; ?>" /></td>
<td width="13%"><?php echo $rows['equip_num'];?></td>
<td width="20%"><?php echo $rows['equipment']; ?></td>
</tr>
<?php
        }
    }
    echo '</tbody></table></form></div>';
}
?>

这是然后从 url 获取数据并发布以确认的页面,我需要此页面能够从 url 获取多个“equip_id”(或我目前不知道的其他解决方法)和更新正确的“user_id”信息。我可以让多个出现在 URL 中,但只抓取最后一个。

    $id = $_SESSION['id'];
$equip_id =$_GET['equip_id'];
$sql = mysql_query("SELECT * FROM equipment WHERE equip_id='$equip_id'"); 
while($row = mysql_fetch_array($sql)){
    $equip_id = $row['equip_id'];
    $equipment = $row["equipment"];
    $equip_num = $row["equip_num"];
    $equip_avail = $row["equip_avail"];
    $user_id= $row['user_id'];
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $user_id = $_POST['user_id'];
    $equip_avail = $_POST['equip_avail'];
    $sql = mysql_query("UPDATE equipment SET user_id='$user_id', 
    equip_avail='$equip_avail' WHERE equip_id='$equip_id'"); 

    header("Location: equipment_checkout.php");
exit();
} // close if post
?>

这是 HTML

     <table height="225px">
<form action="<? echo 'remove.php?equip_id='.$equip_id.' '?>"
   method="post" enctype="multipart/form-data" name="form" id="form">
<td width="423" valign="top"><h2>Equipment: <?php echo $equipment?></h2>
    <h2>Equipment Number: <?php echo $equip_num?></h2>
<input name="equip_avail" type="hidden" id="equip_avail" value="0" size="30"
maxlength="24" />
<?if(($_SESSION['id'] !=='0') && ($uaccounttype !== 'e') &&
($uaccounttype !== 'd')){?>
<input name="user_id" type="hidden" id="user_id" value="<? echo $_SESSION['id']
?>" size="30" maxlength="64" />
    </tr><?} else {
        $sql="SELECT * FROM members WHERE accounttype IN ('b', 'c', 'e')";
    $result = mysql_query($sql);            
        ?> 
<h2>Select Employee: <select name="user_id" id="user_id">
<?  $count = 1;
    while($rows = mysql_fetch_array($result)){
        if($count == 1){?>
<option value="<?echo $rows['id'];?>">
<?  echo $rows['firstname']. " ". $rows['lastname'] ;}} ?></option>
</select></h2>
<?}?>       
    <input name="Submit" type="submit" value="Check Out"/>
    </br>
   </td>
  </form>
</table>
</div>

我需要这最后一部分做的是从第一页选择的每个“equip_id”都显示在这里,然后用正确的“user_id”更新数据库,为每个选择的设备提供正确的“user_id”。就像我说的,我可以一次更新一个,我只需要制作它以便可以编辑大量内容。

**注意:我知道这不是一种安全发送数据的方式,如果有任何关于如何更安全的建议,我会喜欢的。谢谢!!!!

【问题讨论】:

    标签: php mysql forms get checkbox


    【解决方案1】:

    您需要将输入名称设为数组 (equip_id[]):

    <input type="checkbox" name="equip_id[]" value="<?php echo $rows['equip_id']; ?>" />
    

    然后$_GET['equip_id'] 将是$rows['equip_id']s 的数组。

    虽然使用$_POST 肯定会更好?

    【讨论】:

    • 使用 $_POST 会是什么样子?好像没有抓取到第二页的信息。
    • $_GET。您只需将method="POST" 添加到您的&lt;form&gt;
    • 谢谢!这帮助我从某种角度看待事物@MichaelRushton 我将发布我更新的文件
    【解决方案2】:

    这是我根据答案想出的,它会根据“equip_id”发布所有选择的设备,然后相应地更新设备。我在这里发帖以防万一其他人正在寻找相同的解决方案。

    我按照你的建议更新了这一行

    <input type="checkbox" name="equip_id[]" value="<?php echo $rows['equip_id']; ?>"
    

    这是从第一页读取数据的第二页。

    <?foreach ($_GET['equip_id'] as $equip_id) {
    
    
    
    $sql = mysql_query("SELECT * FROM equipment WHERE equip_id='$equip_id'") or
    die(mysql_error()); 
    while($row = mysql_fetch_array($sql)){
    $equipment = $row["equipment"];
    $equip_num = $row["equip_num"];
    $equip_avail = $row["equip_avail"];
    $user_id= $row['user_id'];
    $equip_id= $row['equip_id'];}?>
    <td width="423" valign="top"><h2>Equipment:
    <?php echo $equipment?></h2>
        <h2>Equipment Number:<?php echo "$equip_num"?></h2>
    <?}
    

    这是发布数据的部分。

    if ($_SERVER['REQUEST_METHOD'] === 'POST'){
    foreach ($_GET['equip_id'] as $equip_id) {
        $equip_id = $equip_id ;
        $user_id = $_POST['user_id'];
    $sql = mysql_query("UPDATE equipment SET user_id='$user_id', equip_avail='0'
    WHERE equip_id='$equip_id'") or die(mysql_error());} 
    header("Location: member_equipment.php?id='$id'");
    exit();}
    

    【讨论】:

      猜你喜欢
      • 2015-03-14
      • 2018-12-27
      • 2016-05-13
      • 2018-05-24
      • 2019-09-08
      • 2020-02-04
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      相关资源
      最近更新 更多