2013-12-21 64 views
0

我有一個窗體有兩個不同的提交按鈕。一種是刪除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>"; 
    } 

發佈代碼(頁保存操作應該重定向到):

Va堆棧溢出目的省略了可用的衛生設施。

$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); 
?> 
+0

**危險**:您很容易[SQL注入攻擊](http://bobby-tables.com/)**,您需要[防禦](http://stackoverflow.com/問題/ 60174/best-way-to-prevent-sql -injection-in-php)自己從。 – Quentin

回答

-2

您可以使用超級鏈接

如發送數據到其他頁面:<a href="page.php?category=1">Shoes</a>

我們可以通過獲得在接下來的頁面中的類別變量

$_GET['category'];

0

我想你應該改變類型的提交按鈕爲刪除和保存和使用以下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(); 
}); 
+0

你會建議我在同一頁面上保留刪除操作,但只是用這個腳本來處理這兩個操作? – swiftsly

+0

它可以與同一頁面,但只是改變類型按鈕,而不是提交。 –

2

請勿將其發送到其他頁面。使用一個頁面並使用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 
} 

作爲旁。 A <form>可能不是<tr>的父元素,並且沒有元素可能具有作爲子元素的<td>也可能具有作爲子元素的<input>,您會發現某些瀏覽器會移動元素以使它們以某種方式可接受這將打破你的形式。寫入valid HTML。