【问题标题】:How to Filter mysql/php table data using a form如何使用表单过滤 mysql/php 表数据
【发布时间】:2016-11-05 09:56:04
【问题描述】:

这是我正在做的事情的背景:

  1. PHP 正在查询一个 mySql 表,以便在网站上显示一个 NFL 数据表。
  2. 我想过滤掉没有检查团队的玩家
    • 见下图,图中仅显示属于 BAL、CIN 和 DEN 的玩家)。
  3. 但我一次只能显示 1 个团队
    • 如果我在下拉菜单中选中了 BAL、CIN、DEN,那么我将只有一个包含 Teams 球员的数据表。

有人可以帮帮我吗?

<?php /*
Template Name: TestPHPFilter}
*/ ?>

<?php get_header(); ?>

<?php genesis_before_content_sidebar_wrap(); ?>
<div id="content-sidebar-wrap">

<?php genesis_before_content(); ?>
	<div class='statsheader'>
	<div class='statstitlelng'>
	<h2><?php _e('DFS Trends'); ?></h2></div><div id="dpapos" class='statstitle'><h2>WRs</h2></div>
	
		<div class='statsfddk'>
	</div>
	
	<div class='statsform'>
	   				<form action="<?php bloginfo('url'); ?>" method="get">
	   				<?php  
	   					$args = array(
						    
						    'include' => '1822, 1825, 1827, 1829'					    
						);
						wp_dropdown_pages($args); ?>
   				 
	   				<input type="submit" name="submit" value="view" />
	  				 </form>
					 <script type="text/javascript">
                                    jQuery(function($) {
						                $('#teammultiselect').multiselect();
                                    });
                                </script>
        <form action="<?php get_permalink('1839'); ?>" method="POST">
   
            <select id="teammultiselect" name="start" multiple="multiple">
                <option value="">Team</option>
						<option value="ARI" <?php if($start == 'ARI'){echo 'selected';}?>>ARI</option>
						<option value="ATL" <?php if($start == 'ATL'){echo 'selected';}?>>ATL</option>
						<option value="BAL" <?php if($start == 'BAL'){echo 'selected';}?>>BAL</option>
						<option value="BUF" <?php if($start == 'BUF'){echo 'selected';}?>>BUF</option>
						<option value="CAR" <?php if($start == 'CAR'){echo 'selected';}?>>CAR</option>
						<option value="CHI" <?php if($start == 'CHI'){echo 'selected';}?>>CHI</option>
						<option value="CIN" <?php if($start == 'CIN'){echo 'selected';}?>>CIN</option>
						<option value="CLE" <?php if($start == 'CLE'){echo 'selected';}?>>CLE</option>
						<option value="DAL" <?php if($start == 'DAL'){echo 'selected';}?>>DAL</option>
						<option value="DEN" <?php if($start == 'DEN'){echo 'selected';}?>>DEN</option>
						<option value="DET" <?php if($start == 'DET'){echo 'selected';}?>>DET</option>
						<option value="GB" <?php if($start == 'GB'){echo 'selected';}?>>GB</option>
						<option value="HOU" <?php if($start == 'HOU'){echo 'selected';}?>>HOU</option>
						<option value="IND" <?php if($start == 'IND'){echo 'selected';}?>>IND</option>
						<option value="JAX" <?php if($start == 'JAX'){echo 'selected';}?>>JAX</option>
						<option value="KC" <?php if($start == 'KC'){echo 'selected';}?>>KC</option>
						<option value="LA" <?php if($start == 'LA'){echo 'selected';}?>>LA</option>
						<option value="MIA" <?php if($start == 'MIA'){echo 'selected';}?>>MIA</option>
						<option value="MIN" <?php if($start == 'MIN'){echo 'selected';}?>>MIN</option>
						<option value="NE" <?php if($start == 'NE'){echo 'selected';}?>>NE</option>
						<option value="NO" <?php if($start == 'NO'){echo 'selected';}?>>NO</option>
						<option value="NYG" <?php if($start == 'NYG'){echo 'selected';}?>>NYG</option>
						<option value="NYJ" <?php if($start == 'NYJ'){echo 'selected';}?>>NYJ</option>
						<option value="OAK" <?php if($start == 'OAK'){echo 'selected';}?>>OAK</option>
						<option value="PHI" <?php if($start == 'PHI'){echo 'selected';}?>>PHI</option>
						<option value="PIT" <?php if($start == 'PIT'){echo 'selected';}?>>PIT</option>
						<option value="SD" <?php if($start == 'SD'){echo 'selected';}?>>SD</option>
						<option value="SEA" <?php if($start == 'SEA'){echo 'selected';}?>>SEA</option>
						<option value="SF" <?php if($start == 'SF'){echo 'selected';}?>>SF</option>
						<option value="TB" <?php if($start == 'TB'){echo 'selected';}?>>TB</option>
						<option value="TEN" <?php if($start == 'TEN'){echo 'selected';}?>>TEN</option>
						<option value="WAS" <?php if($start == 'WAS'){echo 'selected';}?>>WAS</option>
            </select>
            
            <input type="submit" name="search" value="Find">
					 </div></div>
					 </form>
    
<?php

$dsn = 'mysql:host=localhost;dbname=press_10';
$username = 'xxx';
$password = 'yyy';

try{
    
    $con = new PDO($dsn, $username, $password);
    $con->setAttribute(PO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
} catch (Exception $ex) {

    echo 'Not Connected '.$ex->getMessage();
}

$tableContent = '';
$start = '';
$selectStmt = $con->prepare('SELECT * FROM WR_TeamAnalyzer');
$selectStmt->execute();
$rows = $selectStmt->fetchAll();

foreach ($rows as $row)
{
    $tableContent = $tableContent.'<tr>'.
             '<td>' . $row['WR'] .'</td>'
			.'<td>' . $row['Team'] . '</td>'
			.'<td>' . $row['WK'] . '</td>'
			.'<td>' . $row['Opp'] . '</td>'
			.'<td>' . $row['T'] . '</td>'
			.'<td>' . $row['Yds'] . '</td>'
			.'<td>' . $row['TDs'] . '</td>'
			.'<td>' . $row['Fpts'] . '</td>';
}

if(isset($_POST['search']))
{
$start = $_POST['start'];
$tableContent = '';
$selectStmt = $con->prepare('SELECT * FROM WR_TeamAnalyzer WHERE TEAM like :start');
$selectStmt->execute(array(
        
         ':start'=>$start.'%'
    
));
$rows = $selectStmt->fetchAll();

foreach ($rows as $row)
{
    $tableContent = $tableContent.'<tr>'.
             '<td>' . $row['WR'] .'</td>'
			.'<td>' . $row['Team'] . '</td>'
			.'<td>' . $row['WK'] . '</td>'
			.'<td>' . $row['Opp'] . '</td>'
			.'<td>' . $row['T'] . '</td>'
			.'<td>' . $row['Yds'] . '</td>'
			.'<td>' . $row['TDs'] . '</td>'
			.'<td>' . $row['Fpts'] . '</td>';
}
    
}

?>

  
            
           <div class='wpDataTablesWrapper'><table id='trend' class='wpDataTable dataTable'><thead><tr><th>WR</th><th>Tm</th><th>Wk</th><th>Opp</th><th>T</th><th>Yds</th><th>TDs</th><th>Fpts</th></tr></thead>
                
                <?php
                
                echo $tableContent;
                
                ?>
                
            </table>

【问题讨论】:

  • 你的代码格式太糟糕了,你正在减少获得任何帮助的机会。花一些时间编辑您的帖子以清理您的代码格式,使其可读。
  • Moyom 为我解决了这个问题,感谢 Moyom 的详细描述。我觉得像 Moyom 这样在 stackoverflow 上遇到的人很少见。
  • 如果您认真努力使您的问题得到充分考虑和形成,您将增加遇到像@Moyom 这样的好人的机会。如果您在构建问题时表现出缺乏努力,那么如果人们表现出缺乏回应的努力,您就不会感到惊讶。
  • 嗯,我对 PHP 和一般编码非常陌生,我的“代码混乱”是无意的,实际上我从一个教程中得到了该代码,该教程除了多选之外做了所有事情,就教程而言, 那是对的。我认为这是一个以帮助人们而闻名的地方,这就是我发布问题的原因。你的消极情绪 jwpfox 让人们的问题变得冷淡。
  • 如果您看到人们提供“这就是您如何可以做得更好”的负面反馈,那么您正在为自己的悲伤和不快乐的生活做好准备。学习如何接受建设性的反馈是添加到您的生活技能工具箱中的关键项目。您对 SO 人群的“负面”攻击不会赢得您的朋友或帮助您充分利用 SO。仔细想想我们中的哪些人在这里表现出消极的态度。会议结束。

标签: php mysql sql loops


【解决方案1】:

我建议将选择标记名称更改为name="start[]",这样您就可以使用$_POST['start'] 在数组中获取这些值。

然后,据我了解您的问题,您希望显示未被选中的球队的球员,因此我们需要将查询结构如下:

SELECT * FROM WR_TeamAnalyzer WHERE TEAM NOT LIKE start[0]%
                                OR TEAM NOT LIKE start[1]%...

所以为了与您的方法保持一致,我们将创建一个查询字符串和带有 for 的参数数组:

$query = "SELECT * FROM WR_TeamAnalyzer WHERE TEAM LIKE 'nothing'";
$array = array();
foreach ($_POST['start'] as $st)
{
    $query .= " OR TEAM NOT LIKE :start" . $st;
    $array[':start' . $st] = $st . '%';
}

然后运行:

$selectStmt = $con->prepare($query);
$selectStmt->execute($array);

这应该可以工作。

我还建议您阅读 MVC 架构,它对开发 Web 应用程序有很大帮助。有很多教程和方法可以很好地解释这一点,this 是为 PHP 设计的一个很好的方法。

来源:

对于multiple select

【讨论】:

  • 非常感谢 Moyom,一切正常!而你讲述所有代码的原因的方式,真的帮助了我。非常感谢您的回复。
猜你喜欢
  • 2010-09-18
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
  • 2013-11-12
  • 1970-01-01
  • 2013-10-27
  • 2023-03-11
相关资源
最近更新 更多