php – 从sql数据库中检索数据并显示在表格中 – 根据选中的复选
发布时间:2020-12-13 13:45:26 所属栏目:PHP教程 来源:网络整理
导读:我创建了一个sql数据库(带有phpmyadmin),里面填充了测量数据,我希望在两个日期之间调用数据(用户通过在 HTML表单中输入“FROM”和“TO”日期来选择DATE)并将其显示在表. 另外,我在我的html表单下放了一些复选框,通过检查它们可以限制显示的数据量. 每个复选
我创建了一个sql数据库(带有phpmyadmin),里面填充了测量数据,我希望在两个日期之间调用数据(用户通过在
HTML表单中输入“FROM”和“TO”日期来选择DATE)并将其显示在表.
另外,我在我的html表单下放了一些复选框,通过检查它们可以限制显示的数据量. 每个复选框代表我的数据库的一列;因此,除了日期和小时列之外,还会显示任何已检查的内容(如果未选中任何内容,则显示所有内容). 到目前为止,我设法编写了一个连接到数据库的PHP脚本,在没有选中任何复选框时显示所有内容,并设法将其中一个复选框放入其中. 问题:我呼叫的数据已显示两次. 问题:我想要四个复选框. 我是否需要为每种可能的组合编写SQL查询或者有更简单的方法? <?php # FileName="Connection_php_mysql.htm" # Type="MYSQL" # HTTP="true" $hostname_Database_Test = "localhost"; $database_Database_Test = "database_test"; $table_name = "solar_irradiance"; $username_Database_Test = "root"; $password_Database_Test = ""; $Database_Test = mysql_pconnect($hostname_Database_Test,$username_Database_Test,$password_Database_Test) or trigger_error(mysql_error(),E_USER_ERROR); //HTML forms -> variables $fromdate = $_POST['fyear']; $todate = $_POST['toyear']; //DNI CHECKBOX + ALL $dna="SELECT DATE,Local_Time_Decimal,DNI FROM $database_Database_Test.$table_name where DATE>="$fromdate" AND DATE<="$todate""; $tmp ="SELECT * FROM $database_Database_Test.$table_name where DATE>="$fromdate" AND DATE<="$todate""; $entry=$_POST['dni']; if (empty($entry)) { $result = mysql_query($tmp); echo "<table border='1' style='width:300px'> <tr> <th>DATE</th> <th>Local_Time_Decimal</th> <th>Solar_time_decimal</th> <th>GHI</th> <th>DiffuseHI</th> <th>zenith_angle</th> <th>DNI</th> "; while( $row = mysql_fetch_assoc($result)) { echo "<tr>"; echo "<td>" . $row['DATE'] . "</td>"; echo "<td>" . $row['Local_Time_Decimal'] . "</td>"; echo "<td>" . $row['Solar_Time_Decimal'] . "</td>"; echo "<td>" . $row['GHI'] . "</td>"; echo "<td>" . $row['DiffuseHI'] . "</td>"; echo "<td>" . $row['Zenith_Angle'] . "</td>"; echo "<td>" . $row['DNI'] . "</td>"; echo "</tr>"; } echo '</table>';} else { $result= mysql_query($dna); echo "<table border='1' style='width:300px'> <tr> <th>DATE</th> <th>Local_Time_Decimal</th> <th>DNI</th> "; while($row = mysql_fetch_assoc($result)) { echo "<tr>"; echo "<td>" . $row['DATE'] . "</td>"; echo "<td>" . $row['Local_Time_Decimal']."</td>"; echo "<td>" . $row['DNI'] . "</td>"; echo "</tr>"; } echo '</table>'; } if($result){ echo "Successful"; } else{ echo "Enter correct dates"; } ?> <?php mysql_close(); ?>
尝试创建如下所示的复选框:
Solar_Time_Decimal<checkbox name='columns[]' value='1'> GHI<checkbox name='columns[]' value='2'> DiffuseHI<checkbox name='columns[]' value='3'> Zenith_Angle<checkbox name='columns[]' value='4'> DNI<checkbox name='columns[]' value='5'> 并尝试将您的PHP代码改为: <?php //HTML forms -> variables $fromdate = isset($_POST['fyear']) ? $_POST['fyear'] : data("d/m/Y"); $todate = isset($_POST['toyear']) ? $_POST['toyear'] : data("d/m/Y"); $all = false; $column_names = array('1' => 'Solar_Time_Decimal','2'=>'GHI','3'=>'DiffuseHI','4'=>'Zenith_Angle','5'=>'DNI'); $column_entries = isset($_POST['columns']) ? $_POST['columns'] : array(); $sql_columns = array(); foreach($column_entries as $i) { if(array_key_exists($i,$column_names)) { $sql_columns[] = $column_names[$i]; } } if (empty($sql_columns)) { $all = true; $sql_columns[] = "*"; } else { $sql_columns[] = "DATE,Local_Time_Decimal"; } //DNI CHECKBOX + ALL $tmp ="SELECT ".implode(",",$sql_columns)." FROM $database_Database_Test.$table_name where DATE>="$fromdate" AND DATE<="$todate""; $result = mysql_query($tmp); echo "<table border='1' style='width:300px'> <tr> <th>DATE</th> <th>Local_Time_Decimal</th>"; foreach($column_names as $k => $v) { if($all || (is_array($column_entries) && in_array($k,$column_entries))) echo "<th>$v</th>"; } echo "</tr>"; while( $row = mysql_fetch_assoc($result)) { echo "<tr>"; echo "<td>" . $row['DATE'] . "</td>"; echo "<td>" . $row['Local_Time_Decimal'] . "</td>"; foreach($column_names as $k => $v) { if($all || (is_array($column_entries) && in_array($k,$column_entries))) { echo "<th>".$row[$v]."</th>"; } } echo "</tr>"; } echo '</table>'; if($result){ echo "Successful"; } else{ echo "Enter correct dates"; } ?> <?php mysql_close();?> 此解决方案考虑您的特定表列,但如果您希望通用解决方案,您也可以尝试使用此SQL: $sql_names = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$database_Database_Test' AND TABLE_NAME = '$table_name'"; 并使用结果构造$column_names数组. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |