0

初心者の質問については、事前にお詫び申し上げます。

1) ユーザー定義変数と 2) 定義済み変数の両方を php スクリプトに渡す html フォームが必要です。

html は次のとおりです。

<form action="update_db.php" method="post">
Before Rating: <input type="number" name="rating"><br>
<input type="submit">
</form>

<form action="update_db.php" method="post">
After Rating: <input type="number" name="rating"><br>
<input type="submit">
</form>

update_db.php は次のとおりです。

$rating=$_POST["rating"]; 
mysql_connect("localhost", "uname", "password") or die(mysql_error());
mysql_select_db("dbname") or die(mysql_error());
mysql_query("INSERT INTO ratings_table
(rating, before_or_after) VALUES($rating,$before_or_after)")
or die(mysql_error()); 

ご覧のとおり、「前」の評価フォームと「後」の評価フォームの両方に対して同じ php スクリプトを呼び出し、ユーザー定義変数 (「評価」) と事前の評価フォームの両方でデータベースを更新します。定義された変数 ('before_or_after')。update_db.php が「before」フォームで呼び出された場合は「before_or_after」が「1」になり、「after」フォームで呼び出された場合は「2」になります。

これには簡単な答えがあると確信しています。または、これについて完全に間違った方法で考えていると確信しています。

助言がありますか?

4

4 に答える 4

0

では、HTML で別の post 変数を使用して、少し追加の PHP を記述してみませんか?

<form action="update_db.php" method="post">
Before Rating: <input type="number" name="rating_before"><br>
<input type="submit">
</form>

<form action="update_db.php" method="post">
After Rating: <input type="number" name="rating_after"><br>
<input type="submit">
</form>

次に、PHP で設定されているものを確認します。

if(isset($_POST["rating_after"])) $rating = $_POST["rating_after"]; 
if(isset($_POST["rating_before"])) $rating = $_POST['rating_before'];
mysql_connect("localhost", "uname", "password") or die(mysql_error());
mysql_select_db("dbname") or die(mysql_error());
mysql_query("INSERT INTO ratings_table
(rating, before_or_after) VALUES($rating,$before_or_after)")
or die(mysql_error()); 
于 2013-10-04T03:29:25.737 に答える
0

フォームを次のように変更します。

<form action="update_db.php" method="post">
Before Rating: <input type="number" name="before_rating">
<input type="hidden" name="before_or_after" value="before"><br>
<input type="submit">
</form>
<form action="update_db.php" method="post">
After Rating: <input type="number" name="after_rating">
<input type="hidden" name="before_or_after" value="after"><br>
<input type="submit">
</form>

そしてあなたのphpは $_POST['before_or_after'] を使用します

現在、警告のために mysql_* を使用しないでください。これは、SQL インジェクション攻撃に対して無防備です。

于 2013-10-04T03:32:23.090 に答える
0
<form action="update_db.php?mood=1" method="post">
Before Rating: <input type="number" name="rating"><br>
<input type="submit">
</form>

<form action="update_db.php?mood=2" method="post">
After Rating: <input type="number" name="rating"><br>
<input type="submit">
</form>

そして update_db.php で $before_or_after を初期化します $before_or_after = $_GET['mood'];

于 2013-10-04T03:36:25.347 に答える
0

問題を解決するために $_GET を使用することをお勧めします。

<form action="update_db.php?r=1" method="post">
Before Rating: <input type="number" name="rating"><br>
<input type="submit">
</form>   
<form action="update_db.php?r=2" method="post">
After Rating: <input type="number" name="rating"><br>
<input type="submit">
</form>   

次にPHPで:

$r = (int)$_GET['r'];
if($r==1){//it's before 

}
else{//it's after

}

ただし、$_GET と 'hidden' の値は 100% 信頼できるわけではないことに注意してください。一部のユーザーは意図的にこれらを JavaScript などに置き換えることができます (たとえば、「評価後」フォームにそれを指摘するパラメータを投稿することができます)。は「評価前」)。あるフォームを別のフォームではなく投稿することがユーザーにとってあまり意味がない場合は、このようにしてください。

于 2013-10-04T03:37:24.540 に答える