以复选框为因素在数组中存储数据?

时间:2014-10-23 18:26:43

标签: php mysql

脚本:

<?php

    include("connect.php");

?>
<?php

    /*
     * SELECT THE ROW BY THE "THREAD_ID"
     */

    $tqs = "SELECT * FROM `thread` WHERE `id` = '" . $_GET['thread_id'] . "'";
    $tqr = mysqli_query($dbc, $tqs) or die(mysqli_error($dbc));
    $row = mysqli_fetch_assoc($tqr);

?>
<?php
    /*
     * FETCH HASHTAG NAMES
     * PRINT HASHTAG NAMES INSIDE THE INPUT FIELDS
     */

    // Store the hashtag ID numbers inside an array.
    $explode_hashtags = explode(", ", $row['hashtag_id']);

    // Fetch the hashtag names from the table.
    // And store the hashtag names inside the array "$fetch_array_hashtags".
    $fetch_array_hashtags = array();
    for($i = 0; $i < count($explode_hashtags); $i++){
        $tqs_hashtags = "SELECT `hashtag` FROM `hashtags` WHERE `id` = '" . $explode_hashtags[$i] . "'";
        $tqr_hashtags = mysqli_query($dbc, $tqs_hashtags) or die(mysqli_error($dbc));
        $row_hashtags = mysqli_fetch_array($tqr_hashtags);
        $fetch_array_hashtags[] = $row_hashtags['hashtag'];
    }

?>
<?php

    echo "<form method='POST' action='" . $_SERVER['PHP_SELF'] . "'>";

    echo "<input type='hidden' name='thread_id' value='" . $_GET['thread_id'] . "' />";

    for ($i = 0; $i < count($fetch_array_hashtags); $i++) {
        echo "<input type='checkbox' name='hashtag_modify_checkbox[]' value='" . $explode_hashtags[$i] . "' />";
        echo "Modify";
        echo "<input type='text' name='hashtag[]' value='" . $fetch_array_hashtags[$i] . "' />";
    }

    echo "<input type='submit' name='submit' />";
    echo "</form>";

?>
<?php

    if(isset($_POST['submit'])){

        $tqs = "SELECT `hashtag_id` FROM `thread` WHERE `id` = '" . $_POST['thread_id'] . "'";
        $tqr = mysqli_query($dbc, $tqs) or die(mysqli_error($dbc));
        $row = mysqli_fetch_assoc($tqr);

        // Store the hashtag ID numbers inside an array.
        $explode_hashtags = explode(", ", $row['hashtag_id']);

        // Store the hashtag names inside an array.
        $hashtags = array();
        for($i = 0; $i < count($_POST['hashtag']); $i++) {
            if (!empty($_POST['hashtag'][$i])) {
                $hashtags[] = $_POST['hashtag'][$i];
            }
        }

        for($i = 0; $i < count($explode_hashtags); $i++){
            $tqs_hashtags_update = "UPDATE `hashtags` SET `hashtag` = '" . $hashtags[$i] . "' WHERE `id` = '" . $explode_hashtags[$i] . "'";
            //$tqs_hashtags_update = "UPDATE `hashtags` SET `hashtag` = '#blue_topy' WHERE `id` = '116'";
            $tqr_hashtags_update = mysqli_query($dbc, $tqs_hashtags_update) or die(mysqli_error($dbc));
        }

    }

?>

这适用于管理面板。

输入字段包含&#34; hashtags&#34;在它们内部,可以对它们进行编辑,并且可以更新表格。

我的问题是: 没有编辑 对&#34; hashtags&#34;然后,SQL查询仍然更新&#34; hashtags&#34;的 所有 到桌子。 基本上,如果我只编辑 一个 &#34;#标签&#34;我只想要 一个 &#34;#标签&#34;要更新到MySQL中的表和其他&#34; hashtags&#34;不

我想过使用输入字段旁边的复选框。我可以在哪里查看&#34;修改复选框&#34;然后编辑&#34;#标签&#34;和 然后 &#34; hashtags& #34;选中 &#34;复选框&#34; 应存储在数组中,因此使用该数组可以更新表格。

我的问题是,如何在数组中只存储 那些 主题标签(来自输入字段) 选中复选框的位置 ?所以我可以使用该数组来更新表格,只需 那些 &#34; hashtags&#34;, 实际上 已经编辑过。

2 个答案:

答案 0 :(得分:0)

将复选框结果存储为与哈希标记具有相同顺序的数组,然后为更新添加条件。

for($i = 0; $i < count($explode_hashtags); $i++){

        if ($checkArray[$i] === true){
        $tqs_hashtags_update = "UPDATE `hashtags` SET `hashtag` = '" . $hashtags[$i] . "' WHERE `id` = '" . $explode_hashtags[$i] . "'";
        //$tqs_hashtags_update = "UPDATE `hashtags` SET `hashtag` = '#blue_topy' WHERE `id` = '116'";
        $tqr_hashtags_update = mysqli_query($dbc, $tqs_hashtags_update) or die(mysqli_error($dbc));
    }
    }

然后它只会更新复选框已标记为

的哈希标记

答案 1 :(得分:0)

我认为最好为旧主题标签添加隐藏值以检查它们是否已更改。然后只需更新已更改的主题标签。

for($i = 0; $i < count($fetch_array_hashtags); $i++) {
    echo "<input type='hidden' name='hashtag_old[]' value='".$fetch_array_hashtags[$i]."' />";
    echo "Modify";
    echo "<input type='text' name='hashtag[]' value='".$fetch_array_hashtags[$i]."' />";
}
# ... some more code ...
$hashtags = array();
for($i = 0; $i < count($_POST['hashtag']); $i++) {
    if (!empty($_POST['hashtag'][$i]) and $_POST['hashtag'][$i]<>$_POST['hashtag_old'][$i]) {
        $hashtags[] = $_POST['hashtag'][$i];
    }
}