質問編集履歴

5 タイトル誤記修正

juriparu0411

juriparu0411 score 14

2016/11/15 14:14  投稿

ソs-ウ複数のセレクトボックスで1つ目を選択した後、2つ目のセレクトボックスを絞り込む
複数のセレクトボックスで1つ目を選択した後、2つ目のセレクトボックスを絞り込む
PHP初心者です。詳しい方がいらっしゃいましたらよろしくお願いいたします。
データベースをSELECT文でSUM集計して表示するプログラムを作成中ですが、セレクトボックスを4つ作成する必要があります。
一つの選択で、「検索」ボタンを押して、SUBMITするのはできたのですが、2つ以上のセレクトボックスがあった場合、1つ目の選択した条件で2つ目のセレクトボックスに表示する要素をSELECT文のWHEREで絞り込みDISTINCTしたいのですが、SUBMITをおこなわずに引き渡す方法がわかりません。
例)
セレクトボックス1
りんご
みかん
いちご
れもん
上で「みかん」をクリックしたら、「みかん」の仕入実績がある取引先のみをセレクトボックス2に表示する。
セレクトボックス2
岩井商店
鈴木商店
田中商店
和田商店
不慣れで申し訳ありません。
以下、ソースを記載いたします。
度々で申し訳ありません。ソースを修正してみましたが、画面には
大分類しか表示されませんでした。
```HTML
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
//データベースのインスタンス名を指定
$serverName = ".\\SQLEXPRESS";
//接続情報を指定
$connectionInfo = array("UID" => "test",
"PWD" => "test",
"Database" => "hattyuujisseki");
//コネクションを確立
$conn = sqlsrv_connect($serverName, $connectionInfo)
or die(print_r(sqlsrv_errors(), true));
//dpt引き渡し
//クエリー文を指定
$tsql = "SELECT * from 大分類マスタ";
//クエリーを実行
$result = sqlsrv_query($conn, $tsql);
?>
<html>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=x-sjis">
<head>
<title>発注実績</title>
</head>
<body>
<form action="" method="POST">
<select name="dpt" >
<?php while ($row = sqlsrv_fetch_array($result)) : ?>
<?php if ($row['大分類コード'] == filter_input(INPUT_POST, 'dpt')): ?>
<option value="<?= $row['大分類コード'] ?>" selected="selected">
<?= $row['大分類コード']; ?> <?= $row['大分類名_漢字'] ?>
</option>
<?php else : ?>
<option value="<?= $row['大分類コード']; ?>">
<?= $row['大分類コード'] ?> <?= $row['大分類名_漢字'] ?>
</option>
<?php endif; ?>
<?php endwhile; ?>
</select>
<input type="submit" name="s" value="検 索" />
</form>
<b>発注実績 &emsp;</b>
<table>
<thead>
<tr>
<th>中分類</th>
<th>取引先</th>
<th>週</th>
<th>発注数</th>
<th>発注原価</th>
<th>発注売価</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<script type="text/javascript" src="//code.jquery.com/jquery-2.2.4.min.js" charset="Shift-JIS"></script>
<script type="text/javascript" charset="Shift-JIS">
// ここにJavaScript のコードを書く
$(function () {
var parent = $(".ajax-dpt");
var child = $(".ajax-lin");
parent.on("change", function () {
var selecteddptCode = $(this).val();
var param = {
dpt: selecteddptCode
};
child.html('<option value="-1">-- 中分類選択 --</option>');
var defaultlinCode = ("" != child.attr("default")) ? child.attr("default") : -1;
if (-1 != selecteddptCode) {
$.getJSON("/ajax/getlin.php", param, function (json) {
$.each(json, function (i) {
child.append(
'<option value="' + json[i].code + '">' +
json[i].name + '</option>');
});
child.val(defaultlinCode);
});
}
}).change();
});
// 発注実績 の検索は、ajaxで読み込むファイルで検索し、このファイル上では検索しない
</script>
</body>
</html>
<?php
//クエリー結果の開放
sqlsrv_free_stmt($result);
//コネクションのクローズ
sqlsrv_close($conn);
?>
```php
```
<?php
$strdptfCode = filter_input(INPUT_GET, 'dpt');
var_dump($strdptfCode);
$tsql = "SELECT * from 中分類マスタ where 大分類 = $strdptfCode";
//クエリーを実行
$result = sqlsrv_query($conn, $tsql);
?>
<?php
if (isset($_POST['dpt'])){
//クエリー文を指定
$tsql = "SELECT 大分類,中分類,週,
SUM(発数) AS 発注数,
SUM(発原額) AS 発注原価,
SUM(発売額税抜) AS 発注売価
from dbo.VM_納品実績 where 大分類 = $dpt
group by
大分類,中分類,週
order by 大分類,中分類,週";
//クエリーを実行
$result = sqlsrv_query($conn,$tsql);
}?>
<tbody>
<?php
//実行結果を描画
while($row = sqlsrv_fetch_array($result)) {
printf("<tr><th>".$row['中分類']."</th>");
printf("<td >".$row['週']."</td>");
printf("<td >".number_format($row['発注数'])."</td>");
printf("<td >".number_format($row['発注原価'])."</td>");
printf("<td >".number_format($row['発注売価'])."</td></tr>");
}
?>
</table>
```
  • PHP

    38103 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

4 ソースのファイル名を追記いたしました。

juriparu0411

juriparu0411 score 14

2016/11/15 14:08  投稿

複数のセレクトボックスで1つ目を選択した後、2つ目のセレクトボックスを絞り込む
ソs-ウ複数のセレクトボックスで1つ目を選択した後、2つ目のセレクトボックスを絞り込む
PHP初心者です。詳しい方がいらっしゃいましたらよろしくお願いいたします。
データベースをSELECT文でSUM集計して表示するプログラムを作成中ですが、セレクトボックスを4つ作成する必要があります。
一つの選択で、「検索」ボタンを押して、SUBMITするのはできたのですが、2つ以上のセレクトボックスがあった場合、1つ目の選択した条件で2つ目のセレクトボックスに表示する要素をSELECT文のWHEREで絞り込みDISTINCTしたいのですが、SUBMITをおこなわずに引き渡す方法がわかりません。
例)
セレクトボックス1
りんご
みかん
いちご
れもん
上で「みかん」をクリックしたら、「みかん」の仕入実績がある取引先のみをセレクトボックス2に表示する。
セレクトボックス2
岩井商店
鈴木商店
田中商店
和田商店
不慣れで申し訳ありません。
以下、ソースを記載いたします。
度々で申し訳ありません。ソースを修正してみましたが、画面には
大分類しか表示されませんでした。
```php
```HTML
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
//データベースのインスタンス名を指定
$serverName = ".\\SQLEXPRESS";
//接続情報を指定
$connectionInfo = array("UID" => "test",
   "PWD" => "test",
   "Database" => "hattyuujisseki");
//コネクションを確立
$conn = sqlsrv_connect($serverName, $connectionInfo)
   or die(print_r(sqlsrv_errors(), true));
//dpt引き渡し
//クエリー文を指定
$tsql = "SELECT * from 大分類マスタ";
//クエリーを実行
$result = sqlsrv_query($conn, $tsql);
?>
<html>
   <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=x-sjis">
   <head>
       <title>発注実績</title>
   </head>
   <body>
       <form action="" method="POST">
           <select name="dpt" >
               <?php while ($row = sqlsrv_fetch_array($result)) : ?>
                   <?php if ($row['大分類コード'] == filter_input(INPUT_POST, 'dpt')): ?>
                       <option value="<?= $row['大分類コード'] ?>" selected="selected">
                           <?= $row['大分類コード']; ?> <?= $row['大分類名_漢字'] ?>
                       </option>
                   <?php else : ?>
                       <option value="<?= $row['大分類コード']; ?>">
                           <?= $row['大分類コード'] ?> <?= $row['大分類名_漢字'] ?>
                       </option>
                   <?php endif; ?>
               <?php endwhile; ?>
           </select>
           <input type="submit" name="s" value="検 索" />
       </form>
       <b>発注実績 &emsp;</b>
       <table>
           <thead>
               <tr>
                   <th>中分類</th>
                   <th>取引先</th>
                   <th>週</th>
                   <th>発注数</th>
                   <th>発注原価</th>
                   <th>発注売価</th>
               </tr>
           </thead>
           <tbody>
           </tbody>
       </table>
       <script type="text/javascript" src="//code.jquery.com/jquery-2.2.4.min.js" charset="Shift-JIS"></script>
       <script type="text/javascript" charset="Shift-JIS">
           // ここにJavaScript のコードを書く
           $(function () {
           var parent = $(".ajax-dpt");
           var child = $(".ajax-lin");
           parent.on("change", function () {
           var selecteddptCode = $(this).val();
           var param = {
           dpt: selecteddptCode
           };
           child.html('<option value="-1">-- 中分類選択 --</option>');
           var defaultlinCode = ("" != child.attr("default")) ? child.attr("default") : -1;
           if (-1 != selecteddptCode) {
           $.getJSON("/ajax/getlin.php", param, function (json) {
               $.each(json, function (i) {
                   child.append(
                           '<option value="' + json[i].code + '">' +
                           json[i].name + '</option>');
                   });
                   child.val(defaultlinCode);
                   });
               }
           }).change();
       });
           // 発注実績 の検索は、ajaxで読み込むファイルで検索し、このファイル上では検索しない
       </script>
   </body>
</html>
<?php
//クエリー結果の開放
sqlsrv_free_stmt($result);
//コネクションのクローズ
sqlsrv_close($conn);
?>
```php
```
<?php
$strdptfCode = filter_input(INPUT_GET, 'dpt');
var_dump($strdptfCode);
$tsql = "SELECT * from 中分類マスタ where 大分類 = $strdptfCode";
//クエリーを実行
$result = sqlsrv_query($conn, $tsql);
?>
<?php
if (isset($_POST['dpt'])){
//クエリー文を指定
$tsql = "SELECT 大分類,中分類,週,
        SUM(発数) AS 発注数,
        SUM(発原額) AS 発注原価,
        SUM(発売額税抜) AS 発注売価
        from dbo.VM_納品実績 where 大分類 = $dpt
        group by
        大分類,中分類,週
        order by 大分類,中分類,週";
//クエリーを実行
$result = sqlsrv_query($conn,$tsql);
}?>
<tbody>
<?php
   //実行結果を描画
   while($row = sqlsrv_fetch_array($result)) {
       printf("<tr><th>".$row['中分類']."</th>");
       printf("<td >".$row['週']."</td>");
       printf("<td >".number_format($row['発注数'])."</td>");
       printf("<td >".number_format($row['発注原価'])."</td>");
       printf("<td >".number_format($row['発注売価'])."</td></tr>");
   }
?>
</table>
```
  • PHP

    38103 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

3 元のソースを修正いたしました。

juriparu0411

juriparu0411 score 14

2016/11/15 09:21  投稿

複数のセレクトボックスで1つ目を選択した後、2つ目のセレクトボックスを絞り込む
PHP初心者です。詳しい方がいらっしゃいましたらよろしくお願いいたします。
データベースをSELECT文でSUM集計して表示するプログラムを作成中ですが、セレクトボックスを4つ作成する必要があります。
一つの選択で、「検索」ボタンを押して、SUBMITするのはできたのですが、2つ以上のセレクトボックスがあった場合、1つ目の選択した条件で2つ目のセレクトボックスに表示する要素をSELECT文のWHEREで絞り込みDISTINCTしたいのですが、SUBMITをおこなわずに引き渡す方法がわかりません。
例)
セレクトボックス1
りんご
みかん
いちご
れもん
上で「みかん」をクリックしたら、「みかん」の仕入実績がある取引先のみをセレクトボックス2に表示する。
セレクトボックス2
岩井商店
鈴木商店
田中商店
和田商店
不慣れで申し訳ありません。
以下、ソースを記載いたします。
```PHP  
 
 
<html>  
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=x-sjis">  
<head>  
<title>発注実績</title>  
</head>  
<body>  
<?php  
//データベースのインスタンス名を指定  
 
$serverName = ".\\SQLEXPRESS";  
//接続情報を指定  
$connectionInfo = array("UID"=>"test",  
"PWD"=>"test",  
"Database"=>"hattyuujisseki");  
 
//コネクションを確立  
$conn = sqlsrv_connect($serverName, $connectionInfo)  
or die(print_r(sqlsrv_errors(), true));  
//dpt引き渡し  
//クエリー文を指定  
$tsql = "SELECT * from 大分類マスタ";  
//クエリーを実行  
$result = sqlsrv_query($conn, $tsql);  
?>  
 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">  
<select name="dpt" >  
<?php  
 
while ($row = sqlsrv_fetch_array($result)) {  
if ((isset($_POST['dpt']))and($row['大分類コード'] == $_POST['dpt'])) {  
echo ' <option value="' . $row['大分類コード'] . '" selected="selected">' . $row['大分類コード'] . " ".$row['大分類名_漢字'] . '</option>' . "\n";  
 
$dpt = $_POST['dpt'];  
$dptmei = $row['大分類名_漢字'];  
} else {  
if (isset($_POST['dpt'])) { var_dump($_POST['dpt']); }  
 
echo ' <option value="' . $row['大分類コード'] . '">' . $row['大分類コード'] ." ". $row['大分類名_漢字'] .'</option>' . "\n";  
}  
}  
?>  
 
</select>  
<input type="submit" name="s" value="検 索" />  
</form>  
<b>発注実績 &emsp;  
<?php if (isset($_POST['dpt'])){ print("DPT ".$dpt ." ". $dptmei); } ?></b>  
 
<?php  
if (isset($_POST['dpt'])){  
 
//クエリー文を指定  
 
$tsql = "SELECT 大分類,中分類,取引先,週,  
SUM(発数) AS 発注数,  
SUM(発原額) AS 発注原価,  
SUM(発売額税抜) AS 発注売価  
from dbo.VM_納品実績 where 大分類 = $dpt  
group by  
大分類,中分類,取引先,週  
order by 大分類,中分類,取引先,週";  
//クエリーを実行  
$result = sqlsrv_query($conn,$tsql);  
}?>  
<table>  
<style>  
 
</style>  
<thead>  
<tr>  
<th>中分類</th>  
<th>取引先</th>  
<th>週</th>  
<th>発注数</th>  
<th>発注原価</th>  
<th>発注売価</th>  
</tr>  
</thead>  
 
<tbody>  
 
<?php  
 
//実行結果を描画  
while($row = sqlsrv_fetch_array($result)) {  
printf("<tr><th>".$row['中分類']."</th>");  
printf("<td >".$row['取引先']."</td>");  
printf("<td >".$row['週']."</td>");  
printf("<td >".number_format($row['発注数'])."</td>");  
printf("<td >".number_format($row['発注原価'])."</td>");  
printf("<td >".number_format($row['発注売価'])."</td></tr>");  
}  
?>  
</table>  
<?php  
//クエリー結果の開放  
sqlsrv_free_stmt($result);  
//コネクションのクローズ  
sqlsrv_close($conn);  
?>  
</body>  
</html>  
 
###ヘディングのテキスト  
 
度々で申し訳ありません。ソースを修正してみましたが、画面には
大分類しか表示されませんでした。
```PHP
コード
```<?php
```php
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
//データベースのインスタンス名を指定
$serverName = ".\\SQLEXPRESS";
//接続情報を指定
$connectionInfo = array("UID" => "test",
   "PWD" => "test",
   "Database" => "hattyuujisseki");
//コネクションを確立
$conn = sqlsrv_connect($serverName, $connectionInfo)
   or die(print_r(sqlsrv_errors(), true));
//dpt引き渡し
//クエリー文を指定
$tsql = "SELECT * from 大分類マスタ";
//クエリーを実行
$result = sqlsrv_query($conn, $tsql);
?>
<html>
   <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=x-sjis">
   <head>
       <title>発注実績</title>
   </head>
   <body>
       <form action="" method="POST">
           <select name="dpt" >
               <?php while ($row = sqlsrv_fetch_array($result)) : ?>
                   <?php if ($row['大分類コード'] == filter_input(INPUT_POST, 'dpt')): ?>
                       <option value="<?= $row['大分類コード'] ?>" selected="selected">
                           <?= $row['大分類コード']; ?> <?= $row['大分類名_漢字'] ?>
                       </option>
                   <?php else : ?>
                       <option value="<?= $row['大分類コード']; ?>">
                           <?= $row['大分類コード'] ?> <?= $row['大分類名_漢字'] ?>
                       </option>
                   <?php endif; ?>
               <?php endwhile; ?>
           </select>
           <input type="submit" name="s" value="検 索" />
       </form>
       <b>発注実績 &emsp;</b>
       <table>
           <thead>
               <tr>
                   <th>中分類</th>
                   <th>取引先</th>
                   <th>週</th>
                   <th>発注数</th>
                   <th>発注原価</th>
                   <th>発注売価</th>
               </tr>
           </thead>
           <tbody>
           </tbody>
       </table>
       <script type="text/javascript" src="//code.jquery.com/jquery-2.2.4.min.js" charset="Shift-JIS"></script>
       <script type="text/javascript" charset="Shift-JIS">
           // ここにJavaScript のコードを書く
           $(function () {
           var parent = $(".ajax-dpt");
           var child = $(".ajax-lin");
           parent.on("change", function () {
           var selecteddptCode = $(this).val();
           var param = {
           dpt: selecteddptCode
           };
           child.html('<option value="-1">-- 中分類選択 --</option>');
           var defaultlinCode = ("" != child.attr("default")) ? child.attr("default") : -1;
           if (-1 != selecteddptCode) {
           $.getJSON("/ajax/getlin.php", param, function (json) {
               $.each(json, function (i) {
                   child.append(
                           '<option value="' + json[i].code + '">' +
                           json[i].name + '</option>');
                   });
                   child.val(defaultlinCode);
                   });
               }
           }).change();
       });
           // 発注実績 の検索は、ajaxで読み込むファイルで検索し、このファイル上では検索しない
       </script>
   </body>
</html>
<?php
//クエリー結果の開放
sqlsrv_free_stmt($result);
//コネクションのクローズ
sqlsrv_close($conn);
?>
```PHP
```php
```  
<?php
$strdptfCode = filter_input(INPUT_GET, 'dpt');
var_dump($strdptfCode);
$tsql = "SELECT * from 中分類マスタ where 大分類 = $strdptfCode";
//クエリーを実行
$result = sqlsrv_query($conn, $tsql);
?>
<?php
if (isset($_POST['dpt'])){
//クエリー文を指定
$tsql = "SELECT 大分類,中分類,週,
        SUM(発数) AS 発注数,
        SUM(発原額) AS 発注原価,
        SUM(発売額税抜) AS 発注売価
        from dbo.VM_納品実績 where 大分類 = $dpt
        group by
        大分類,中分類,週
        order by 大分類,中分類,週";
//クエリーを実行
$result = sqlsrv_query($conn,$tsql);
}?>
<tbody>
<?php
   //実行結果を描画
   while($row = sqlsrv_fetch_array($result)) {
       printf("<tr><th>".$row['中分類']."</th>");
       printf("<td >".$row['週']."</td>");
       printf("<td >".number_format($row['発注数'])."</td>");
       printf("<td >".number_format($row['発注原価'])."</td>");
       printf("<td >".number_format($row['発注売価'])."</td></tr>");
   }
?>
</table>
```
```
  • PHP

    38103 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

2 修正したソースを再度、記載いたしました。アドバイスいただけると助かります。丁寧に語指導いただいていますのに申し訳ありません。

juriparu0411

juriparu0411 score 14

2016/11/14 18:15  投稿

複数のセレクトボックスで1つ目を選択した後、2つ目のセレクトボックスを絞り込む
PHP初心者です。詳しい方がいらっしゃいましたらよろしくお願いいたします。
データベースをSELECT文でSUM集計して表示するプログラムを作成中ですが、セレクトボックスを4つ作成する必要があります。
一つの選択で、「検索」ボタンを押して、SUBMITするのはできたのですが、2つ以上のセレクトボックスがあった場合、1つ目の選択した条件で2つ目のセレクトボックスに表示する要素をSELECT文のWHEREで絞り込みDISTINCTしたいのですが、SUBMITをおこなわずに引き渡す方法がわかりません。
例)
セレクトボックス1
りんご
みかん
いちご
れもん
上で「みかん」をクリックしたら、「みかん」の仕入実績がある取引先のみをセレクトボックス2に表示する。
セレクトボックス2
岩井商店
鈴木商店
田中商店
和田商店
不慣れで申し訳ありません。
以下、ソースを記載いたします。
```PHP
<html>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=x-sjis">
<head>
<title>発注実績</title>
</head>
<body>
<?php
//データベースのインスタンス名を指定
$serverName = ".\\SQLEXPRESS";
//接続情報を指定
$connectionInfo = array("UID"=>"test",
"PWD"=>"test",
"Database"=>"hattyuujisseki");
//コネクションを確立
$conn = sqlsrv_connect($serverName, $connectionInfo)
or die(print_r(sqlsrv_errors(), true));
//dpt引き渡し
//クエリー文を指定
$tsql = "SELECT * from 大分類マスタ";
//クエリーを実行
$result = sqlsrv_query($conn, $tsql);
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<select name="dpt" >
<?php
while ($row = sqlsrv_fetch_array($result)) {
if ((isset($_POST['dpt']))and($row['大分類コード'] == $_POST['dpt'])) {
echo ' <option value="' . $row['大分類コード'] . '" selected="selected">' . $row['大分類コード'] . " ".$row['大分類名_漢字'] . '</option>' . "\n";
$dpt = $_POST['dpt'];
$dptmei = $row['大分類名_漢字'];
} else {
if (isset($_POST['dpt'])) { var_dump($_POST['dpt']); }
echo ' <option value="' . $row['大分類コード'] . '">' . $row['大分類コード'] ." ". $row['大分類名_漢字'] .'</option>' . "\n";
}
}
?>
</select>
<input type="submit" name="s" value="検 索" />
</form>
<b>発注実績 &emsp;
<?php if (isset($_POST['dpt'])){ print("DPT ".$dpt ." ". $dptmei); } ?></b>
<?php
if (isset($_POST['dpt'])){
//クエリー文を指定
$tsql = "SELECT 大分類,中分類,取引先,週,
SUM(発数) AS 発注数,
SUM(発原額) AS 発注原価,
SUM(発売額税抜) AS 発注売価
from dbo.VM_納品実績 where 大分類 = $dpt
group by
大分類,中分類,取引先,週
order by 大分類,中分類,取引先,週";
//クエリーを実行
$result = sqlsrv_query($conn,$tsql);
}?>
<table>
<style>
</style>
<thead>
<tr>
<th>中分類</th>
<th>取引先</th>
<th>週</th>
<th>発注数</th>
<th>発注原価</th>
<th>発注売価</th>
</tr>
</thead>
<tbody>
<?php
//実行結果を描画
while($row = sqlsrv_fetch_array($result)) {
printf("<tr><th>".$row['中分類']."</th>");
printf("<td >".$row['取引先']."</td>");
printf("<td >".$row['週']."</td>");
printf("<td >".number_format($row['発注数'])."</td>");
printf("<td >".number_format($row['発注原価'])."</td>");
printf("<td >".number_format($row['発注売価'])."</td></tr>");
}
?>
</table>
<?php
//クエリー結果の開放
sqlsrv_free_stmt($result);
//コネクションのクローズ
sqlsrv_close($conn);
?>
</body>
</html>
###ヘディングのテキスト  
 
度々で申し訳ありません。ソースを修正してみましたが、画面には  
大分類しか表示されませんでした。  
 
```PHP  
 
コード  
```<?php  
ini_set('display_errors', 1);  
error_reporting(E_ALL);  
 
//データベースのインスタンス名を指定  
$serverName = ".\\SQLEXPRESS";  
//接続情報を指定  
$connectionInfo = array("UID" => "test",  
   "PWD" => "test",  
   "Database" => "hattyuujisseki");  
 
//コネクションを確立  
$conn = sqlsrv_connect($serverName, $connectionInfo)  
   or die(print_r(sqlsrv_errors(), true));  
//dpt引き渡し  
//クエリー文を指定  
$tsql = "SELECT * from 大分類マスタ";  
//クエリーを実行  
$result = sqlsrv_query($conn, $tsql);  
?>  
<html>  
   <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=x-sjis">  
   <head>  
       <title>発注実績</title>  
   </head>  
   <body>  
       <form action="" method="POST">  
           <select name="dpt" >  
               <?php while ($row = sqlsrv_fetch_array($result)) : ?>  
                   <?php if ($row['大分類コード'] == filter_input(INPUT_POST, 'dpt')): ?>  
                       <option value="<?= $row['大分類コード'] ?>" selected="selected">  
                           <?= $row['大分類コード']; ?> <?= $row['大分類名_漢字'] ?>  
                       </option>  
                   <?php else : ?>  
                       <option value="<?= $row['大分類コード']; ?>">  
                           <?= $row['大分類コード'] ?> <?= $row['大分類名_漢字'] ?>  
                       </option>  
                   <?php endif; ?>  
               <?php endwhile; ?>  
 
           </select>  
           <input type="submit" name="s" value="検 索" />  
       </form>  
       <b>発注実績 &emsp;</b>  
       <table>  
           <thead>  
               <tr>  
                   <th>中分類</th>  
                   <th>取引先</th>  
                   <th>週</th>  
                   <th>発注数</th>  
                   <th>発注原価</th>  
                   <th>発注売価</th>  
               </tr>  
           </thead>  
           <tbody>  
 
           </tbody>  
       </table>  
       <script type="text/javascript" src="//code.jquery.com/jquery-2.2.4.min.js" charset="Shift-JIS"></script>  
       <script type="text/javascript" charset="Shift-JIS">  
           // ここにJavaScript のコードを書く  
           $(function () {  
           var parent = $(".ajax-dpt");  
           var child = $(".ajax-lin");  
           parent.on("change", function () {  
           var selecteddptCode = $(this).val();  
           var param = {  
           dpt: selecteddptCode  
           };  
           child.html('<option value="-1">-- 中分類選択 --</option>');  
           var defaultlinCode = ("" != child.attr("default")) ? child.attr("default") : -1;  
 
           if (-1 != selecteddptCode) {  
           $.getJSON("/ajax/getlin.php", param, function (json) {  
               $.each(json, function (i) {  
                   child.append(  
                           '<option value="' + json[i].code + '">' +  
                           json[i].name + '</option>');  
                   });  
                   child.val(defaultlinCode);  
                   });  
               }  
           }).change();  
       });  
           // 発注実績 の検索は、ajaxで読み込むファイルで検索し、このファイル上では検索しない  
       </script>  
   </body>  
</html>  
<?php  
//クエリー結果の開放  
sqlsrv_free_stmt($result);  
//コネクションのクローズ  
sqlsrv_close($conn);  
?>  
 
```PHP  
 
<?php  
 
$strdptfCode = filter_input(INPUT_GET, 'dpt');  
 
var_dump($strdptfCode);  
 
$tsql = "SELECT * from 中分類マスタ where 大分類 = $strdptfCode";  
//クエリーを実行  
$result = sqlsrv_query($conn, $tsql);  
?>  
 
<?php  
if (isset($_POST['dpt'])){  
 
//クエリー文を指定  
 
$tsql = "SELECT 大分類,中分類,週,  
        SUM(発数) AS 発注数,  
        SUM(発原額) AS 発注原価,  
        SUM(発売額税抜) AS 発注売価  
        from dbo.VM_納品実績 where 大分類 = $dpt  
        group by  
        大分類,中分類,週  
        order by 大分類,中分類,週";  
//クエリーを実行  
$result = sqlsrv_query($conn,$tsql);  
}?>  
 
<tbody>  
 
<?php  
 
   //実行結果を描画  
   while($row = sqlsrv_fetch_array($result)) {  
       printf("<tr><th>".$row['中分類']."</th>");  
       printf("<td >".$row['週']."</td>");  
       printf("<td >".number_format($row['発注数'])."</td>");  
       printf("<td >".number_format($row['発注原価'])."</td>");  
       printf("<td >".number_format($row['発注売価'])."</td></tr>");  
   }  
?>  
</table>  
 
```
  • PHP

    38103 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1 現在作成中のソースを追記いたしました。

juriparu0411

juriparu0411 score 14

2016/11/13 17:22  投稿

複数のセレクトボックスで1つ目を選択した後、2つ目のセレクトボックスを絞り込む
PHP初心者です。詳しい方がいらっしゃいましたらよろしくお願いいたします。
データベースをSELECT文でSUM集計して表示するプログラムを作成中ですが、セレクトボックスを4つ作成する必要があります。
一つの選択で、「検索」ボタンを押して、SUBMITするのはできたのですが、2つ以上のセレクトボックスがあった場合、1つ目の選択した条件で2つ目のセレクトボックスに表示する要素をSELECT文のWHEREで絞り込みDISTINCTしたいのですが、SUBMITをおこなわずに引き渡す方法がわかりません。
例)
セレクトボックス1
りんご
みかん
いちご
れもん
上で「みかん」をクリックしたら、「みかん」の仕入実績がある取引先のみをセレクトボックス2に表示する。
セレクトボックス2
岩井商店
鈴木商店
田中商店
和田商店
和田商店
不慣れで申し訳ありません。
以下、ソースを記載いたします。
```PHP
<html>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=x-sjis">
<head>
<title>発注実績</title>
</head>
<body>
<?php
//データベースのインスタンス名を指定
$serverName = ".\\SQLEXPRESS";
//接続情報を指定
$connectionInfo = array("UID"=>"test",
"PWD"=>"test",
"Database"=>"hattyuujisseki");
//コネクションを確立
$conn = sqlsrv_connect($serverName, $connectionInfo)
or die(print_r(sqlsrv_errors(), true));
//dpt引き渡し
//クエリー文を指定
$tsql = "SELECT * from 大分類マスタ";
//クエリーを実行
$result = sqlsrv_query($conn, $tsql);
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<select name="dpt" >
<?php
while ($row = sqlsrv_fetch_array($result)) {
if ((isset($_POST['dpt']))and($row['大分類コード'] == $_POST['dpt'])) {
echo ' <option value="' . $row['大分類コード'] . '" selected="selected">' . $row['大分類コード'] . " ".$row['大分類名_漢字'] . '</option>' . "\n";
$dpt = $_POST['dpt'];
$dptmei = $row['大分類名_漢字'];
} else {
if (isset($_POST['dpt'])) { var_dump($_POST['dpt']); }
echo ' <option value="' . $row['大分類コード'] . '">' . $row['大分類コード'] ." ". $row['大分類名_漢字'] .'</option>' . "\n";
}
}
?>
</select>
<input type="submit" name="s" value="検 索" />
</form>
<b>発注実績 &emsp;
<?php if (isset($_POST['dpt'])){ print("DPT ".$dpt ." ". $dptmei); } ?></b>
<?php
if (isset($_POST['dpt'])){
//クエリー文を指定
$tsql = "SELECT 大分類,中分類,取引先,週,
SUM(発数) AS 発注数,
SUM(発原額) AS 発注原価,
SUM(発売額税抜) AS 発注売価
from dbo.VM_納品実績 where 大分類 = $dpt
group by
大分類,中分類,取引先,週
order by 大分類,中分類,取引先,週";
//クエリーを実行
$result = sqlsrv_query($conn,$tsql);
}?>
<table>
<style>
</style>
<thead>
<tr>
<th>中分類</th>
<th>取引先</th>
<th>週</th>
<th>発注数</th>
<th>発注原価</th>
<th>発注売価</th>
</tr>
</thead>
<tbody>
<?php
//実行結果を描画
while($row = sqlsrv_fetch_array($result)) {
printf("<tr><th>".$row['中分類']."</th>");
printf("<td >".$row['取引先']."</td>");
printf("<td >".$row['週']."</td>");
printf("<td >".number_format($row['発注数'])."</td>");
printf("<td >".number_format($row['発注原価'])."</td>");
printf("<td >".number_format($row['発注売価'])."</td></tr>");
}
?>
</table>
<?php
//クエリー結果の開放
sqlsrv_free_stmt($result);
//コネクションのクローズ
sqlsrv_close($conn);
?>
</body>
</html>
```
  • PHP

    38103 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る