LoginSignup
161
156

More than 5 years have passed since last update.

HTMLのAタグでPOSTする方法

Last updated at Posted at 2017-06-16

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することになります。

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

161
156
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
161
156