CGIについて質問です。商品が複数あって、そこから注文フォームにリンクがあるとき、商品ごとのリンクをクリックすると、注文フォームにいったときに金額、商品名、商品番号がわかるように設定することはできますか。参考となるページなど教えて頂ければ幸いです。よろしくおねがいします。

回答の条件
  • 1人1回まで
  • 登録:2009/05/22 11:19:05
  • 終了:2009/05/29 11:20:03

回答(2件)

id:koujirou6218 No.1

koujirou回答回数597ベストアンサー獲得回数472009/05/22 15:20:46

ポイント35pt

HTMLのFROMタグを利用して、GETかPOSTで注文フォームCGI送信すればいいのではないでしょうか。


GETの場合

<form action="test.php" method="get"></form>


POSTの場合

<form action="test.php" method="POST"></form>

HTMLのFORMタグに金額、商品名、商品番号を記載します。

ユーザに情報を表示させない場合はFROMタグのhiddenオプションを利用してください。

nameオプションを利用して、金額、商品名、商品番号、などCGIに送信するデータを記入します。

これでFROMは完成します。


CGI側ですが、FROMで利用したnameオプション指定した変数に向けてGET or POSTで取得します。

GETの場合

$money = $_GET['money']


POSTの場合

$money = $_POST['money']

http://www.kanzaki.com/docs/html/htminfo32.html

id:oz8

ありがとうございます。助かりました。

ちなみに、この変数には日本語をいれることはできるのでしょうか。

2009/05/23 06:36:58
id:niwa-mikiho No.2

niwa-mikiho回答回数508ベストアンサー獲得回数382009/05/26 14:47:03

ポイント35pt

変数に日本語など a~z、0~9、_ などの文字以外を使うことは上級者にならないと危険と考えた方がいいです。

なので、データベース側に1つ1つの商品に対して重複のないユニークな ID を割り当てる必要があります。

面倒な作業ではありますが、これをしておくことで商品 ID さえ別の CGI に渡してしまえば、そのしょうひんに対する全ての情報が知ることが出来ます。


koujirou6218 さんの回答は PHP なので、perl で書く場合は

<form action="test.cgi" method="get">

<input type="hidden" name="uid" value="postit00_large">

<input type="submit" name="submit" value="詳細">

</form>


CGI から取得するには

use strict;

use CGI;

my $in = new CGI;

my $itemID = $in->param('uid');

で出来ます。


こういった、商品 ID を渡す程度のときには、ユーザーの観点から POST よりも GET の方がおすすめです。


といいますも、ブラウザなどによっては 「期限が切れています。 再送信しますか?」 などのダイアログが出てしまいとても煩わしいです。

  • id:koujirou6218
    はい、可能です。
    しかし、不具合がでる可能性があるのでお勧めできません。
    HTMLはこんな感じでしょうか
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html lang="ja">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SJIS">
    <title>はてな-1242958744-</title>
    </head>
    <body>
    <form action="test.php" method="post">
    金額<input type="text" name="金額" size="20"><br>
    商品名<input type="text" name="商品名" size="20"><br>
    商品番号<input type="text" name="商品番号" size="20"><br>
    <input type="submit" name="送信" value="送信">
    </form>
    </body>
    </html>

    PHPはこんなかんじでしょうか
    <?php

    $money = $_POST['金額'];
    $goods_name = $_POST['商品名'];
    $goods_code = $_POST['商品番号'];

    echo $money."<br>";
    echo $goods_name."<br>";
    echo $goods_code."<br>";



    ?>

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

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

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

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