【问题标题】:Getting MySQL columns to update from multiple select让 MySQL 列从多个选择中更新
【发布时间】:2015-11-11 03:09:11
【问题描述】:

我有以下ranks 用户角色表

---------------------------------------------------------------------------
| rank   | areas        | intranet_view  | intranet_writer  | admin_users  |
---------------------------------------------------------------------------
| 1      | 'AREA I'     | 1              | 0                | 0            |
| 2      | 'AREA VI'    | 1              | 1                | 0            |
| ...    | ...          | ...            | ...              | ...          |
---------------------------------------------------------------------------

我以前是这样更新的

// form for selecting allowed areas
echo "<select size=\"10\" class=\"form-control\" name=\"areas[]\" multiple>";
    $kysely = $pdo->query("SELECT * FROM customer_areas");

    while($areas = $kysely->fetch(PDO::FETCH_ASSOC)) {
        $areaArray = explode(',',$result['areas']);
        echo "<option value=\"".$areas['customer_area_code']."\""; if(in_array($areas['customer_area_code'], $areaArray)){ echo " selected"; } echo ">".$areas['customer_area_name']."</option>";
    }
echo "</select>";

// and this form is for selecting allowed privileges
$kysely = $pdo->query("SELECT * FROM ranks");
$rights = $kysely->fetch(PDO::FETCH_ASSOC);

foreach($rights as $key => $value) {
    if($key == 'rank' || $key == 'areas') {
    } else {
        echo "<div class=\"checkbox\"><label><input type=\"hidden\" name=\"".$key."\" value=\"0\" /><input type=\"checkbox\" name=\"".$key."\" value=\"1\""; if($result[$key] == '1'){ echo " checked"; } echo ">".mb_strtolower($key)."</label></div>";
    }
}

// following is the form action page
if (isset($_POST['areas'])) {
    $areas = implode(",", $_POST['areas']);
} else {
    $areas = "";
}

try {
    $pdo->beginTransaction();

    $kysely = $pdo->query("SELECT * FROM ranks");
    $rights = $kysely->fetch(PDO::FETCH_ASSOC);
    $i = 0;
    $sql = "";

    foreach ($rights as $key => $value) {
        if ($key == 'rank' || $key == 'areas') {
        } else {
            if ($i != 0) {
                $sql .= ", ";
            }

            $sql .= $key . " = '" . $_POST[$key] . "'";
            $i++;
        }
    }

    $kysely = $pdo->prepare("UPDATE ranks SET areas = ?, $sql WHERE rank = ?");
    $kysely->execute(array($areas, $id));

    $pdo->commit();
} catch (PDOException $e) {
    $pdo->rollback();
}

我想知道是否有一些好方法可以在多选中获得这些特权。当我编写此代码时,我的智能不足以进行多项选择,所以我制作了复选框。

问题是我不知道如何将列名放入多项选择中,以便更新正常工作。我是否需要添加例如name=\"option".[$key]."\" 什么的。我不知道该怎么做。

提前致谢。

【问题讨论】:

  • 到底是什么问题?你有没有尝试过?
  • 这听起来像是一个 HTML 问题
  • @sayed,问题是我不知道如何将列名放入多项选择中,以便更新正常工作。我是否需要添加例如name=\"option".[$key]."\" 什么的。我不知道如何做到这一点。 @e4c5,添加了 HTML 标签

标签: php html mysql forms foreach


【解决方案1】:

是的,您可以按名称检索name=\"option".[$key]."\" 喜欢

<?php 
   foreach($options $key => $value):       

      echo '<input type="checkbox" name="option['.$key.']" value="$vlaue">';

   endforeach;
?>

所以它看起来像这样,

    <input type="checkbox" name="option[0]" value="some_value0">
    <input type="checkbox" name="option[1]" value="some_value1">
    <input type="checkbox" name="option[2]" value="some_value2">

【讨论】:

  • 正如我所写,我不想要任何复选框。
  • 在多选框中使用数据库中的列名 -- echo "
猜你喜欢
  • 2018-10-11
  • 2015-09-19
  • 2018-02-24
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
  • 2019-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多