0

私はここでかなり長い間私の質問(他の人から尋ねられた)への回答を得てきたので、私はstackoverflowに慣れていませんが、まだ答えを見つけることができなかったものに出くわしました。あなたたち/ギャルが助けることができます。

簡単な歴史を説明するために、私は実験装置用のハードウェア チェックアウト システムを構築しました。少し前まで、私は mysql コマンドを手動で実行して機器を追加していましたが、仕事が他の業務で忙しくなりすぎたので、これを管理するための管理ページを作成し、内部の知識のない他の管理者を何人か割り当てることにしました。ハードウェア データベースを変更するだけでなく、基本的な追加/削除ユーザー機能も使用できます。これはかなり前から導入されており、一般的にはうまく機能していますが、別の管理者がブラウザ ウィンドウをアクティブにしようとして別の管理者ユーザーの削除ボタンを誤ってクリックしたという不幸な事件の後、ウィンドウ確認プロンプトを配置することにしました。確認ウィンドウでユーザー名を参照します。ここに私が今持っているコードがあります。私は自分の部分を除いて、関係のないものをすべて削除しました。困っています。全体を投稿する必要がある場合は投稿できますが、200行弱です。

function DelUserValidate()
{
var clicked=document.forms["deluser"]["delrootuser"].value;
var confirmed=confirm("Are you sure you want to delete this user: "+clicked);

if (confirmed==true)
    {
return true;
    }
else
    {
return false;
    }
}
<?php
$con = mysql_connect("localhost","webby","webical");
mysql_select_db("checkout", $con);
$result = mysql_query("SELECT * FROM root_mem ORDER BY id");

echo "<table border='1'>
<tr>
<th>Username</th>
<th>Password</th>
</tr>";

while($row = mysql_fetch_array($result))
    {
    echo "<tr>";
    echo "<td>" . $row['username'] . "</td>";
    $rootusername = $row['username'];
    echo '<td bgcolor="#fff">' . $row['password'] . "</td>";

    echo "<td bgcolor=\"red\"><form style=\"margin-bottom:0;\" action=\"root-delrootuser.php\" method=\"post\" name=\"deluser\" onsubmit=\"return DelUserValidate();\"><input type=\"submit\" value=\"Delete User\"><input type=\"hidden\" name=\"delrootuser\" value=\"$rootusername\"><input type=\"hidden\" name =\"adminuse\" value=\"$adminuse\"></form></td>";
    echo "</tr>";
    }
    echo "</table>";
?>

このvar clicked=document.forms["deluser"]["delrootuser"].value;セクションは、私が知る限り、私の問題を引き起こしているものです。

この変数を「テキスト」などの静的なものとして定義すると、ユーザーの横にある削除ボタンをクリックするとすべてが機能します。[OK] または [キャンセル] をクリックするように求められますが、それぞれが期待どおりに機能します。上記のように定義すると、関数が存在しないかのように完全にバイパスされます。ただし、削除しようとしているユーザー名をみんなに見てもらいたいです。最初は $rootusername 変数を渡していないと思ったので、フォームフィールドで、その時点で削除をテストしていたユーザー名に置き換えましたが、それでも関数をバイパスしました。私が見逃しているものについてのアイデアはありますか?

4

2 に答える 2

0

あなたが私に提供してくれたjqueryのものでさえ、私はまだそれを機能させることができませんでしたが、おそらく後で他のいくつかのことに役立つでしょう. しかし、私は最終的に私の問題を理解しました。

サーバー側とクライアント側の比較について多くのことを読み、より慣れてきた後、javascript 関数内で PHP 変数を参照することがうまくいかないようだということを知りました。おそらく他にもいくつかの方法がありますが、いくつかの実験の後、onsubmit 内で PHP タグを開き、window.confirm をエコーし​​て、その方法で PHP 変数を参照しました。私の最終的なコードは次のようになり、魅力的に機能しました。

<td bgcolor="red"><form style="margin-bottom:0;" action="root-delrootuser.php" method="post" name="deluser" onsubmit="<?php echo "<script>window.confirm('blah, blah blah'" . $variable . "');</script>";?><input type="submit" value="Delete User"><input type="hidden" name="delrootuser" value="$rootusername"><input type="hidden" name ="adminuse" value="<?php echo $adminuse;?>"></form></td>
于 2013-08-26T11:10:42.830 に答える
0

何らかの理由で、DelUserValidate が定義されていないというエラーが発生し続けたので、jQuery を使用して関数を送信イベントにアタッチしました。ここで遊ぶjsFiddleがあります。

$('#yourFormID').submit(function() {
    var clicked = document.forms.deluser.delrootuser.value;
    return confirm("Are you sure you want to delete this user: " + clicked);
});
于 2013-07-16T22:58:51.497 に答える