MySQLについての質問です
毎回お世話になっています。
今回も知恵を頂けたらありがたいです。よろしくお願い致します。
下記のようなプログラムを組んだところ、ページを開いたらすぐ全データがが出てくる状態になっています。ページを開いても何もデータが出てこない状態にして検索してからデータが出てくるようにするにはどのように書き換えれば良いのでしょうか?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>リーグデータ</title>
<link rel="stylesheet" type="text/css" href="../common/style.css"/>
</head>
<?php error_reporting( E_ALL ^ E_NOTICE ); ?>
<body id="list">
<div id="main">
<form name="search_form" action="player_list.php" method="post">
<input type="hidden" name="cmd" value="search" />
<table>
<tr>
<th class="th_top">選手名</th>
<td class="td_top">
<input type="text" name="name" size="30" value="<?php echo $_POST['name'] ?>">
</td>
</tr>
<tr>
<th>チーム名</th>
<td>
<input type="checkbox" name="team_id[]" value="1" <?php if (isset($_REQUEST['team_id']) and in_array('1',$_REQUEST['team_id'])) print 'checked'; ?>/>
名古屋
<input type="checkbox" name="team_id[]" value="2" <?php if (isset($_REQUEST['team_id']) and in_array('2',$_REQUEST['team_id'])) print 'checked'; ?>/>
徳島
<input type="checkbox" name="team_id[]" value="3" <?php if (isset($_REQUEST['team_id']) and in_array('3',$_REQUEST['team_id'])) print 'checked'; ?>/>
千葉
<input type="checkbox" name="team_id[]" value="4" <?php if (isset($_REQUEST['team_id']) and in_array('4',$_REQUEST['team_id'])) print 'checked'; ?>/>
浦和
<input type="checkbox" name="team_id[]" value="5" <?php if (isset($_REQUEST['team_id']) and in_array('5',$_REQUEST['team_id'])) print 'checked'; ?>/>
磐田<br />
</td>
</tr>
<tr>
<th class="th_middle">
ポジション
</th>
<td class="td_middle">
FW MF DF GK
</td>
</tr>
</table>
<p>
<input type="submit" value="検索">
<input type="reset" value="リセット">
</p>
</form>
<?php
try
{
$dsn = 'mysql:dbname=xxxxx;host=localhost';
$user = 'xxxxx';
$password = 'xxxxxx';
$dbh = new PDO($dsn,$user,$password);
$dbh->query('SET NAMES utf8');
$sql = 'SELECT code,name,team_name,price,position,gazou FROM mst_player_market WHERE 1';
$stmt = $dbh->prepare($sql);
$stmt->execute();
$dbh = null;
if(isset($_POST['name'])) {
$name = htmlspecialchars($_POST['name']);
print($name);
}
if(isset($_POST['name'])) {
if(!$_POST['name']==true){print '';
}else{
$sqlN ='code IN (SELECT code FROM mst_player_market where name LIKE ("%'.$_POST['name'].'%"))';
$sql.=' and ('.$sqlN.')';
}
}
if(isset($_POST['team_id'])and is_array($_POST['team_id'])){
$ary = array_filter($_POST['team_id'], function($v) {return is_numeric($v);});
$sqlA = 'code IN (SELECT playerid FROM team WHERE team_id IN ('.implode(',', $ary).'))';
}else{ print '';
$sqlA = ' 1 ';
$flag=false;
}
$sql.=' and ('.$sqlA.')';
if($flag) $sql.="AND 0 ";;
//参考
print $sql."<br>";
//実行
$pdo = new PDO($dsn,$user,$password);
$stmt = $pdo->prepare($sql);
$stmt->execute();
//画像処理
$rows=array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$rows[]=$row;
};
//参考SQL文表示
print_r($rows);
print'選手一覧<br /><br />';
print'</form>';
}
catch(Exception $e)
{
print'ただいま障害により大変ご迷惑をお掛けしております。';
exit();
}
?>
<?php
foreach((array) $rows as $row ){
?>
<tr>
<td><img src="../player/<?php print( htmlspecialchars( $row["gazou"], ENT_QUOTES )); ?>" /></td>
<td><?php print( htmlspecialchars( $row["team_name"], ENT_QUOTES )); ?></td>
<td>\<?php print( htmlspecialchars( number_format( $row["price"] ),ENT_QUOTES ) ); ?></td>
<td>
<?php print( htmlspecialchars( $row["name"], ENT_QUOTES ) ); ?>
</td>
<td>
<?php print( htmlspecialchars( $row["position"], ENT_QUOTES ) ); ?>
</td>
</tr>
<?php
}
?>
</table>
</div>
<!------------mainのdiv-------------->
</body>
</html>
お礼
"フォーマット 精度指定子"なかなか出てこないキーワードを教えていただき、ありがとうございます。