Edited at

HTMLのAタグでPOSTする方法

More than 1 year has passed since last update.

AタグからPOSTする為の方法


atag_post.html

<form method="post" name="form1" action="link.php">

<input type="hidden" name="user_name" value="名前">
<a href="javascript:form1.submit()">リンク名</a>
</form>

hrefの値をフォーム先にしてやるのが一番簡単そう。

他にも色々やり方があったけど、この方法が一番スマートな気がする。

2017年10月01日追記

やたらとこのページだけアクセス数が多いので追記しておきます。

ループなどで複数の同名FORM部品がある場合の対応方法。

簡単な一例を書いておきます。


atag_post.php

<?php

/* 一部処理を端折ってます
* $connect : データベースへのリンク
* closeしてなかったりします
* 仮にuser_nameは 0:遠藤 1:田中 2:浜田 とします。
*/

// クエリ:user_table から user_name を選択
$sql = "SELECT user_name FROM user_table";
// クエリ結果を $result にセット
$result = mysqli_query($connect, $sql);
// 結果セットを1件ずつ取り出し、$name_rows に配列として格納
while ($row = mysqli_fetch_assoc($result)) {
$name_rows[] = $row;
}
// 結果セット解放
mysqli_free_result($result);

for($i = 0; $i < 3; $i++){
?>
<form method="post" name="form1" action="link.php">
<input type="hidden" name="user_name" value="<?php echo $rows[$i]["user_name"]; ?>">
<a href="javascript:form1[<?php echo $i; ?>].submit()"><?php echo $rows[$i]["user_name"]; ?></a>
</form>
<?php } ?>



html出力

<form method="post" name="form1" action="link.php">

<input type="hidden" name="user_name" value="遠藤">
<a href="javascript:form1[0].submit()">遠藤</a>
</form>
<form method="post" name="form1" action="link.php">
 <input type="hidden" name="user_name" value="田中">
<a href="javascript:form1[1].submit()">田中</a>
</form>
<form method="post" name="form1" action="link.php">
 <input type="hidden" name="user_name" value="浜田">
<a href="javascript:form1[2].submit()">浜田</a>
</form>

hrefのフォーム名に順番をつけてやることによってAタグで囲ったリンクが何番目のAタグなのかを明示することができます。ループ処理でFORMを出力する時は何番目かを指定してやらないと毎回、最初のフォーム(ここで言うと[0]番目のフォーム)の内容ばかりPOSTすることになります。

比較的簡単な処理なので悩んでる人がいたら参考にして下さい