0

フォームは、承認を待っているすべての行を出力する関数から作成されます。

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

?>
4

2 に答える 2

1

いつでも各行を異なる形式にして、動的URLに渡すことができます。動的URLで、GetDATAは選択した行を通知します。

または、フォームを使用して、それぞれにページへのリンクを設定することもできません。(アクションページがaction.phpであり、100行あると仮定します。action.php?row = 1&ac = y、action.php?row = 1&ac = nなどがあります)

于 2012-06-15T01:19:36.577 に答える
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>
于 2012-06-15T01:27:31.273 に答える