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することになります。
比較的簡単な処理なので悩んでる人がいたら参考にして下さい