簡體   English   中英

一種形式的兩種不同動作

[英]Two different actions in one form

我有一個帶有兩個不同的提交按鈕的表單。 一種是刪除MySQL中的相應行,這是在同一頁面上完成的,另一種是將行保存到另一個數據庫中,這是在單獨的頁面上完成的。 刪除操作可以正常工作,但是我無法弄清楚如何將保存表單數據發送到另一頁而不將其置於“操作”值中。 我已經嘗試過JavaScript,但是運氣還不太好。 這是一篇冗長的文章,但是我認為我提供的信息越多,找到解決方案的難度就越大。

這只是保存提交按鈕:

   echo "<td><input type=\"submit\" name=\"save\" value=\"Save\" onclick=\"this.form.action='publishmod.php'\"></td>";

這是表單代碼(主頁):

   echo "<form name=\"editmod\" method=\"post\">";
   echo "<tr class='modlist'>";
   echo "<td>".$row['id']."</td>";
   echo "<td><div class=\"edit\" id=\"div_1\">".$row['title']."</div></td>";
   echo "<td><div class=\"edit\" id=\"div_2\"><a href=".$row['mod_url'].">".$row['mod_url']."</a></div></td>";
   echo "<td><div class=\"edit\" id=\"div_3\">".$row['developer']."</div></td>";
   echo "<td><div class=\"edit\" id=\"div_4\">".$row['type']."</div></td>";
   echo "<td><div class=\"edit\" id=\"div_5\">".$v162."$nbsp".$v164."$nbsp".$v172."</div></td>";
   echo "<td><div class=\"edit\" id=\"div_6\">".$row['title'].",$nbsp".$row['developer']."</div></td>";
   echo "<td><input type=\"submit\" name=\"save\" value=\"Save\" onclick=\"this.form.action='publishmod.php'\"></td>";
   echo "<td><input type=\"submit\" name=\"delete\" value=\"Delete\"></td>";
   echo "</tr>";
   echo '<input type="hidden" name="id" value="', htmlspecialchars($row['title'], ENT_QUOTES, 'UTF-8'), '" />';
   echo '<input type="hidden" name="id" value="', htmlspecialchars($row['mod_url'], ENT_QUOTES, 'UTF-8'), '" />';
   echo '<input type="hidden" name="id" value="', htmlspecialchars($row['developer'], ENT_QUOTES, 'UTF-8'), '" />';
   echo '<input type="hidden" name="id" value="', htmlspecialchars($row['type'], ENT_QUOTES, 'UTF-8'), '" />';
   echo '<input type="hidden" name="id" value="', htmlspecialchars($row['id'], ENT_QUOTES, 'UTF-8'), '" />';
   echo "</form>";
   }

發布代碼(保存操作應重定向到的頁面):

出於堆棧溢出的目的,省略了可變衛生措施。

$name = $_GET['title'];
$desc = "Installation tutorial for '.$name.'";
$url = ereg("^[A-Za-z_\-]+$", $name) + ".php";
$keywords = "'.$name.', '.$dev.'";
$type = $_GET['type'];
$link = $_GET['mod_url'];
$dev = $_GET['developer'];
$id = $_GET['id'];

// Query

$savequery = "INSERT INTO search (title, description, url, keywords, type, mod_url, developer, v162, v164, v172)
            VALUES ('$name', '$desc', '$url', '$keywords', '$type', '$link', '$dev', '$v162', '$v164', '$v172')";

// Mod file creation

$file = ereg("^[A-Za-z_\-]+$", $name) + ".php"; 
$handle = fopen($file, 'w');
$data = '<?php
    $title = "'. $name. '";
    $keywords = "'. $name. ','. $developer. '";
    $description = "How to install '. $name. ' for PC and Mac.";

    include("templates/modheader.php");
    include("templates/modfooter.php");
    ?>';

$save = $dbsave->query($savequery) or die(mysqli_error($dbsave));

// Run creation

echo $save;
fwrite($handle, $data); 
print " mod file created!"; 
fclose($handle);
?>

不要將其發送到另一個頁面。 使用一頁並使用if (或switch或其他)語句進行分支。

例如

if (isset($_POST['save'])) {
    include('save.php');
} elseif (isset($_POST['delete'])) {
    include('delete.php');
} else {
    # logic for when the page is arrived at without the form being submitted with a submit button
}

作為旁白。 <form>可能不是<tr>的父元素,並且可能沒有<td>作為子元素的元素也可能沒有<input>作為子元素,您會發現某些瀏覽器會移動元素使它們以一種會破壞您的形式的方式被接受。 編寫有效的 HTML。

我認為您應該將提交到按鈕的類型更改為刪除和保存以及使用以下jquery代碼:

$("#savebutton_id").onclick(function(){
$("#formid").attr('action','Your save Page');
$("#formid").submit();
});
$("#deletebutton_id").onclick(function(){
$("#formid").attr('action','Your delete Page');
$("#formid").submit();
});

您可以使用超鏈接將數據發送到其他頁面

例如: <a href="page.php?category=1">Shoes</a>

我們可以通過使用下一頁獲取類別變量

$_GET['category'];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM