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