どなたかアドバイスをください・・・。
SQLへ接続しOR条件で一致したものの情報だけを表示できるプログラム(アドバイスいただいたもの)を使用して別のページを作成中なのですが、うまくデータを持ってこれません。
現在検索ボックスが10個設置してあります。"pnk[]"の部分がor条件でSQLデータと一致した場合に、次のorder_view.phpで情報が表示されるようになります。このhtmlの段階で"pnk[]"に対する数量(必要数量)を入力して次ページで入力した数量とデータに登録されている数量を同時に表示をさせたいのです。
先週から色々と変更追加を繰り返してみましたが解決できず、今日の段階で投稿させていただくことにしました。
現在はname属性「suryo1」だけをPOSTしてみて受け取ることができるのは確認しています。
order.html
<P><input class="pnnmber" type="text" name="pnk[]"><input class="suryo" type="text" name="suryo1" ></p>
<p><input class="pnnmber" type="text" name="pnk[]" ><input class="suryo" type="text" name="suryo2" ></p>
<p><input class="pnnmber" type="text" name="pnk[]" ><input class="suryo" type="text" name="suryo" ></p>
order_vew.php
<?php
$pnk=filter_input(INPUT_POST,"pnk",FILTER_DEFAULT,["options"=>["default"=>[]],"flags"=>FILTER_REQUIRE_ARRAY]);
$pnk=array_filter(array_unique($pnk),function($x){
return $x!=="";
});
$suryo = $_POST['suryo1'];
try{
SQLへ接続(省略)
$sql='SELECT * FROM DB WHERE 1 ';
$data=[];
if(count($pnk)>0){
$sql.="and partsnumber in(";
$sql.=implode(array_fill(0,count($pnk),"?"),",");
$sql.=")";
$data=array_merge($data,$pnk);
}
(デバック部分省略)
$stmt = $dbh->prepare($sql);
$stmt->execute($data);
$rows=$stmt->fetchAll();
}
catch(PDOException $e)
{
die($e->getMessage());
}
?>
(html部分省略)
<?php
if(count($rows)>0){
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]);
}
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">{$suryo}</div></th>
eof;
print"<tr>\n";
}
}
?>
どうかわかりやすくアドバイスよろしくお願い致します。
No.1
- 回答日時:
pnkとsuryoを行ごとにグルーピングしたいということでしょうか?
<form method="post">
<P><input class="pnnmber" type="text" name="pnk[1]"><input class="suryo" type="text" name="suryo[1]" ></p>
<p><input class="pnnmber" type="text" name="pnk[2]"><input class="suryo" type="text" name="suryo[2]" ></p>
<p><input class="pnnmber" type="text" name="pnk[3]"><input class="suryo" type="text" name="suryo[3]" ></p>
<input type="submit" value="go">
</form>
<?php
foreach(["pnk","suryo"] 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!=="";
});
}
print_r($pnk);
print_r($suryo);
?>
No.2
- 回答日時:
うまく伝わらないかもしれませんがこう
<form method="post">
<P><input class="pnnmber" type="text" name="pnk[1]" value="aaa"><input class="suryo" type="text" name="suryo[1]"></p>
<p><input class="pnnmber" type="text" name="pnk[2]" value="bbb"><input class="suryo" type="text" name="suryo[2]" value="123"></p>
<p><input class="pnnmber" type="text" name="pnk[3]"><input class="suryo" type="text" name="suryo[3]" value="456"></p>
<input type="submit" value="go">
</form>
<?php
foreach(["pnk","suryo"] 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!=="";
});
}
foreach($pnk as $key=>$val){
print "pnk:{$key}={$val},suryo=".(isset($suryo[$key])?$suryo[$key]:"なし")."<br>\n";
}
?>
pnkのキーにあてはまるsuryoを表示することができます
No.3ベストアンサー
- 回答日時:
組み込み方次第ですね。
やってることは#2と同じです<form method="post">
<P><input class="pnnmber" type="text" name="pnk[1]" value="aaa"><input class="suryo" type="text" name="suryo[1]"></p>
<p><input class="pnnmber" type="text" name="pnk[2]" value="bbb"><input class="suryo" type="text" name="suryo[2]" value="123"></p>
<p><input class="pnnmber" type="text" name="pnk[3]"><input class="suryo" type="text" name="suryo[3]" value="456"></p>
<input type="submit" value="go">
</form>
<?php
foreach(["pnk","suryo"] 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){
print "<table border>\n";
print "<tr><th>pnk</th><th>suryo</th></tr>\n";
foreach($pnk as $key=>$val){
print "<tr>\n";
print "<td>{$val}</td><td>".(isset($suryo[$key])?$suryo[$key]:"なし")."</td>\n";
print "</tr>\n";
}
print "</table>\n";
}
?>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
<input type="hidden" >で配列...
-
フォームへの前回入力値をクリ...
-
Javascript→PHPに...
-
phpでチェックボックスでの値の...
-
syntax error, unexpected '}' ...
-
PHP ボタンが押されたら処理を...
-
phpでの複数選択チェックボック...
-
PHPとHTML+Xamppの掲示板で画像...
-
PHPで画像の渡しが上手く行きま...
-
チェックボックスのvalueを連結...
-
PHPの初心者です。現在チェック...
-
PHPでクリックするたびに変数を...
-
PHPの関数実行
-
入力フォーム→確認画面→送信画...
-
チェックボックスのvalueに変数...
-
テキストボックスに初期値を入れる
-
PHPのページ間による配列の受け...
-
smartyでチェックボックスをチ...
-
DBの値をチェックボックスに反...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<input type="hidden" >で配列...
-
HTMLで前の画面に戻る時、入力...
-
PHPでユーザー情報を入力して簡...
-
PHP ボタンが押されたら処理を...
-
PHPとHTML+Xamppの掲示板で画像...
-
syntax error, unexpected '}' ...
-
検索時の選択内容を保持する方法
-
PHPでCookieを使った訪問回数に...
-
チェックボックスによる検索
-
フォームでのリセットを使う方法
-
PHPで画像の渡しが上手く行きま...
-
チェックボックスによる検索(...
-
フォームへの前回入力値をクリ...
-
フォームボタンを押すたびに数...
-
php mysql でチェックボックス...
-
PHPの関数実行
-
phpで分からないエラーが出てし...
-
PHPで、ボタンを押すと同じペー...
-
ラジオボタンをsessionで使いたい
-
入力フォーム→確認画面→送信画...
おすすめ情報
>pnkとsuryoを行ごとにグルーピングしたいということでしょうか?
グルーピングという表現がハマるのかはわかりませんが、pnk[]とpnk[]に対する入力数量suryoが1setになればいいうことなので、多分大丈夫だと思います。
今回教えていただいたphpの部分は、(html部分省略)より下のif(count・・・(略)からprint<<<echoの間のforeach文を変更すればいいということでしょうか。
お手数ですがご教示お願いします。
ご丁寧にありがとうございました。
[1]は"aaa”と"なし"が表示。[2]は"bbb"と"123"が表示。[3]はsuryo側に"456"の入力はあるけどpnnmber側に値が入っていないので表示自体されない・・・ということですよね。
教えていただいた通りそれぞれ表示することができました。ありがとうございました。ついでに1つ教えていただきたいことが・・・。今は同じファイル内の適当な場所にコードをかいてうまく表示できているのですが、これを正規の場所(テーブルの中)で表示をさせたいのです。下記のコードだと「array」がでてしまいます。
<th class="th"><div id="sent14_stl">{$suryo}</div></th>←この部分
SQLからのデータは{xxx}で問題なく表示されています。度々で申し訳ありませんがご教示お願い致します。
お世話になっています。度々ですみません&説明不足ですみません。「テーブルに・・・」と記入したのは、投稿文は省略していますが表示結果テーブルがすでにありまして、そこに表示されるようにしたかったのです。
<table width="80%">
<td scope="col"><div id="sent16_stl_cen">Parts Number</div></td>
(以降省略)
<td scope="col"><div id="sent16_stl_cen">suryo</div></td>
(PHP→forech文)
行数が足りないので次に続きます。
print <<<eof
<th class="th"><div id="sent14_stl">{$partsnumber}</div></th>
(以降所略)
<th class="th"><div id="sent14_stl">{$suryo]}</div></th>
eof;
print"<tr>\n";
}
}
?>
上記の”<th class="th"><div id="sent14_stl">{$suryo]}</div></th>”の部分にhtmlで入力した$suryo[]の値が表示されるようにしたいのです。
「$partsnumber」はOR検索でヒットしたSQLデータが表示されています。同じように{$suryo[$key]}をいれると1行だけならば入力数値が反映されるのですが2行以上を同時検索すると結果は空白になります。
大変お手数ですが再度アドバイスお願いします。