前提・実現したいこと
現在、注文入力画面→結果表示画面を作成しています。(or検索してます。←これは絶対条件)
htmlの「注文入力画面」に「pnnmber」と「qty(注文数)」を10件入力できるようにしてあります。この「pnnmber」と「qty」は対です。
例)pnnmber「123456」qty「3」と入力した場合 123456を3個注文といった解釈になります。
htmlで入力後「order(まだ仮)」ボタンを押すと結果表示画面に移動します。(phpファイル)
php内でSQLサーバーへ接続し「pnnmber」の情報(pnnmber、商品名、価格、在庫数)とhtmlで入力した「qty」をすでに作成している表示用テーブルに当てはめたいのですが、表示用テーブルにはSQLサーバーから取り出した情報は表示できているのですが、POSTしてきた「qty」がうまく表示されません。
どうか、表示したい場所に結果が表示できるようにアドバイスをお願い致します。
発生している問題・エラーメッセージ
現在の状態・・・
注文入力画面にpnnmber「123456」qty「3」とpnnmber「234567」qty「4」と入力して結果表示画面へ移動すると、
pnnmber、商品名、価格、在庫数は「123456」および「234567」に対応する情報が表示されます。
「qty」は「234567」の行に入力した「4」が「123456」と「234567」の結果として表示されてしまいます。
わかりやすいようにhtmlの入力時とphpの結果画面を添付しました。
該当のソースコード
-order_input.html-
<td><form method="post" action="order_input_view.php"> <p><input class="pnnmber" type="text" name="pnk[1]" placeholder="部品番号"><input class="suryo" type="text" name="qty[1]" placeholder="数量"></p> <p><input class="pnnmber" type="text" name="pnk[2]" placeholder="部品番号"><input class="suryo" type="text" name="qty[2]" placeholder="数量"></p> </div>
以降nameを[3]・・・として[10]まであります。
-order_input_view.php-
</table><?php foreach(["pnk","qty"] as $val){ $$val=filter_input(INPUT_POST,$val,FILTER_DEFAULT,["options"=>["default"=>[]],"flags"=>FILTER_REQUIRE_ARRAY]); $$val=array_filter(array_unique($$val),function($x){ return $x!==""; }); } if(count($pnk)>0){ foreach($pnk as $key=>$val){ } } try{ (SQLサーバーへ接続) $sql='SELECT partsnumber,description,unitprice,stockqty FROM parts_price WHERE 1 '; $data=[]; if(count($pnk)>0){ $sql.="and partsnumber in("; $sql.=implode(array_fill(0,count($pnk),"?"),","); $sql.=")"; $data=array_merge($data,$pnk); } /*デバック用 print $sql."<br>"; print_r($data); */ $stmt = $dbh->prepare($sql); $stmt->execute($data); $rows=$stmt->fetchAll(); } catch(PDOException $e) { die($e->getMessage()); } ?> <table width="80%" class="aaa"> <td scope="col"><div id="sent16_stl_cen">Parts Number</div></td> <td scope="col"><div id="sent16_stl_cen">Description</div></td> <td scope="col"><div id="sent16_stl_cen">Unit Price</div></td> <td scope="col"><div id="sent16_stl_cen">Stock</div></td> <td scope="col"><div id="sent16_stl_cen">suryo</div></td> <?php print "<tr>\n"; foreach($rows as $row){ foreach(["partsnumber","description","unitprice","stockqty"] as $val){ if($val=="unitprice") $row[$val]=number_format($row[$val]); $$val=htmlspecialchars($row[$val]); } if(count($pnk)>0){ foreach($pnk as $key=>$val){ (isset($qty[$key])?$qty[$key]:"なし");} print <<<eof <th class="th"><div id="sent14_stl">{$partsnumber}</div></th> <th class="th"><div id="sent14_stl">{$description}</div></th> <th class="th" align="right"><div id="sent14"_stl>{$unitprice}</div></th> <th class="th"><div id="sent14_stl">{$stockqty}</div></th> <th class="th"><div id="sent14_stl">{$qty[$key]}</div></th>**←ここにqtyを表示させたい** eof; print"<tr>\n"; } } ?>
試したこと
<th class="th"><div id="sent14_stl">{$qty[$key]}</div></th> {}内を色々と変更してみました。補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/06 09:04
2018/06/06 09:32
2018/06/07 07:41
2018/06/08 02:11
2018/06/08 08:39