DBから取得したデーター+配列データーの受取り
(過去に似たような質問をしたのですが、その続きの質問です。)
よろしくお願いします。
※セッションID(以下(3)のDBのカラム(ssid)で使用)を
発行した状態で以下を行いたいのですが、(3)がうまくいきません。
(1)商品リストのDBを以下のように作り
--------------------------------------------
(テーブル: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
--------------------------------------------
(2)上記をmysql_fetch_arrayで取り出し<table>を作成。
その際に、商品選択をする(checkbox)と(数量)を入力する<input>
を加え<form>でkaimonoKago.phpへ送信します。
(products.php)
<?php
(途中省略)
mysql_query("set names utf8");
$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($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["product_name"])."</td>\n";
print "<td>¥".number_format($row["price_intax"])."</td>\n";
print "<td><input type=\"text\" name=\"kazu[".$row["product_id"]."]\" size=\"3\"></td>\n";
print "<input type=\"hidden\" name=\"ssid\" value=\"".$_SESSION['ssid']."\" />\n";
print "</tr>\n";
}
?>
<input type="submit" name="order" value="注文" />
</form>
(3)<form>で送られてきた情報を、買い物カゴDB
-----------------------------------------------
(テーブル名:kaimonoKago)
(カラム:
ssid, product_cd, product_name, price_intax, kazu, shoukei)
-----------------------------------------------
にインサートしたいのですが、うまくいきません。正しい記述を教えて下さい。
mysql_fetch_arrayやらwhile文やら配列が2つあったりして、どのように組み立てたら
いいのか、基本的な考え方も教えていただければ幸いです。
(自分がつくった、うまくいかないコード)
↓
(kaimonoKago.php)
$check=(isset($_REQUEST["check"]) and is_array($_REQUEST["check"]))?$_REQUEST["check"]:array();
$kazu=(isset($_REQUEST["kazu"]) and is_array($_REQUEST["kazu"]))?$_REQUEST["kazu"]:array();
foreach($check as $val){
if($kazu[$val]>0){
$sql = "select * from products
where product_id ='" . mysql_real_escape_string($val) . "'";
$result = mysql_query($sql);
while($products = mysql_fetch_array($result)){
$product_cd = $products['product_cd'];
$product_name = $products['product_name'];
$price_intax = $products['price_intax'];
$kazu = $kazu[$val];
$shoukei = $price_intax * $kazu;
$sql = "insert into kaimonoKago (
ssid,
product_cd,
product_name,
price_intax,
kazu,
shoukei
) values (
'" . mysql_real_escape_string ( $_SESSION['ssid'] ) . "',
'" . mysql_real_escape_string ( $product_cd ) . "',
'" . mysql_real_escape_string ( $product_name ) . "',
'" . mysql_real_escape_string ( $price_intax ) . "',
'" . mysql_real_escape_string ( $kazu ) . "',
'" . mysql_real_escape_string ( $shoukei ) . "'
)";
mysql_query($sql);
}
}
}
}
よろしくお願いします。
お礼
遅くなりましたが。 SELECT文から全部書き直したら、思い通りの結果が出力されました。 yambejpさんには、いつもご意見を頂いてとても助かっています。
補足
ありがとうございます。 省略部分を記述するために、カラムを増やしています。 ID NO1 NO2 NO3 CODE 1 12 23 34 100 2 12 200 3 12 23 300 $sql="SELECT ID FROM `SHOPLIST`"; $db = mysql_query($sql); $db3 = ""; while($db2 = mysql_fetch_array($db)){ $a = in_array($db2["code"],$db3); if($a == false){ $db3[] = $db2["code"]; 出力処理; } } 制作者がもう現場に居ないのと、私が初心者ということもあって 何をやっているのかはっきりわからないのですが。。。 お気づきの点がありましたら、ご指導願います。