0

第一次处理将多个表单传递给单个 UPDATE 查询(php 新手)

该脚本从数据库表行中提取并显示所有数据,并通过 textarea 中的 $currentadcode 显示它取决于数据库中有多少行,它一遍又一遍地重复此代码以显示数据限制然后下一页查看其余部分。

文本区域名称 adcode$ID 变为 adcode1 adcode2 adcode3,提交按钮名称 editad$ID 变为 editad1 editad2 editad3。

echo "<div class=\"adcodearea\">";
echo "<h2>$ID : $adname</h2><a href=\"?action=deletead&IDnum=$ID\">Delete Ad</a><br />\n";
echo "Preview :<br /><div class=\"adcode\">$currentadcode</div><br /> \n";
//echo "<br />\n";
echo "<form action=\"editad.php?action=editad\" name=\"addAD$ID\" method=\"post\">\n";
echo "AD code (can be any type of script) text link, javascript or banner :<br />\n";
echo "Current AD Code :<br /><textarea name=\"adcode$ID\" wrap=\"physical\" cols=\"72\" rows=\"6\" onKeyDown=\"textCounter(document.addAD$ID.adcode$ID,document.addAD$ID.remLen$ID,5000)\" onKeyUp=\"textCounter(document.addAD$ID.adcode$ID,document.addAD$ID.remLen$ID,5000)\">$currentadcode</textarea>";
echo "<br /><input readonly type=\"text\" name=\"remLen$ID\" class=\"adcountdown\" size=\"2\" maxlength=\"3\" value=\"5000\">Characters Left \n";
echo "<input type=\"submit\" name=\"editad$ID\" class=\"adsubmit\" value=\"Edit AD Code\"></form>\n";
echo "</div>";
echo "<br /><hr />";
//echo "$letknownedited";

它将 textarea 中的数据传递给此代码接收的 editad.php。

if ($_GET['action'] == "editad") {  // Edit AD
    $newadcode = mysql_real_escape_string($_POST['adcode' . $ID]);
    $doedit = "UPDATE `adgate`.`ads` SET `ads`.`adcode` = '$newadcode' WHERE `ads`.`ID` = '$ID' LIMIT 1" or die(mysql_error());
    $retval = mysql_query( $doedit, $connection );
    if(! $retval )
    {
        die('Could not update data: ' . mysql_error());
    }
    echo "Updated data successfully\n";
    //header("Location: displayads.php");

但它只获取页面上第一个 textarea 的数据/最低的 adcode$ID - 即使您编辑页面上的最后一个。如果您尝试编辑页面上除第一个广告 (adcode8) 之外的任何其他广告,则会抛出此

  • 注意:未定义索引:第 29 行 C:\Program Files (x86)\Zend\Apache2\htdocs\adgate\editad.php 中的 adcode8

当前页面上的第一个广告 (adcode8)。

所以我的想法可能是将代码传递给 IF、ELSEIF、ELSE 但这行不通,因为它可能是无限数量的广告。

这样就留下了 HIDDEN 表单字段,我认为我不需要这样做,因为我将一个唯一的 name=\"editad$ID\" 传递给

$newadcode = mysql_real_escape_string($_POST['adcode' . $ID]);

那条线是错误的还是我试图做的不可能并且需要尝试隐藏表单字段?这里是变量

  1. $ID(唯一)
  2. $adname(唯一,但作为特定的广告名,例如:Google Banner)
  3. $currentadcode(唯一但作为特定代码)

然后..

  • 如果需要隐藏表单字段并且无法传递动态提交按钮名称来执行更新,那么...

如果隐藏表单字段是这样的

<input type="hidden" name="$ID" value="$ID">

我将如何调整此代码,我什至会通过

$newadcode = mysql_real_escape_string($_POST['adcode' . $ID]);

目标:允许任何 TEXTAREA 的可食用性和只更新 MYSQL 数据库中的代码/行

4

0 回答 0