質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

1600閲覧

PHPとJavascriptでカートに入れたものを別ページで表示させたい。

hatimaki

総合スコア27

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/08/07 11:59

編集2017/08/08 14:07

一つ目のページに「商品」の下にに別のページで登録したものを「カート」の下に入れて(javascriptで「商品」から「カート」に落ちるように見せている)、「カート(div id="cart")」に入っているものを2ページ目のページで表で表示する(画像は文字で商品名として)ソースをPHPとjavascriptを組み合わせて下記のような

1ページ目(syohin3.php)

<html lang="ja"> <meta charset=utf-8> <head> <link rel="stylesheet" href="jquery-ui.css"> <script src="jquery.js"></script> <script src="jquery-ui.js"></script> <script type="text/javascript"> $(function(){ $("button").click(function(){ var b=$(this).parent().parent().clone(); var c=$("#cart").append(b); var d=b.children().children("button").text("リセット"); $(this).parent().parent().effect( 'transfer', { to: b ,className:"ui-effects-transfer" }, function(){ b.effect("bounce"); }); // d.bind("click",function(){ $(d).parent().parent().effect("puff"); }); }); }); </script> </head> <body> <h3>商品</h3> <form type="post" action="syohin1.html"> <input type="submit" value="登録ページに戻る"> </form> <br> <div id="items"> <?php $f=file("syohin.txt"); foreach($f as $key=>$value){ $a=explode(",",$value); print("<div class='comment'>"); print("<form type='post' action='syohin3.php'>"); print("<img src='".$a[3]."' width=120 height=90><br>\n"); print($a[1]."円<br>\n"); print("<button type='button'>カートに入れる</button><br>\n"); print("</form>"); print("</div>"); } ?> </div> <h2>カート</h2> <div id="cart" style="overflow:hidden;"> <form type="post" action="syohin4.php"> <input type="hidden" value="dsfsdfsdfa" name="kounyu" id="test"> <input type="submit" value="購入する" id="submit"> </form> <script> $(function(){ $("#submit").click(function(){ $("#test").val(); }); }); </script> </div> </body> </html> <style> body{ background-color:#00bfff; } div.comment{ background-color:#7fff00; float:left; margin:10px; text-align:center; border:1px solid #ccc; } div#cart{ float:left; margin:10px; text-align:center; border:1px solid #ccc; } .ui-effects-transfer { border: 1px dotted black; } #items,#cart{ border:1px solid #ccc; overflow:hidden; } </style>

2ページ目(syohin4.php)

<!DOCTYPE html> <html lang="ja"> <meta charset=utf-8> <body> <table border> <tr><th>商品名</th><th>単価</th></tr> <?php $kounyu=$_POST["kounyu"]; foreach($kounyu as $key=>$value){ $b=explode(",",$value); print("<tr><td>".$b[0]."</td><td>".$b[1]."</td></tr>\n"); } print("</table>"); ?> </table> <form method="post" action="syhin1.html"> <input type="submit" value="買い物を続ける"> </form> </body> </html>

ソースを書いたのですが、1ページ目の購入ボタンをクリックして2ページ目に行くのですが、表自体は表示され項目の部分も表示されるのですが、カート(div id="cart")に入っている物の名前と単価が表示されずに、

Warning: Invalid argument supplied for foreach() in /home/websaka/websaka.php.xdomain.jp/public_html/syohin4.php on line 10

上記のようなエラー表示が表示されます

さらに数量や金額、総合計も表示させたいと考えております。

初心者なのでよくわからず困っています。

ここの部分を変更したらいいなどのアドバイスをお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/08/07 15:37

「うまく表示がされない」とは「何をしたときに」「どうなると思って」「どうなったのか」を、出ているエラーなどと併せて、具体的に記述されたほうが回答を得られやすいと思います。
hatimaki

2017/08/07 21:44 編集

ご指摘ありがとうございます。質問文を修正しました。いかがでしょうか?
num79kill

2017/08/07 23:11

文字列はforeachできませんよ。
hatimaki

2017/08/07 23:17

では、どのように修正すればよろしいですか?
guest

回答3

0

1ページ目の<input type="hidden" value="dsfsdfsdfa" name="kounyu" id="test">のname部分を配列にしてvalueに商品を識別できる文字列を並べれば取れそうな気がします。

<input type="hidden" value="金額,商品名,tec…" name="kounyu[]" id="test">

投稿2017/08/08 01:16

mayoi_maimai

総合スコア1583

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatimaki

2017/08/10 08:26

ご指摘ありがとうございます。div id="cart"に入っているものを文字として認識、または変換する方法はございますでしょうか?
mayoi_maimai

2017/08/10 13:07

$("button").click(function(){… 上記のタイミングで以下のhiddenを仕込めばうまく受け取れると思いますよ。 <input type="hidden" value="金額,商品名,tec…" name="kounyu[]">
guest

0

自己解決

以下のよう内容でソースを修正してみました。

1ページめは

var d=b.children().children("button").text("リセット");

$(this).parent().parent().effect( 'transfer', { to: b ,className:"ui-effects-transfer" },

のあいだに

msg=b.find('.n').text(); msg2=b.find('.n2').text(); data=data+msg+","+msg2+"\n"; $("#test").val(data); //hiddenに格納

を追加し、

print("<img src='".$a[3]."' width=120 height=90><br>\n"); ``` と ``` print($a[1]."円<br>\n"); ``` 間に ``` print("商品名:<span class='n'>".$a[0]."</span><br>\n"); ``` を追加し、 ``` print($a[1]."円<br>\n"); ``` を ``` print("<span class='n2'>".$a[1]."</span>円<br>\n"); ``` に修正。 2ページめは ``` $kounyu=$_POST["kounyu"]; ``` と ``` foreach($kounyu as $key=>$value){ ``` の間に ``` $b=explode("\n",$kounyu); ``` を追加。 このように修正をしましたら問題が解決しました。 ありがとうございました。

投稿2017/08/26 09:07

hatimaki

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PHP

1var_dump( $_POST["kounyu"] ); // これで何が届いているかを確認してみましょう。 2$kounyu=$_POST["kounyu"];

投稿2017/08/08 14:18

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatimaki

2017/08/09 10:21

ご指摘ありがとうございます。ご指摘どうりにやってみたら、原因はわかりませんが、値が入っていないことがわかりました。
hatimaki

2017/08/10 08:24

値が入っていかったのはmethodと入力しなければいけないところをtypeと入力しまったのが原因と判明しました。
hatimaki

2017/08/10 08:28

後はdiv id="#cart"に入っているものをどうhiddenの中に入れるかが課題となります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問