0

複数のフォームを単一の UPDATE クエリに渡すのは初めて (PHP の新機能)

このスクリプトは、データベース テーブルの行からすべてのデータを取得して表示し、$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";

テキストエリア内のデータを、このコードが受け取る 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");

ただし、ページの最後のテキストエリアを編集したとしても、ページの最初のテキストエリアのデータ/最低の adcode$ID のみを取得します。ページの最初の広告 (adcode8) 以外の広告を編集しようとすると、これがスローされます

  • 注意: 未定義のインデックス: C:\Program Files (x86)\Zend\Apache2\htdocs\adgate\editad.php の 29 行目の adcode8

現在ページにある最初の広告 (adcode8)。

したがって、コードを IF、ELSEIF、ELSE に渡す可能性があると考えていますが、無制限の量の広告になる可能性があるため、それは機能しません。

そのため、一意の name=\"editad$ID\" を渡しているので、HIDDEN フォーム フィールドは必要ないと思います。

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

その一行は間違っていますか、それとも私がやろうとしていることは不可能であり、非表示のフォームフィールドを試す必要がありますか? ここに変数があります

  1. $ID (一意)
  2. $adname (一意ですが、特定の adname として: Google バナーなど)
  3. $currentadcode (一意ですが、特定のコードとして)

それで..

  • 非表示のフォーム フィールドが必要で、動的送信ボタン名を渡して UPDATE を実行できない場合は...

HIDDENフォームフィールドがこんな感じだったら

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

このコードをどのように調整すればよいでしょうか。

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

目的 : TEXTAREA の可食性を許可し、MYSQL データベース内のそのコード/行のみを更新する

4

0 に答える 0