公式アカウントからの投稿が始まります

500のデータがあります。
1つのデータには、試験1の得点と組が必ずあります。
試験2はある場合とない場合があります。
ない場合はNULLを格納しています。

SELECTで選んで絞込表示させたいです。

試してみたのですが、上手にできませんでした。
ご教示をいただけないでしょうか。
よろしくお願いします。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<title></title>
<?php
$tokuten = $_GET["tokuten"];
$kumi = $_GET["kumi"];

$selectData = "SELECT * FROM test WHERE 1";
$selectData .= " AND {$t1} <= {$tokuten} AND {$k1} <= {$kumi} AND {$t2} <= {$tokuten} AND {$k2} <= {$kumi}";

$mmm = mysql_query($selectData,$mysql);;
$table = "<table>";
while($rrr = mysql_fetch_array($mmm)){
 $t1 = $rrr["t1"]; //試験1の得点
 $k1 = $rrr["k1"]; //組1の得点
 $t2 = $rrr["t2"]; //試験2の得点
 $r2 = $rrr["r2"]; //組2の得点

 if ( is_null($t2) ) {
  $td = "";
 } else {
  $td = "<td>試験2の得点</td><td>$t2</td><td>試験2の組</td><td>$k2</td>";
 }

 $table .= "<tr><td>試験1の得点</td><td>$t1</td><td>試験1の組</td><td>$k1</td>{$td}</tr>";
}
$table .= "</table>";
?>
</head>
<body>

<form name="formName" action="<?php echo $_SERVER['PHP_SELF']; ?>">
得点
<select name="tokuten">
<option value="0">0点</option>
<option value="25">25点以下</option>
<option value="50">50点以下</option>
<option value="75">75点以下</option>
<option value="100">100</option>
</select>

<select name="kumi">
<option value="A組">A組</option>
<option value="B組">B組</option>
<option value="C組">C組</option>
</select>
</form>

<div id="bbb"><?php echo $table; ?></div>

</body>
</html>

A 回答 (1件)

<?php


// 初期値ぐらい設定する
$tokuten = isset($_GET["tokuten"]) ? $_GET['tokuten'] : 0;
$kumi = isset($_GET["kumi"]) ? $_GET['kumi'] : 'A組';

$sql =<<<__SQL__
SELECT
*
FROM test WHERE 1
AND :t1 <= :tokuten
AND :k1 <= :kumi
AND :t2 <= :tokuten
AND :k2 <= :kumi
__SQL__;

// 直接突っ込むような雑なことはせずなるべくプリペアドステートメントを用いる
$sth = $pdo->prepare( $sql );
$sth->execute( array(':t1'=>$t1, ':t2'=>$t2, ':k1'=>$k1, ':k2'=>$k2, ':tokuten'=>$tokuten, ':kumi'=>$kumi) );

$result = $sth->fetchAll( PDO::FETCH_ASSOC );
?>

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<title></title>
</head>
<body>

<!-- form の下には、ブロックレベル要素しか置けない -->
<!-- action に PHP_SELF を突っ込むようなことはしない。通常 SCRIPT_NAME を用いる -->
<form name="formName" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
<fieldset>
<label for="tokuten">得点<label>
<select name="tokuten" id="tokuten">
<option value="0" selected="selected">0点</option>
<option value="25">25点以下</option>
<option value="50">50点以下</option>
<option value="75">75点以下</option>
<option value="100">100</option>
</select>
<label for="kumi">組</label>
<select name="kumi" id="kumi">
<option value="A組" selected="selected">A組</option>
<option value="B組">B組</option>
<option value="C組">C組</option>
</select>
<fieldset>
</form>

<div id="bbb">

<table>
<? foreach( $result as $r ) : ?>
<tr>
<td>試験1の得点</td>
<td><?=htmlentities( $r['t1'], ENT_QUOTES, 'UTF-8')?></td>
<td>試験1の組</td>
<td><?=htmlentities( $r['k1'], ENT_QUOTES, 'UTF-8')?></td>
<? if( !is_null($r['t2']) ) : ?>
<td>試験2の得点</td>
<td><?=htmlentities( $r['t2'], ENT_QUOTES, 'UTF-8')?></td>
<td>試験2の組</td>
<td><?=htmlentities( $r['k2'], ENT_QUOTES, 'UTF-8')?></td>
<? endif; ?>
</tr>
<? endforeach; ?>
</table>
</div>

</body>
</html>

質問とは関係ない内容だが、
とりあえず質問では、何をどうしたいのかが汲み取れない。
もう少し具体的に記入していただかないと答えようがありません。
    • good
    • 0

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