php数ヶ月の初心者です。
以下がどうにもこうにもできません。
どうか、わかりやすくご解説いただけますよう
お願いします。
[DB]
(A)商品リスト
(テーブル名:products)
(カラム:product_id, product_cd, name, price)
[phpファイル]
(B)商品一覧リスト:shouhin.php
(C)買い物カゴ中身:kaimonoKago.php
(1)(A)にあるデーターをmysql_fetch_arrayで取り出す
(mysql_fetch_arrayが非推奨というのは知っての上で
話を進めさせて下さい)
(2)それをファイル(B)でテーブル<table>の形で表示。
(3)商品選択ボタン(checkbox)と、各商品に数量を
入力できる枠をつくる
(4)複数選択した商品を<form>で一発で(C)へ送る
(5)送った内容を(C)で展開する
複数選択の送信でなければなんとかできたのですが、
複数選択可で、数量も入力できるとなると、どうような
関数を使えばいいのか検討がつきません。
(B)と(C)それぞれどのようなコーディングにすれば良い
のでしょうか?
よろしくお願いします。
No.1
- 回答日時:
> (B)と(C)それぞれどのようなコーディングにすれば良い
> のでしょうか?
(A)の内容によって書き方が変わります。
前提条件を示さないと書きようがない。
質問が中途半端なようで申し訳ございません。
(A)の内容は以下のような感じです。
(テーブル:products)
product_id | product_cd | name | price
1 | 10 | 本01 | 1300
2 | 11 | 本02 | 1200
3 | 20 | サプリ01 | 4800
4 | 30 | ストレッチボード | 9800
5 | 30 | 健康シューズ | 6800
(↑表示が崩れてしまう点ご了承下さい)
(B)のファイルは以下のように書き始めましたが、
途中からどうしてよいかわからなく質問いたしました。
(B)ファイルの内容
・・・
・・途中一部省略します。
・・
$sql = "select * from products ";
$result = mysql_query($sql) ;
<form method="post" action="kaimonoKago.php">
<table>
<tr>
<th></th>
<th>商品コード</th>
<th>商品名</th>
<th>価格</th>
<th>数量</th>
</tr>
<?php
while(products = mysql_fetch_array($result)){
$product_id = htmlentities($products['product_id'], ENT_QUOTES, "UTF-8");
$product_cd = htmlentities($products['product_cd'], ENT_QUOTES, "UTF-8");
$name = htmlentities($products['name'], ENT_QUOTES, "UTF-8");
$price = htmlentities($products['price'], ENT_QUOTES, "UTF-8");
<tr>
<th><input type="checkbox" name="product_id" value="<?= $product_id ?>"></th>
<td><?= $product_cd ?></td>
<td><?= $name ?></td>
<td>¥<?= number_format($price) ?></td>
<td>・・・?????このあたりから記述がよくわからなくなりました!!!
以下省略
質問の仕方もままならず、申し訳ございません。
またそんな質問にお付き合いいただき、ありがとうございます。
No.2
- 回答日時:
不確定要素が多すぎて、何を前提に書けばいいのか分かんないけど、1個ならできて、2個以上できない理由が、逆に謎。
1個ならできたのであれば、そのアプローチを書けば回答側は、わかりやすいかもね。セッションとクッキーとか何も使っていない状況?質問がうまくできず申し訳ございません。
(1個ならできた)というのは、商品を1つにつき、[注文]ボタンを1つを
get送信でつくる作り込みはできたという事でした。(今回は<form>で商品を
複数選択できるつくり込みにチャレンジ中という事です。)
セッションは使っている状況です。
ありがとうございました。
No.3
- 回答日時:
たとえばこんな感じでチェックボックスと数量の組み合わせで判断する
<form>
<div><input type="checkbox" name="check[]" value="1">goods 1<input type="text" name="goods[1]" value="5"></div>
<div><input type="checkbox" name="check[]" value="2">goods 2<input type="text" name="goods[2]" value="10"></div>
<div><input type="checkbox" name="check[]" value="3">goods 3<input type="text" name="goods[3]" value="30"></div>
<div><input type="submit" value="go"></div>
</form>
<?PHP
$check=(isset($_REQUEST["check"]) and is_array($_REQUEST["check"]))?$_REQUEST["check"]:array();
$goods=(isset($_REQUEST["goods"]) and is_array($_REQUEST["goods"]))?$_REQUEST["goods"]:array();
$flag=true;
foreach($check as $val){
if($goods[$val]>0){
print "id=".$val."の商品が".$goods[$val]."個<br>\n";
$flag=false;
}
}
if($flag) print "なにも選択されていない";
?>
あとはjavascriptなどでテキストボックスのdisabledを制御すると
ユーザビリティがあがります
ご丁寧な回答ありがとうございます。
ヒントをもとにゆっくり紐解いてみます。
>$check=(isset($_REQUEST["check"]) and >is_array($_REQUEST["check"]))?$_REQUEST["check"]:array();
↑
上記はどう解釈すればよいかわかりませんでした。
(何となく想像はつくのですが、間違えるといけないので
教えていただければ幸いです。)
ありがとうございました。
No.4
- 回答日時:
まずisset($_REQUEST["check"]) はGETやPOSTでcheckというパラメータが
送られてきているかチェックしています。
is_array($_REQUEST["check"])は、そのcheckというパラメータが配列なのか
どうかチェックしています。
それを三項演算子(a=x?y:z)で条件にあえば$check変数に$_REQUEST["check"]を返し、
あわなければ空の配列を返しています。
あえてこれをif文をつかって書くとするとこんな感じでしょうか
$check=array();
if(isset($_REQUEST["check"]){
if(is_array($_REQUEST["check"])){
$check=$_REQUEST["check"];
}
}
本当にご親切にご回答いただいて感謝に耐えません。
最終的に自分が希望している形としては、
NO.1の回答へのお礼にしたように、私が作成したコードに
教えていただいたものをうまく当てはめる事です。
(複雑になりすぎて、自分でもどうしてよいかわかりません。)
よろしければそこも教えていただければ本当に助かります。
(そうなると、やはり簡単にはかないものでしょうか?)
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
#1を反映するならこんな感じ
<?php
$sql = "select product_id,product_cd,name,price from products ";
$result = mysql_query($sql) ;
while($row = mysql_fetch_array($result)){
print "<tr>\n";
print "<th><input type=\"checkbox\" name=\"check[]\" value=\"".$row["product_id"]."\"></th>\n";
print "<td>".htmlspecialchars($row["product_cd"])."</td>\n";
print "<td>".htmlspecialchars($row["name"])."</td>\n";
print "<td>¥".number_format($row["price"])."</td>\n";
print "<td><input type=\"text\" name=\"goods[".$row["product_id"]."]\"></td>\n";
print "</tr>\n";
}
yambejp様
なるほど~。(すばらしい~!)
複雑すぎてできないと思っていましたが、
こういうやり方でできるんですね。
感動しました。
もっと効率のいいコーディングもあるのでしょうが、
地道に1つづつ知識をつけていくしかないのでしょうね。
早くyambejpさんのように自由に自分の頭の中の事を
形にできるようにがんばろうと思いました。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- メルカリ 「メルカリ」相手からのコンビニ払いがされたか不明の状態でゆうパケットポストで発送してしまいました。 1 2023/01/17 21:13
- その他(データベース) accessについて 2 2022/05/31 16:58
- Amazon Amazonコンビニ受け取り AmazonでSwitchのソフトの予約商品をコンビニ受け取りにして注 1 2022/03/31 15:45
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Windows 10 windowsのファイル複数選択について エクスプローラーなどでファイルを複数選択する際、 最初のフ 4 2022/05/22 16:39
- その他(ネットショッピング・通販・ECサイト) 詐欺サイトでの返金について 6 2023/02/08 12:18
- JavaScript テーブルの中のセレクトボックスの値が0のとき、非表示にしたい 3 2022/05/29 10:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームのテキストボックスに...
-
チェックボックスによる検索
-
($_POST['email']??"", ・・・...
-
php CSVファイル出力後そ...
-
フォームボタンを押すたびに数...
-
チェックボックスの必須項目指定
-
チェックボックスによる検索(...
-
PHPで郵便番号を検索し、住所を...
-
HTMLで前の画面に戻る時、入力...
-
入力フォーム→確認画面→送信画...
-
submit後のラジオボタンのチェ...
-
HTMLフォームで複数選択のチェ...
-
<input type="hidden" >で配列...
-
php ラジオボタンのデータの渡...
-
syntax error, unexpected '}' ...
-
phpでショッピングカート機能を...
-
Flaskでサーバー立ち上げに関して
-
PHPの送信フォームについての質...
-
PHPの簡単な掲示板での日付順表示
-
アップロードファイル名の文字化け
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<input type="hidden" >で配列...
-
HTMLで前の画面に戻る時、入力...
-
PHPでユーザー情報を入力して簡...
-
PHP ボタンが押されたら処理を...
-
PHPとHTML+Xamppの掲示板で画像...
-
syntax error, unexpected '}' ...
-
検索時の選択内容を保持する方法
-
PHPでCookieを使った訪問回数に...
-
チェックボックスによる検索
-
PHPで画像の渡しが上手く行きま...
-
フォームでのリセットを使う方法
-
チェックボックスによる検索(...
-
フォームへの前回入力値をクリ...
-
フォームボタンを押すたびに数...
-
php mysql でチェックボックス...
-
PHPの関数実行
-
PHPで、ボタンを押すと同じペー...
-
phpで分からないエラーが出てし...
-
ラジオボタンをsessionで使いたい
-
入力フォーム→確認画面→送信画...
おすすめ情報