2013-12-21 4 views
0

두 개의 서로 다른 제출 버튼이있는 양식이 있습니다. 하나는 동일한 페이지에서 수행되는 MySQL에서 해당 행을 삭제하는 것이고 다른 하나는 별도의 페이지에서 수행되는 다른 데이터베이스에 행을 저장하는 것입니다. 삭제 작업은 정상적으로 작동하지만 "작업"값에 넣지 않고 다른 페이지로 저장 양식 데이터를 보내는 방법을 알아낼 수 없습니다. JavaScript를 사용해 보았지만 많은 행운이 없었습니다. 긴 게시물이긴하지만, 더 많은 정보를 제공할수록 솔루션을 쉽게 찾을 수 있습니다. 여기하나의 양식에서 두 가지 다른 작업

바로 제출 저장 버튼입니다 :

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>"; 
    } 

게시 코드 (페이지 저장 작업이 예정되어

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

양식 코드 (메인 페이지)의 리디렉션 대상 :

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

** 위험 ** : [방어막] (http://stackoverflow.com/)이 필요한 [SQL 주입 공격] (http://bobby-tables.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을 작성하십시오.

관련 문제