- ベストアンサー
cgiのショッピングカートで画像を表示させたい
買い物かごの中身のページに画像を使いたいのですが、 どのようにしたらいいのでしょうか? print "<input type=submit value=\"order\"> <input type=reset value=\"reset\"></form><p><br>\n"; となっているところを print "<input type=image src=\"http://www.yahoo.co.jp/image/order.jpg\"> <input type=reset value=\"reset\"></form><p><br>\n"; のような感じで変更してみたのですが、 画像はちゃんと表示されるものの、Orderボタンを押して次の確認ページに移ると x 12 y 32 みたいな余計なデータが勝手にテーブル内に表示されてしまって困っています。 上記の変更をするぐらいで、なんでこんなことがおこるのかよく分かりません。 どなたか知っている方がいらっしゃたら、教えてください。 お願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#4のwolfwoodです。 少し説明不足でしたね。すみません。 どのようなエラーかわからないのですが、 もうひとつ変える部分があります。 それは<FORM name="フォーム名">の部分です。 このフォーム名はひとつの<FORM></FORM>で囲まれた部分につけられる名前です。 そして、リンクを<A href="javascript:document.フォーム名.submit()">と書きます。 このフォーム名を半角英数字で決めてください。 CGIの方を見ましたが、すでにフォーム名が設定されている部分もあるようですね。もしすでに設定されているのでしたら、<A href="document.フォーム名.submit()">のフォーム名を設定されているものに変えてください。 というか同じ処理がCGI内で行われていますね。 <input type=button value='*********' onClick='hogehoge()'> こういう部分がありますよね。これを <A href='javascript:hogehoge()'><IMG src='画像URL'></A> としてください。 hogehoge()の部分ですでにsubmit()の処理が記述されていました。 これで直らない場合はエラーの内容、部分を教えてください。
その他の回答 (4)
- wolfwood
- ベストアンサー率50% (199/398)
原因は解ったようなので、画像submitボタンの設置について書きます。 JavaScriptを使えば実現できます。 画像リンクの方法で遷移先をJavaScriptの処理に置き換えれば良いです。 例) <FORM name="test" method="***" action="***"> <A href="javascript:document.test.submit()"><IMG src="画像URL"></A> </FORM>
補足
せっかく教えて頂いたのに恐縮なんですが、 上記はあくまで例ですよね? でも僕には上記のどこの部分を変更するべきか悩んでおります。 2つの***と画像URLの部分を変更するだけであってますか? その3箇所を変更してやってみたのですが、 うまく次のページに移動してくれません。 そしてIEの画面の左下に「ページでエラーが発生しました。」とでてしまいます。 それとも他に修正するところがあるかな? お時間合ったら、アドバイスお願い致します。
- duckling
- ベストアンサー率47% (88/185)
<input type="image"> を submit として使用すると クリックした「x座標」と「y座標」が送信されます。 もともと x座標 と y座標 を送信するものなので 「余計なデータ」とは言えず、「送信しない」という設定には出来ないと思います。 CGI の大幅な改造が出来るほどの知識がないと ちょっと難しいのではないでしょうか。 JavaScript をよく見たら、何とかなるかも知れないですが。
お礼
あの数値は、クリックした「x座標」と「y座標」だったんのですね。 全然、分かりませんでした。 僕みたいな人が安心して使うには画像をしようしない方がいいということでしょうね。 アドバイスどうもありがとうございました。
- kaz_house
- ベストアンサー率46% (185/395)
簡易バスケットでしたか。 じゃあ専門家は辞めて一般にしときますね。 触ったことはなかったので。Ver.3なら得意なんですが。 さて、こちらのローカルでも同様の症状が出ました。 $_になぜか余計なデータが入っているようですね。 根本的な解決じゃないんですが、webform.cgiのデフォルトで 160行目に foreach (0..$count-1) { とあるのを foreach (0..$count-3) { とすると画面表示上は消えます。この操作で他に どのような悪さをするかわかりませんので このスクリプトにする場合は十分検証を行って ください。 根本的な解決にならず申し訳ありません。 #JavaScriptが動いているのでその辺とimage表示のタグが 干渉しているような気もするのですが確証は持てません。
お礼
さっそくのアドバイスどうもありがとうございます。 >根本的な解決にならず申し訳ありません。 そんなことありません。感謝感謝です。 アドバイス通り、検証を充分してみますね。
- kaz_house
- ベストアンサー率46% (185/395)
>画像はちゃんと表示されるものの、Orderボタンを押して次の確 認ページに移ると 次のページのソースがわからないのでお答えのしようがないですね。どこで配布されている買い物カゴでソースの何行目、という情報があればお答えできるかもしれませんよ。
お礼
今のバージョンをダウンロードしてみたのですが、 中身が相当変わっていまして、僕が使っているのはだいぶ前のやつみたいですね。 今のやつだと 285 286 287 行めがその部分だと思います。
補足
すいませんでした。 web裏技さんの簡易ショッピングバスケットです。
お礼
wolfwoodさん、遅くなりましたが、おかげさまでできました! どうもありがとうございます。 結局、<form method=$method action=\"$webform\"> を <form method=$method action=\"$webform\" name=\"Order\"> にしたらちゃんとうごいてくれました。 文法の意味もよく分かりませんでしたが、数撃ちゃあたるんですね。 色々どうもありがとうございました。
補足
wolfwoodさん、ご丁寧なアドバイス、本当にありがとうございます。 さっそくで申し訳ないんですが、 <input type=button value='*********' onClick='hogehoge()'> の部分が、 私の使っているCGI(前のバージョンなんです)にはそのような記述が見当たりませんでした。 そこで最新版をダウンロードしてみると、 <input type=button value=' → 最終確認へ進む ' onClick='Kakunin()'> という部分を見つけまして、私は「これだ!」と思ったのですがあってますか? あっているという前提で <SCRIPT language="JavaScript"> <!-- SubmitCheck=false; function Submit() { if(SubmitCheck==false){ SubmitCheck=true; document.Order.submit(); } else{ bottonAlert(); } } function bottonAlert() { Check = navigator.userAgent.indexOf(";"); if(Check != -1 && navigator.userAgent.substring(Check+2,Check+10)=="MSIE 3.0") { alert("ボタンが2度押されましたので、再度実行してください。"); } else { alert("送信中ですのでお待ちください。"); } } function Kakunin() { if(SubmitCheck==false){ Submit(); } else { bottonAlert(); } } //--> </SCRIPT> と <SCRIPT> <!-- document.write("<A href='javascript:Kakunin()'><IMG src='画像URL'></A></form><p><br>\\n"); // --> </SCRIPT> を追加してみたのですが、ボタン自体が表示されませんでした。 そこで、元々の <SCRIPT> <!-- document.write("<input type=button value=' → 最終確認へ進む ' onClick='Kakunin()'> <input type=reset value='× 書き直し'></form><p><br>\\n"); // --> </SCRIPT> に変更してみたのですが、これでもボタンが表示されませんでした。 なので、wolfwoodさんのアドバイス以前の私の問題のようです。 いま、ちょっと色々自分で試せてないので、もうすこし時間をかけて色々やってみようと思います。それとも上記の記述で明らかにおかしいところでもあるのかな? またお聞きしたいことが出てくるかもしれませんが、 お時間あったらまたアドバイスして頂けたら嬉しいです。 うまくいったらそれも報告されていただきますね。では。