2012-06-15 45 views
0

表單由打印出等待批准的所有行的函數構成;MySQL:在具有多個ID的表單中傳遞單行ID

function all_reviews(){ 
$query1= mysql_query("SELECT * FROM {$table} WHERE first != '' && disp_state= '0' && rejected != '1'"); 
if (!$query1) { 
    die("Query to show fields from table failed"); 
} 
$fields_num = mysql_num_fields($query1); 

// printing table rows 
while($row = mysql_fetch_array($query1)) 
{ 
//review action buttons 
     echo "<div class=\"rev_action\">"; 
     echo "<input type=\"hidden\" name=\"".$row['id']."\">"; 
     echo "<input type=\"submit\" name=\"accept\" value=\"Approve\" class=\"success rev_button\" onclick=\"document.getElementById('review_action').submit()\">"; 
     echo "<input type=\"submit\" name=\"reject\" value=\"Reject\" class=\"error rev_button\" onclick=\"document.getElementById('review_action').submit()\">"; 
     echo "</div>"; 
} 

我猜測,正確的方法是通過在隱藏輸入中打印出行ID。問題是,一次可能打印出多於一行。

如何選擇與批准或拒絕按鈕相關的確切行?

HTML:

<form name="form" action="include/review_submit.php" id="review_action" method="post"> 

    <?php all_reviews(); ?> 

</form> 

PHP(review_submit.php):

//database server connection 
mysql_connect ("$servername","$dbusername","$dbpassword") or die(mysql_error()); 
//database connection 
mysql_select_db("esd_db") or die(mysql_error()); 

//data feilds from review form 
if($_POST['button'] == "Approve") { 
    //code to update given row with an approval status 
} 

//data feilds from review form 
if($_POST['button'] == "Reject") { 
    //code to update given row with an rejection status 
} 
//insert values into table 
mysql_query("UPDATE `reviews` ") or die(mysql_error()); 

Print "Success"; 

?> 
+0

我可以爲bu創建一個不同的id ttons?然後使用正則表達式來拉出id並將其傳遞到MySQL UPDATE?看起來髒......你們覺得怎麼樣? – frankV

回答

1

你總是可以讓各行不同的形式,並把它傳遞到動態URL,其中GETDATA會告訴你選擇了哪一個。

或者,您不能使用表單,並且每個表單鏈接到一個頁面。 (假設action頁面是action.php,你有100行,你可以有action.php?row = 1 & ac = y,action.php?row = 1 & ac = n等)

+0

太容易了!太感謝了!!! – frankV

0

您應該添加一個複選框的每一行,如果你想使用基本的非Ajax的形式,從各行移動按鈕添加到窗體的底部:

<div class="rev_action"> 
    <input type="checkbox" name="select_row[]" value="1"> 
</div> 
<div class="rev_action"> 
    <input type="checkbox" name="select_row[]" value="2"> 
</div> 
<!-- ... --> 
<input type="submit" name="accept" value="Approve" class="success rev_button"> 
<input type="submit" name="reject" value="Reject" class="error rev_button"> 

如果要使用AJAX你不需要做任何修改並且需要爲每個按鈕添加點擊事件:

echo "<div class=\"rev_action\">"; 
echo "<input class="id_input" type=\"hidden\" name=\"".$row['id']."\">"; 
echo "<input type=\"submit\" name=\"accept\" value=\"Approve\" class=\"success rev_button\" onclick=\"document.getElementById('review_action').submit()\">"; 
echo "<input type=\"submit\" name=\"reject\" value=\"Reject\" class=\"error rev_button\" onclick=\"document.getElementById('review_action').submit()\">"; 
echo "</div>"; 
... 

</form> 
<script> 
$('input.success.rev_button').click(function(){ 
    var review_id = $(this).siblings('input.id_input').attr('name') 
    $.ajax({ 
    url: '/reviews/success', 
    type:'POST', 
    data: {id: review_id} 
    }) 
}) 
</script> 
+0

我是一個noob,因此我有點被AJAX嚇倒。 – frankV

+0

然後使用第一種方法,並在服務器端$ _POST ['select_row']將是一個數組與選定的審查ID – odiszapc

+0

有了這種特定的設計,每個打印行必須有它自己的批准/拒絕按鈕。 – frankV

相關問題