-1

各行に承諾ボタンと辞退ボタンがある単純なテーブルがあります。承認を押すと、一意の参照に基づいて MYSQL 列に 10 を追加する必要があります。辞退する場合は、同じ参照 (行ごとに 1 つ) で 20 を追加します。テーブルとボタンを作成する次のコードがあります。(接続等取り出し)

<form Action="leaveupdate.php?" method="POST" >
$query= "
SELECT t0.*, t1.id_user as t1user, t1.name as t1name
FROM $loc t0
LEFT JOIN login1st t1 ON t0.User_id = t1.id_user
WHERE t0.status >=10 and status <20 ORDER BY Date_Input ASC
";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
$fieldCount = mysql_num_fields($result);
echo "<TABLE border='1' cellspacing='0' cellpadding='15' id='sort_table' width='490px'>    <thead><TR bgcolor=#ffffff>";
?>
<legend>Research results!</legend>
<table border="1" width="75%" cellpadding="2" cellspacing="0">
<tr>
        <TD align="center">Requestor</TD>
        <TD align="center">Leave type</TD>
        <TD align="center">Date requested</TD>
        <TD align="center">Date Requested</TD>
        <TD align="center">ACCEPT</TD>
        <TD align="center">DECLINE</TD>
</tr>
        <?
echo "</TR></thead><tbody>";
while ($row = mysql_fetch_assoc($result)) {
echo '<tr>';
echo'<td align=middle>' . $row["t1name"]                      . '</td>' ; // Requestor
echo'<td align=middle>' . $res                       . '</td>' ; // Status
echo'<td align=middle>' . date("l", $row["date_effected"]) . "<BR>". date("j-M-Y",   $row["date_effected"])     . '</td>' ; // Day off
echo'<td align=middle>' . date("d-m-y @ H:i", $row["Date_Input"])             . '</td>'   ; //Date Requested
echo'</td><td><input type="submit" name="edit" value="10" class="buttons2">';//Add 10
echo'</td><td><input type="submit" name="edit" value="20" class="buttons3">';//Add 20
echo'<td alighn=middle>'.$row["Unique_id"].'</td>';Just for testing not needed will be removed from the table
echo '</tr>';
}
echo "</tbody></TABLE>";
?>
</table>
</body>
</html>

これはこのページに投稿されます (私は get を使用して何が起こるかを確認しますが、変更される予定です)

<?php
$loc = $fgmembersite->UserLocation();
$conn = mysql_connect("****","******","Pword");
if (!$conn) die ("Could not connect MySQL");
mysql_select_db("****",$conn) or die ("Could not open database");
if(!isset($_POST['edit']))
{
//add die here
}

$IU            =    ($_POST['Unique_id']);
$change            =    ($_POST['edit']);
$sql_query_update = "update $loc set status = status+$change where unique_id = IU";
mysql_query( $sql_query_update );
echo $sql_query_update;//only for testing will be removed
mysql_Close()
?>

ご覧のとおり、IU と変更の 2 つの変数が必要でしたが、わかりません。おそらく簡単ですが、誰かがそれを助けることができれば役に立ちます.私はウェブを読んでいて、AJAXへの参照を見てきましたが、これを使用したり調べたりしたことはありません. ありがとうございます

4

1 に答える 1

0

送信ボタンを介して複数のデータを転送しようとする代わりに、非表示の<input>:

<form ... >
    <input type="hidden" name="unique_id" value="<?php echo htmlspecialchars($row['Unique_id']); ?>" />

    ...
</form>

ID は で使用できます$_POST['unique_id']

また、ユーザーが自由に変更量を設定できないようにチェックを入れることも検討してください。サーバー側のチェックでのみ変更する1020、それを強制する場合-現在、ユーザー入力を介して、変更する実際の量を受け入れています。


補足:mysql_*ライブラリは非推奨です。PDO または MySQLi にアップグレードすることをお勧めします。コードは SQL インジェクションに対して脆弱です。MySQLi ライブラリをアップグレードし、Prepared Statement を使用するか、少なくとも適切なエスケープ関数を使用する必要があります (mysql_real_escape_string()この場合)。

于 2013-01-15T15:08:44.637 に答える