Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用复选框和textarea数据更新MYSQL数据库(在PHP中)_Php_Mysql - Fatal编程技术网

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

使用复选框和textarea数据更新MYSQL数据库(在PHP中),php,mysql,Php,Mysql,我使用一个表来更新数据库,该表有264个复选框,可以选中和取消选中,然后在数据库上更新 为此,我在表单上发布数据,使用while循环将每个字段的所有字段设置为空(复选框的值和textarea值),然后使用foreach循环使用复选框的值更新数据库中的每一行 现在,我想做的是将每个勾选复选框的textarea值也添加到数据库中,我不知道该怎么做 这是我的更新代码: if (isset($_POST["update"])) { $seolistRes2 = mysql_query($seolistQ

我使用一个表来更新数据库,该表有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");
    }
}
}

这是复选框和文本区号:(请注意这在表单中)

$currentTask='';
回声“;
而($seolistRow=mysql\u fetch\u数组($seolistRes)){
$taskValue=$seolistRow[“taskValue”];
$worksheetID=$seolistRow[“worksheetID”];
$taskName=$seolistRow[“taskName”];
$taskInfo=$seolistRow[“taskInfo”];
如果($taskValue==1){
$taskDone=”“。
“.$taskInfo.”;
}
否则{
$taskDone=”“。
“.$taskInfo.”;
}
如果($currentTask!=$taskName){
回声“;
回声“;
回显“$taskName.”;
}
回显“$taskDone.”;
$currentTask=$taskName;
}
回声“;

您应该能够在调用is-numeric后使用$\u POST['textarea.$wsID]获取textarea中的值。

您应该能够在调用is-numeric后使用$\u POST['textarea.$wsID]获取textarea中的值。

使用如下所示的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>";
$currentTask='';
回声“;
而($seolistRow=mysql\u fetch\u数组($seolistRes)){
$taskValue=$seolistRow[“taskValue”];
$worksheetID=$seolistRow[“worksheetID”];
$taskName=$seolistRow[“taskName”];
$taskInfo=$seolistRow[“taskInfo”];
如果($taskValue==1){
$taskDone=”“。
“.$taskInfo.”;
}
否则{
$taskDone=”“。
“.$taskInfo.”;
}
如果($currentTask!=$taskName){
回声“;
回声“;
回显“$taskName.”;
}
回显“$taskDone.”;
$currentTask=$taskName;
}
回声“;
查看文本区域和复选框的修改名称和id。我将其分别修改为textarea[SOME_sheet_ID]和checkbox[SOME_sheet_ID]

因此,当您提交表单时,您将以数组形式接收这些复选框和文本区域值,并以工作表TID作为索引。您可以使用此[]技术检索textarea和复选框的值,或者检索希望添加到表单中的任意多个字段

使用上面的HTML结构并检查$\u POST数组

希望这会有帮助

谢谢


Hussain。

使用如下所示的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>";
$currentTask='';
回声“;
而($seolistRow=mysql\u fetch\u数组($seolistRes)){
$taskValue=$seolistRow[“taskValue”];
$worksheetID=$seolistRow[“worksheetID”];
$taskName=$seolistRow[“taskName”];
$taskInfo=$seolistRow[“taskInfo”];
如果($taskValue==1){
$taskDone=”“。
“.$taskInfo.”;
}
否则{
$taskDone=”“。
“.$taskInfo.”;
}
如果($currentTask!=$taskName){
回声“;
回声“;
回显“$taskName.”;
}
回显“$taskDone.”;
$currentTask=$taskName;
}
回声“;
查看文本区域和复选框的修改名称和id。我将其分别修改为textarea[SOME_sheet_ID]和checkbox[SOME_sheet_ID]

因此,当您提交表单时,您将以数组形式接收这些复选框和文本区域值,并以工作表TID作为索引。您可以使用此[]技术检索textarea和复选框的值,或者检索希望添加到表单中的任意多个字段

使用上面的HTML结构并检查$\u POST数组

希望这会有帮助

谢谢


侯赛因。

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

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");         
    }
}

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

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");         
    }
}

... 在其他新闻中,请查看“SQL注入”。。。在其他新闻中,请查看有效的“SQL注入”,谢谢:)现在我只是在显示textarea字段时遇到了问题。只能显示第一个字段,就像我勾选六个框并给每个框一个不同的注释一样,它会在所有6个框上显示注释1。这很有效,谢谢:)现在我只是在显示textarea字段时遇到问题。只能显示第一个字段,就像我勾选六个框并给每个框一个不同的注释一样,它会在所有6个框上显示注释1。