プロが教えるわが家の防犯対策術!

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)それぞれどのようなコーディングにすれば良い
のでしょうか?

よろしくお願いします。

A 回答 (5件)

> (B)と(C)それぞれどのようなコーディングにすれば良い


> のでしょうか?

(A)の内容によって書き方が変わります。
前提条件を示さないと書きようがない。
    • good
    • 0
この回答へのお礼

質問が中途半端なようで申し訳ございません。

(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>&yen;<?= number_format($price) ?></td>
<td>・・・?????このあたりから記述がよくわからなくなりました!!!

以下省略

質問の仕方もままならず、申し訳ございません。
またそんな質問にお付き合いいただき、ありがとうございます。

お礼日時:2013/03/29 10:45

不確定要素が多すぎて、何を前提に書けばいいのか分かんないけど、1個ならできて、2個以上できない理由が、逆に謎。

1個ならできたのであれば、そのアプローチを書けば回答側は、わかりやすいかもね。セッションとクッキーとか何も使っていない状況?
    • good
    • 0
この回答へのお礼

質問がうまくできず申し訳ございません。

(1個ならできた)というのは、商品を1つにつき、[注文]ボタンを1つを
get送信でつくる作り込みはできたという事でした。(今回は<form>で商品を
複数選択できるつくり込みにチャレンジ中という事です。)

セッションは使っている状況です。

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

お礼日時:2013/03/29 10:51

たとえばこんな感じでチェックボックスと数量の組み合わせで判断する



<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を制御すると
ユーザビリティがあがります
    • good
    • 0
この回答へのお礼

ご丁寧な回答ありがとうございます。
ヒントをもとにゆっくり紐解いてみます。

>$check=(isset($_REQUEST["check"]) and >is_array($_REQUEST["check"]))?$_REQUEST["check"]:array();
  ↑
上記はどう解釈すればよいかわかりませんでした。
(何となく想像はつくのですが、間違えるといけないので
教えていただければ幸いです。)

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

お礼日時:2013/03/29 11:34

まず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"];
}
}
    • good
    • 0
この回答へのお礼

本当にご親切にご回答いただいて感謝に耐えません。

最終的に自分が希望している形としては、
NO.1の回答へのお礼にしたように、私が作成したコードに
教えていただいたものをうまく当てはめる事です。
(複雑になりすぎて、自分でもどうしてよいかわかりません。)

よろしければそこも教えていただければ本当に助かります。
(そうなると、やはり簡単にはかないものでしょうか?)

よろしくお願いします。

お礼日時:2013/03/29 13:04

#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>&yen;".number_format($row["price"])."</td>\n";
print "<td><input type=\"text\" name=\"goods[".$row["product_id"]."]\"></td>\n";
print "</tr>\n";
}
    • good
    • 0
この回答へのお礼

yambejp様

なるほど~。(すばらしい~!)
複雑すぎてできないと思っていましたが、
こういうやり方でできるんですね。
感動しました。

もっと効率のいいコーディングもあるのでしょうが、
地道に1つづつ知識をつけていくしかないのでしょうね。
早くyambejpさんのように自由に自分の頭の中の事を
形にできるようにがんばろうと思いました。

本当にありがとうございました。

お礼日時:2013/03/29 16:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!