使用复选框和textarea数据更新MYSQL数据库(在PHP中)

时间:2011-01-05 09:56:56

标签: php mysql

我正在使用表来更新数据库,该表有264个复选框,可以检查和取消选中,然后在数据库上更新。

我这样做是通过在表单上发布数据,使用while循环将每个字段的所有字段设置为空白(复选框的值和textarea值),然后使用foreach循环更新每一行在数据库中使用复选框的值。

现在,我想要做的是将每个勾选复选框的textarea值添加到数据库中,我不知道如何做到这一点?

这是我的更新代码:

if (isset($_POST["update"])) {
$seolistRes2 = mysql_query($seolistQ) or die(mysql_error());
while ($seolistRow2 = mysql_fetch_array($seolistRes2)) {
    $wsID1 = $seolistRow2["worksheetID"];
    $updateWSQ2 = "UPDATE seo_work SET taskValue=0, taskInfo='' WHERE worksheetID=$wsID1 AND userID=$userID";
    mysql_query($updateWSQ2) or die(mysql_error());
}

$item = $_POST;
foreach($item as $key => $value) {
    $wsID = str_replace("checkbox","",$key);

    if (is_numeric($wsID)) {
        $updateWSQ = "UPDATE seo_work SET taskValue=$value taskInfo=$value WHERE worksheetID=$wsID AND userID=$userID";
        mysql_query($updateWSQ) or die(mysql_error());
        header("Location: worksheet.php?y=".$seoworkyear."&userID=$userID&action=success");
    }
}

}

这是复选框和textarea代码:(请注意,这是在表单中)

$currentTask = '';
echo "<tr class='tr'>";
while ($seolistRow = mysql_fetch_array($seolistRes)) {
    $taskValue = $seolistRow["taskValue"];
    $worksheetID = $seolistRow["worksheetID"];
    $taskName = $seolistRow["taskName"];
    $taskInfo = $seolistRow["taskInfo"];

    if ($taskValue == 1) {
        $taskDone = "<input type='checkbox' value='1' class='checkbox' name='checkbox".$worksheetID."' id=checkbox'".$worksheetID."' checked='checked' />".
        "<textarea class='textarea' name='textarea".$worksheetID."' id=textarea'".$worksheetID."'>" . $taskInfo . "</textarea>";
    }
    else {
        $taskDone = "<input type='checkbox' value='1' class='checkbox' name='checkbox".$worksheetID."' id='checkbox".$worksheetID."' />".
        "<textarea class='textarea' name='textarea".$worksheetID."' id=textarea'".$worksheetID."'>" . $taskInfo . "</textarea>";
    }
    if ($currentTask != $taskName) {
        echo "</tr>";
        echo "<tr class='tr'>";
        echo "<td class='task'>".$taskName."</td>";
    }
    echo "<td class='tick'>".$taskDone."</td>";
        $currentTask = $taskName;
}
echo "</tr>";

3 个答案:

答案 0 :(得分:1)

使用您的HTML表单,如下所示。

$currentTask = '';
echo "<tr class='tr'>";
while ($seolistRow = mysql_fetch_array($seolistRes)) {
    $taskValue = $seolistRow["taskValue"];
    $worksheetID = $seolistRow["worksheetID"];
    $taskName = $seolistRow["taskName"];
    $taskInfo = $seolistRow["taskInfo"];

    if ($taskValue == 1) {
        $taskDone = "<input type='checkbox' value='1' class='checkbox' name='checkbox[".$worksheetID."]' id='checkbox[".$worksheetID."]' checked='checked' />".
        "<textarea class='textarea' name='textarea[".$worksheetID."]' id='textarea[".$worksheetID."]'>" . $taskInfo . "</textarea>";
    }
    else {
        $taskDone = "<input type='checkbox' value='1' class='checkbox' name='checkbox[".$worksheetID."]' id='checkbox[".$worksheetID."]' />".
        "<textarea class='textarea' name='textarea[".$worksheetID."]' id='textarea[".$worksheetID."]'>" . $taskInfo . "</textarea>";
    }
    if ($currentTask != $taskName) {
        echo "</tr>";
        echo "<tr class='tr'>";
        echo "<td class='task'>".$taskName."</td>";
    }
    echo "<td class='tick'>".$taskDone."</td>";
        $currentTask = $taskName;
}
echo "</tr>";

查看textarea的修改名称和ID以及复选框。我已将其修改为textarea [SOME_WORKSHEET_ID]和复选框[SOME_WORKSHEET_ID]。

因此,当您提交表单时,您将收到那些复选框和textarea值作为数组,并将worksheetId作为索引。您可以使用此[]技术检索textarea和复选框的值,或者要在表单中添加多个字段。

使用上面的HTML结构并检查$ _POST数组。

希望这会有所帮助..

谢谢!

侯赛因。

答案 1 :(得分:0)

您应该能够使用$ _POST ['textarea'获取textarea中的值。在您调用is_numeric之后,$ wsID。

答案 2 :(得分:0)

这是另一种方法,没有经过全面测试,但希望你能得到这个想法......

if (isset($_POST["update"])) 
{
    // All to blank
    $seolistRes2 = mysql_query($seolistQ) or die(mysql_error());
    while ($seolistRow2 = mysql_fetch_array($seolistRes2)) 
    {
        $wsID1 = $seolistRow2["worksheetID"];
        $updateWSQ2 = "UPDATE seo_work SET taskValue=0, taskInfo='' WHERE worksheetID=$wsID1 AND userID=$userID";
        mysql_query($updateWSQ2) or die(mysql_error());
    }

    // Re use your result from the select to go through all the known IDs
    foreach($seolistRow2 as $i => $data) 
    {
        // Obtain the ID
        $id = $data['worksheetID'];

        // Get the checkbox value for current ID
        $checkbox_wsID = $_POST['checkbox' . $id];

        // Get the textarea value for current ID
        $textarea_wsID = $_POST['textarea' . $id];

        // Update the Row using mysql_escape
        $updateWSQ = "UPDATE seo_work " . 
        "SET taskValue = '" . mysql_escape_string($checkbox_wsID) ."' taskInfo = '" . mysql_escape_string($textarea_wsID) ."'" .
        "WHERE worksheetID=$id AND userID=$userID";

        mysql_query($updateWSQ) 
            or die(mysql_error());

        header("Location: worksheet.php?y=".$seoworkyear."&userID=$userID&action=success");         
    }
}