phpでのpost送信について

このQ&Aのポイント
  • 現在、phpを使用してデータベースに格納されている値にリンクを貼り、その先にpostメソッドで値を渡すスクリプトを作成していますが、formの書き方が原因でsyntax errorが発生してしまいます。
  • ループを使用してスクリプトを実行していますが、初心者のため最善の方法かどうかわかりません。改善策を知っている方は教えてください。
  • リンクには値を渡せるようにし、その値をpostメソッドで受け取るために、formの記述方法を修正する必要があります。
回答を見る
  • ベストアンサー

phpでのpost送信について

今、phpを使用して、データベースに格納されている値にリンクを貼り、その先にpostメソッドで値を渡すスクリプトを書いているのですが、formの書き方が悪いと思うのですがsyntax errorが出てしまいます。 echo '<form name='.X.' method='.POST.' action='.$Link_URL.'>'; echo '<input type='.hidden.' value='.$sql_result[$i]["renban"].' name='.primary.'>'; echo '</form>'; echo '<a href='.javascript:document.X.submit().'>'.$sql_result[$i]["title"].'</a>'; このスクリプトは$iの値によってループしています。 $sql_result[$i]["title"]という値にリンクを貼り、$Link_URLにpostで$sql_result[$i]["renban"]という値を送りたいと考えています。 何分初心者なもので、このやり方が最善かどうかもわかりませんが、改善案をご存知の方はご教授お願いします。

  • PHP
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

Xとか、hiddenとか、primaryとか、おそらくは文字列リテラルで書きたかったのであろう文字が引用符で括られていません(変数なら変数で $X などと書くべきですし)。 echo '<form name="X" method="POST" action="' . $Link_URL . '">'; echo '<input type="hidden" value="' . $sql_result[$i]["renban"] . '" name="primary">'; echo '</form>'; echo '<a href="javascript:document.X.submit()">' . $sql_result[$i]["title"] . '</a>'; 全部のformのname属性が同一というのはあり得ないので、X を form . $i にするならば echo '<form name=form"' . $i . '" method="POST" action="' . $Link_URL . '">'; echo '<input type="hidden" value="' . $sql_result[$i]["renban"] . '" name="primary">'; echo '</form>'; echo '<a href="javascript:document.form' . $i . '.submit()">' . $sql_result[$i]["title"] . '</a>'; (蛇足) anchor要素のhref属性でjavascript:~~というのは、ちょっとどうかなという気はします。onclickイベントを使った方がいいのでは?

daicedec
質問者

お礼

ご回答ありがとうございます。 非常に分かりやすい解説で、勉強になりました。 今後の参考にさせていただきます。

その他の回答 (1)

  • 1minn
  • ベストアンサー率57% (52/90)
回答No.2

「X」「POST」「hidden」「primary」「javascript:document.X.submit()」 これ全部定数ですか? 違うなら当然エラーになりますよ echo '<form name='; echo X; echo ' method='; echo POST; ご提示のソースを分けたらこんな感じです。 変数でも定数でも関数でもない。その値をクォート無しで出力すればエラーになります。

daicedec
質問者

お礼

ご回答ありがとうございます。 その後いろいろと試した結果、上手くいきました。 1minnさんのご回答、非常に勉強になりました、ありがとうございました。

関連するQ&A

  • PHP foreachのループの中でPOST送信

    現在掲示板を作っています。 <?php foreach ($result as $record){ $id = $record ["id"]; $title = $record ["title"]; ?> <form method="post" name="form1" action="contents.php"> <input type="hidden" name="id" value="<?php echo $id; ?>"> <a href="javascript:form1.submit()" ><?php echo $title; ?></a> </form> <?php } $dbInfo = null; ?> </form> テーブルのidとtitleをすべて取り出しています。 titleを一覧表示で全件表示させリンクを貼り、移動先にidをPOSTで送信し投稿内容がみられるようにしたいのですが、リンクを貼れても飛べなかったり、移動できてもなにも送信していない状態(ただ移動しただけ)だったり。 2つ目のphp直後の「}」を1つ目の中で閉じるとPOST送信しつつ移動できるのですが、1件しか表示されなくなってしまいます。 <form method="POST" name="con-id"> <input type="hidden" name="id" value="<?php echo $id; ?>"> <a href='contents.php'><?php echo $title; ?></a> </form> などもしてみましたが、POST送信はされませんでした。 なにか方法はありませんでしょうか? ここをこうした方がいい、など教えて頂きたいです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • phpのpostについて

    a.phpの値をb.phpにpostしたいのですがうまく値が渡せません post元にはname属性に変数を用いているのですがpost先でnameをどのように指定したらいいかわかりません <a.php> <form action="foo.php" method="POST"> <div id="button"> <input type="submit" name ="PostGo" value="postTime" style="margin-right:30px;" /> </div> <table> <?php for ($data = 1; $data < 5; $data++) { ?> <tr><td> <select name="test<?php echo $data?>"> <option value=1>1 <option value=2>2 <option value=3>3 <option value=4>4 </select> <?php } ?> </table></form> <b.php> <?php for($i=1;$i<5;$i++){ $test =($_POST['test']);←ここの部分のpostをどう指定したらいいかわかりません echo $test; } ?> ※$_POST['test' + $i] これでも取れませんでした

    • ベストアンサー
    • PHP
  • $POSTの送信

    POSTデータを送信する方法を教えてください。 PHPのPOSTを用いたプログラミングを行っています。 以下のように、前ページ受信したPOSTの内容(「aaa」)を hiddenで送信したいと思いましたが 次ページ(result.php)にて「$name」と受信してしまいます。 (前略) <?php $name = $_POST['name']; echo $name; ?> <form action="result.php" method="POST"> <input type="hidden" name="name2" value=$name> <input type="radio" name="name3" value=" (以下略) 説明下手ではありますがご回答頂きたいと思います。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • post送信のについて

    post送信について ボタン部分は画像にし、下記のように設定しましたが ちゃんとできてますでしょうか?ボタンを押しても飛ぶのはとびますが ちゃんとPOST送信になってるのか不安です。 ちなみにURLを残さないようにしてるはずがfirefoxだと残ってましたので 間違ってると思ってます。。 <script type="text/javascript" > var element = document.createElement("input"); document.form[0].appendChild(element); document.form[0].method = "post"; document.form[0].action = "test.aspx"; </script> <body> <form action="URL" method="post"> <input name="form1" type="image" src="images/test.jpg" alt=""> </form> <form action="URL2" method="post"><input name="form2" type="image" src="images/test.jpg" alt=""> </form> </body>

  • POST送信かGET送信か

       ------------------------------------------ <SCRIPT language="JavaScript"><!-- function GoPage(url, id){ document.form.action = url; document.form.id.value = id; document.form.submit(true) } // --></script> <!--中略--> <input type="submit" name="submit" value="送信" onClick="javascript:GoPage("a.php", "1")">    ------------------------------------------    上記のような処理を書いた場合、 遷移先である a.php で id(値:1)を取得する時は POSTで受け取るのですか?それともGETでしょうか?   

  • 同ページpost送信

    タイトルどおり同じページでpost通信したく一応、参考サイトどおりに試してみたのですが、動きません。フォームは訳あってechoで出力したいです。 同じページに送信できる方法を教えてください。 echo ('<form action="hoge.php" method="post"> <button type="submit" name="remove" class="pre">修正</button> <button type="submit" name="add" class="fro">登録</button> </form>'); if(!empty($_POST['add'])){ echo '登録しました'; }

    • ベストアンサー
    • PHP
  • postのタイムラグ

    以下のソースでPOSTの値が取れないときがあるので困っています。 具体的にはページを表示してから30秒程度待ってからの クリックじゃないとPOSTの値が取れません。 GETの場合はページ表示後すぐにボタンをクリックしても大丈夫でした。 原因が分からず途方に暮れています。 お知恵をお貸しください。 PHP Version 5.2.3 <?php $P_data = $_POST["pg"]; print("POST=>".$P_data."<BR>"); $G_data = $_GET["pg"]; print("GET=>".$G_data."<BR>"); print <<< DOC_END <html> <head> </head> <body> DOC_END; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=1>"; echo"<input type=submit value=あ>"; echo"</form>"; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=2>"; echo"<input type=submit value=い>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=3>"; echo"<input type=submit value=う>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=4>"; echo"<input type=submit value=え>"; echo"</form>"; print <<< END </body> </html> END; ?>

    • 締切済み
    • PHP
  • PHP&MySQLデータ削除のスクリプトについて

    はじめまして。 PHP、MySQL始めたばかりの初心者です。 この度、自力で解決出来なく、質問させて頂く事にしました。 現在、MySQL入門以前という参考書を見ながらデータベースを作っていました。削除スクリプトで、どうしても躓いておりまして何が原因が分からずじまいです。下記が呼び出しスクリプトです --------------------------ここから--------------------------- <?php extract($_GET); mysql_connect('localhost','root','xxxxx'); mysql_select_db('xxxxx'); $sql = "select * from xxxxx where id = '{$id}'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "検索データが見つかりませんでした。"; exit; } else { while($row = mysql_fetch_array($result)){ echo "<h2> " , $row["title"] , "</h2>"; echo "<p><font size=\"-2\">#", $row["id"] ," ●",$row["tourokubi"] ,"</font></p>\n"; echo "<p><div class=\"hon\">", nl2br($row["honbun"]), "</div></p>"; echo "<div class=\"key\">keywords: ", nl2br($row["keyword"]), "</div>"; $ukid=$row["id"]; echo "<center> <a href=\"j_sakujo1.php?i=$ukid\"><img src=\"sakujobutton.gif\" alt=\"削除ボタン\" border=0></a>  <a href=\"correct.php?i=$ukid\"><img src=\"shuseibutton.gif\" alt=\"修正ボタン\" border=0></a>  </center>"; } } ?> --------------------------ここまで--------------------------- そして削除スクリプトです --------------------------ここから--------------------------- <?php extract($_POST); extract($_GET); mysql_connect('localhost','root','xxxxx'); mysql_select_db('xxxxx'); //MySQLレコード削除 if($kakunin=="確認"){ $sql = "delete from xxxxx where id = '{$id}'"; mysql_query($sql); echo "レコードの削除が完了しました"; exit; } //削除確認のためのフォーム $sql = "select * from xxxxx where id = '{$id}'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else{ while($row = mysql_fetch_array($result)){ echo "<p>このレコードを削除します。</p>"; echo "<form action = \"j_sakujo1.php\" method = \"post\">"; echo "<p>登録日:"; echo $row["tourokubi"]; echo "</p>"; echo "<p>タイトル:"; echo $row["title"]; echo "</p>"; echo "<p>本文:"; echo $row["honbun"]; echo "</p>"; echo "<p>キーワード:"; echo $row["keyword"]; echo "</p>"; echo "<input type = \"hidden\" name = \"ren\" value =\""; echo $row["renban"]; echo "\">"; echo "<p><input type=\"submit\" name=\"kakunin\" value=\"確認\">"; echo "<input type=\"reset\" value=\"リセット\"></p>"; echo "</form>"; } } ?> --------------------------ここまで--------------------------- これで削除ボタンを押すと「該当データがありません。」だけ表示され 登録してあるデータがまったく表示されません。 どこで間違ったのか、どうかご指南お願い致します。

  • PHP 選んだ状態を維持するには

    初心者です。 下記のソースで、ボタンを押すと指定した状態が残らず、元の状態に戻ってしまいます。 現時点では、どんな日付を選んでも2000年1月に戻ります。これをボタンを押しても選んだ状態を維持するにはどうすればよいでしょうか? checkedをどこかに指定すればいいのでしょうか?ご指導をお願いします。 ---------------- <html> <head> <title>test</title> </head> <body> <form method="POST"> <?php echo "<select name=\"yyyy\">"; for ($i = 2000; $i < 2012; $i++) { echo "<option>".$i; } echo "</select> 年 "; echo "<select name=\"mm\">"; for ($i = 1; $i < 13; $i++) { echo "<option>".$i; } echo "</select> 月 "; echo "選択された日付:".$_POST["yyyy"]. "年".$_POST["mm"]."月"; ?> <p><input type="submit" value="送信"> <form> </body> </html>

    • ベストアンサー
    • PHP
  • POSTされない

    xamppにてローカル環境でやっているのですがなぜか type="file"だけPOSTされません。 ie6とfairefox3で試しましたが取得できませんでした。 調べてみたのですが同様の事例が見つからずわからかったのですが これは何が原因なのでしょうか? ---html--- <form action="index.php" method="post" enctype="multipart/form-data"> <input type="text" name="name" /> <input type="file" name="img" /> <input type="submit" name="send" value="送信する" /> </form> ---php--- if (isset($_POST['send'])) { echo '<pre>'; print_r($_POST); echo '</pre>'; } print_r($_FILES);を試すと正常に値が表示されます。全く意味不明 なのですが何かセキュリティ上の問題などが原因なのでしょうか?

    • 締切済み
    • PHP

専門家に質問してみよう