PHPについて質問です。

現在買物のページを作成しています。
商品を探すのにメニュー検索と検索ワードを打ち込んで検索する二つの方法をとっています。
今回お聞きしたいのが、メニュー検索についてです。
<a href="">商品名</a>
の様になっているのですが、
メニューをクリックした時に検索ワードを打ち込んだのと同じ様にページを開きたいです。

商品名のリンクをクリックしたときに、
PHPのSUBMITボタンをPOSTで送信した時と同じような現象を起こして、
商品名をセッションに格納、その後に検索結果のページでデータを反映させたいのですが、そのような事をするのは可能でしょうか?
大変お手数をおかけしますがわかるかたおりましたらご回答をお願いします。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/07/15 09:15:07
  • 終了:2010/07/15 17:44:50

ベストアンサー

id:windofjuly No.3

うぃんど回答回数2625ベストアンサー獲得回数11492010/07/15 17:25:05

ポイント100pt

>実行してみましたがリンクを押してもうまくSUBMITされません。

form1 が3つもあるからです

それぞれ名前を変えておかないと、どのフォームのテキストボックスに書き込んだらいいのかがわかりません

メロンは form1

野菜は form2

果物は form3


スクリプトのほうも複数のフォームに対応させる必要があります

<html>
<head>
<script type="text/javascript">
    <!--
        function a_submit(f,n) {
            document.forms[f].elements["keyword"].value = n;
            document.forms[f].submit();
        }
    //-->
    </script>
</head>
<body>
    ■ お勧めセット ■<br><Br> 
    <a href="javascript:void(0)" onclick="a_submit('form1','メロン'); return false;">メロン</a><br><br>
    <form name="form1" action="kaimono_kensaku.php" method="POST" >
          <input type="text" name="keyword" size="30">
          <input type="submit" value="送信" />
    </form>
    ◆◇◆ 野菜 ◆◇◆<br><Br><br><Br>
    <a href="javascript:void(0)" onclick="a_submit('form2','じゃがいも'); return false;">じゃがいも</a><br><br>
    <form name="form2" action="kaimono_kensaku.php" method="POST">
        <input type="text" name="keyword" size="30"><br>
        <input type="submit" value="送信" />
    </form>
    ◆◇◆ 果物 ◆◇◆<br><Br> <br><Br>
    <a href="javascript:void(0)" onclick="a_submit('form3','さくらんぼ'); return false;">さくらんぼ</a><br><br>
    <form name="form3" action="kaimono_kensaku.php" method="POST">
        <input type="text" name="keyword" size="30"><br>
        <input type="submit" value="送信" />
    </form>◆◇◆ その他 ◆◇◆<br><Br>
</body>
</html>

下のようにしてしまう方法もありますが、種類が増えてくるとメンテナンスが面倒になるので、普段は使わないです

<html>
<body>
    ■ お勧めセット ■<br><Br> 
    <a href="javascript:void(0)" onclick="javascript:document.form1.keyword.value = 'メロン'; document.form1.submit(); return false;">メロン</a><br><br>
    <form name="form1" action="kaimono_kensaku.php" method="POST" >
          <input type="text" name="keyword" size="30">
          <input type="submit" value="送信" />
    </form>
    ◆◇◆ 野菜 ◆◇◆<br><Br><br><Br>
    <a href="javascript:void(0)" onclick="javascript:document.form2.keyword.value = 'じゃがいも'; document.form2.submit(); return false;">じゃがいも</a><br><br>
    <form name="form2" action="kaimono_kensaku.php" method="POST">
        <input type="text" name="keyword" size="30"><br>
        <input type="submit" value="送信" />
    </form>
    ◆◇◆ 果物 ◆◇◆<br><Br> <br><Br>
    <a href="javascript:void(0)" onclick="javascript:document.form3.keyword.value = 'さくらんぼ'; document.form3.submit(); return false;">さくらんぼ</a><br><br>
    <form name="form3" action="kaimono_kensaku.php" method="POST">
        <input type="text" name="keyword" size="30"><br>
        <input type="submit" value="送信" />
    </form>◆◇◆ その他 ◆◇◆<br><Br>
</body>
</html>
id:aiomock

ご回答ありがとうございます。

2010/07/15 17:40:29

その他の回答(2件)

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492010/07/15 15:43:23

ポイント27pt

javascriptで検索ワードをフォームに打ち込ませればいい

<html>
<head>
    <script type="text/javascript">
    <!--
        function a_submit(n) {
            document.form1.keyword.value = n;
            document.form1.submit();
        }
    //-->
    </script>
</head>
<body>
    <a href="javascript:void(0)" onclick="a_submit('商品名'); return false;">商品名</a>
    <form name="form1" action="hogehoge" method="POST">
        <input type="text" name="keyword" size="30"><br>
        <input type="submit" value="送信" />
    </form>
</body>
</html>

画面上にフォームを見せたくないなら下のようにしてもいいし

    <form name="form1" action="hogehoge" method="POST">
        <input type="hidden" name="keyword" size="30"><br>
    </form>

もっと単純にstyleで隠してしまってもいい

    <form name="form1" action="hogehoge" method="POST" style="display:none">
        <input type="text" name="keyword" size="30"><br>
        <input type="submit" value="送信" />
    </form>
id:aiomock

ご回答ありがとうございます。

実行してみましたがリンクを押してもうまくSUBMITされません。

(リンクを押したら同時にTXTに文字が入れられて、SUBMITボタンが押されるという事ですよね??)

http://www.aiomock2008.sakura.ne.jp/kaimono_menu.php

のようではいけないのでしょうか・・・。

2010/07/15 16:37:38
id:ko8820 No.2

ko8820回答回数1221ベストアンサー獲得回数692010/07/15 16:59:20

ポイント27pt

可能です。

こんな感じで実装してみてください。

http://seotemplate1.blog121.fc2.com/blog-entry-19.html

id:aiomock

回答ありがとうございます。

実装してみましたがうまく起動しません。。

2010/07/15 17:17:54
id:windofjuly No.3

うぃんど回答回数2625ベストアンサー獲得回数11492010/07/15 17:25:05ここでベストアンサー

ポイント100pt

>実行してみましたがリンクを押してもうまくSUBMITされません。

form1 が3つもあるからです

それぞれ名前を変えておかないと、どのフォームのテキストボックスに書き込んだらいいのかがわかりません

メロンは form1

野菜は form2

果物は form3


スクリプトのほうも複数のフォームに対応させる必要があります

<html>
<head>
<script type="text/javascript">
    <!--
        function a_submit(f,n) {
            document.forms[f].elements["keyword"].value = n;
            document.forms[f].submit();
        }
    //-->
    </script>
</head>
<body>
    ■ お勧めセット ■<br><Br> 
    <a href="javascript:void(0)" onclick="a_submit('form1','メロン'); return false;">メロン</a><br><br>
    <form name="form1" action="kaimono_kensaku.php" method="POST" >
          <input type="text" name="keyword" size="30">
          <input type="submit" value="送信" />
    </form>
    ◆◇◆ 野菜 ◆◇◆<br><Br><br><Br>
    <a href="javascript:void(0)" onclick="a_submit('form2','じゃがいも'); return false;">じゃがいも</a><br><br>
    <form name="form2" action="kaimono_kensaku.php" method="POST">
        <input type="text" name="keyword" size="30"><br>
        <input type="submit" value="送信" />
    </form>
    ◆◇◆ 果物 ◆◇◆<br><Br> <br><Br>
    <a href="javascript:void(0)" onclick="a_submit('form3','さくらんぼ'); return false;">さくらんぼ</a><br><br>
    <form name="form3" action="kaimono_kensaku.php" method="POST">
        <input type="text" name="keyword" size="30"><br>
        <input type="submit" value="送信" />
    </form>◆◇◆ その他 ◆◇◆<br><Br>
</body>
</html>

下のようにしてしまう方法もありますが、種類が増えてくるとメンテナンスが面倒になるので、普段は使わないです

<html>
<body>
    ■ お勧めセット ■<br><Br> 
    <a href="javascript:void(0)" onclick="javascript:document.form1.keyword.value = 'メロン'; document.form1.submit(); return false;">メロン</a><br><br>
    <form name="form1" action="kaimono_kensaku.php" method="POST" >
          <input type="text" name="keyword" size="30">
          <input type="submit" value="送信" />
    </form>
    ◆◇◆ 野菜 ◆◇◆<br><Br><br><Br>
    <a href="javascript:void(0)" onclick="javascript:document.form2.keyword.value = 'じゃがいも'; document.form2.submit(); return false;">じゃがいも</a><br><br>
    <form name="form2" action="kaimono_kensaku.php" method="POST">
        <input type="text" name="keyword" size="30"><br>
        <input type="submit" value="送信" />
    </form>
    ◆◇◆ 果物 ◆◇◆<br><Br> <br><Br>
    <a href="javascript:void(0)" onclick="javascript:document.form3.keyword.value = 'さくらんぼ'; document.form3.submit(); return false;">さくらんぼ</a><br><br>
    <form name="form3" action="kaimono_kensaku.php" method="POST">
        <input type="text" name="keyword" size="30"><br>
        <input type="submit" value="送信" />
    </form>◆◇◆ その他 ◆◇◆<br><Br>
</body>
</html>
id:aiomock

ご回答ありがとうございます。

2010/07/15 17:40:29
  • id:aiomock
    自分が作成したコードです。
    SQLと連動させています。。

    <html>
    <head>

    <script type="text/javascript">
    <!--
    function a_submit(n) {
    document.form1.keyword.value = n;
    document.form1.submit();
    }
    //-->
    </script>

    </head>
    <body>

    <?


    require "database_connect.php";

    echo "<center>■ お勧めセット ■<br><Br>";

    $sql=mysql_query(" SELECT * FROM `KAIMONO` WHERE SYURUI = 'セット' ORDER BY `BANGOU` DESC ; ");

    while ($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {



    echo "
    <a href=\"javascript:void(0)\" onclick=\"a_submit('".$row["NAME"]."'); return false;\">".$row["NAME"]."</a><br><br>

    <form name=\"form1\" action=\"kaimono_kensaku.php\" method=\"POST\" >
    <input type=\"text\" name=\"keyword\" size=\"30\"><input type=\"submit\" value=\"送信\" />
    </form>";


    //echo "<a href=\"KAIMONO/".$row["BANGOU"].".html\">".$row["NAME"]."</a><Br><Br>";

    }




    echo "◆◇◆ 野菜 ◆◇◆<br><Br>";

    $sql=mysql_query(" SELECT * FROM `KAIMONO` WHERE SYURUI= '野菜' ORDER BY `BANGOU` DESC ; ");


    while ($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {

    echo "<br><Br><a href=\"javascript:void(0)\" onclick=\"a_submit('".$row["NAME"]."'); return false;\">".$row["NAME"]."</a>

    <form name=\"form1\" action=\"kaimono_kensaku.php\" method=\"POST\" style=\"display:none\">
    <input type=\"text\" name=\"keyword\" size=\"30\"><br>
    <input type=\"submit\" value=\"送信\" />
    </form>";


    //echo "<a href=\"KAIMONO/".$row["BANGOU"].".html\">".$row["NAME"]."</a><Br><Br>";

    }



    echo "◆◇◆ 果物 ◆◇◆<br><Br>";

    $sql=mysql_query(" SELECT * FROM `KAIMONO` WHERE SYURUI='果物' ORDER BY `BANGOU` DESC ; ");

    while ($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {

    echo " <br><Br><a href=\"javascript:void(0)\" onclick=\"a_submit('".$row["NAME"]."'); return false;\">".$row["NAME"]."</a>

    <form name=\"form1\" action=\"kaimono_kensaku.php\" method=\"POST\" style=\"display:none\">
    <input type=\"text\" name=\"keyword\" size=\"30\"><br>
    <input type=\"submit\" value=\"送信\" />
    </form>";


    //echo "<a href=\"KAIMONO/".$row["BANGOU"].".html\">".$row["NAME"]."</a><Br><Br>";

    }



    echo "◆◇◆ その他 ◆◇◆<br><Br>";

    $sql=mysql_query(" SELECT * FROM `KAIMONO` WHERE SYURUI = 'その他' ORDER BY `BANGOU` DESC ; ");


    while ($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {

    echo " <br><Br><a href=\"javascript:void(0)\" onclick=\"a_submit('".$row["NAME"]."'); return false;\">".$row["NAME"]."</a>

    <form name=\"form1\" action=\"kaimono_kensaku.php\" method=\"POST\" style=\"display:none\">
    <input type=\"text\" name=\"keyword\" size=\"30\"><br>
    <input type=\"submit\" value=\"送信\" />
    </form>";


    //echo "<a href=\"KAIMONO/".$row["BANGOU"].".html\">".$row["NAME"]."</a><Br><Br>";

    }






    ?>

    </body></html>
  • id:aiomock
    の回答を参考にサンプルを作成してみたのですが、うまく出来ません。。

    <html>
    <head>
    <script><head>
    <script type="text/javascript">
    <!--
    function hoge(){
    document.test.dddd.value="9999"; ←←← ①
    document.test.submit();
    }
    // -->
    </script>
    <title>test</title>
    </head>
    <body>
    ↓↓フォームの定義↓↓
    <form name="test" action="./test01.php" method="post"><input name="aaaa"
    type="text"><br>
    <input name="bbbb" type="text"><br>
    <input name="cccc" type="text"><br>
    <input name="dddd" value="1234" type="hidden"></form>
    <a href="javascript:void(0)" onclick="hoge(); return false;">
    javascriptからPOST</a>
    </body>
    </html>


    document.test.dddd.value="9999"; のvalue="9999"のところには入れたい値を入れるということでしょうか?
    初歩すぎる質問で申し訳ありません。。

  • id:windofjuly
    うぃんど 2010/07/15 17:34:06
    >ocument.test.dddd.value="9999"; のvalue="9999"のところには入れたい値を入れるということでしょうか?

    その答えは既に回答1にありますけど、コードを理解してもらってないですか?
    回答3では少し手を加えてそちらの環境にあわせてありますけど、理解せずに使うのは危険極まりないですよ

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません