我正在构建一个允许用户查询表/数据库的表单。用户通过HTML下拉菜单从目录中选择要加载的表。此下拉菜单由PHP循环提供支持,该循环读取然后显示目录中的文件(或表)。为了实现同一个表的多个查询,用户首先选择一个复选框将其查询的表下载到同一目录中,然后THEN SECOND从同一个下拉菜单中选择查询的文件。合理?
然而,在点击提交后,下拉菜单中缺少新创建的文件。刷新页面后会显示该文件。
现在提出一个问题:显示新下载的表的最佳方法是什么,以便在按下提交按钮后立即通过下拉框(和PHP循环)识别它。我玩过javascript location.reload();但无济于事。请参阅以下简化代码:
<html>
<form action = "" method = "post">
Table File: <select name="hfile">
<?php
$dir = "/Director/to/table/files";
$table_files = scandir($dir, 1);
//This is going to create the drop-down menu displaying all files in directory $dir.
$i = 0;
while($i <= count($table_files)) {
echo "<option value = $table_files[$i]> $table_file[$i] </option>";
$i = $i + 1;
}
?>
</select>
<!-- Below are just two of the form elements -->
<input type ="checkbox" name="download_table" value="download"> Download Queried Table
<input type = "submit" value="Submit" name="submit_query">
//Variables are set once the submit button is pressed
if(isset($_POST["submit_query"]))
{
$download_table = $_POST['download_table'];
}
//Download the table (if the download checkbox is on)
if(isset($download_table)) {
$file = "query.txt";
mysql_query("SELECT * FROM table INTO OUTFILE \"$file\" FIELDS TERMINATED BY ','") or die(mysql_error());
}
答案 0 :(得分:0)
在提出问题之后,我意识到了我的错误,并想详细说明以避免一个悬而未决的问题。存在几个PHP if语句来确定如何查询表。在每个if语句中,都有一个嵌入语句,可以按原始问题中的描述下载已排队的表。但是,如果没有查询,则在用户请求时没有声明来处理下载。在检查整个应用程序的功能时,这会引起麻烦。
如果有兴趣的话,这里是完整的代码。
<form action = "" method = "post">
Hypo File: <select name="hfile">
<?php
$dir = "/Applications/MAMP/db/mysql/IESE";
$hypo_files = scandir($dir, 1);
$i = 0;
while($i <= count($hypo_files) - 4) {
echo "<option value = $hypo_files[$i]> $hypo_files[$i] </option>";
$i = $i + 1;
}
?>
</select>
<br><br>
<fieldset>
<legend>Hypo Query:</legend>
<br>
Min Value: <input type = "text" name = "min_value">
<!-- NOTE the names are named in relation to the col_name fields i.e. col names is greater than the field to the left and less than field to the right. -->
<input type="radio" name="greater_than" value= ">="> <=
<input type="radio" name="greater_than" value= ">"> <
<!-- THIS IS THE DROP DOWN BOX FORM! (and an html comment) -->
<select name="hypo_cols">
<option value="latitude_deg">latitude deg</option>
<option value="longitude">longitude</option>
<option value="depth">depth</option>
<option value="origin_time">origin time</option>
<option value="magnitude">magnitude</option>
<option value="maximum_azimuthal_gap">max azimuthal gap</option>
<option value="distance_to_nearest_station_km">distance to nearest station km</option>
<option value="rms_travel_time_residual">rms travel time residual</option>
<option value="version">version</option>
<option value="auxiliary_remark_from_program">auxiliary remark from program</option>
</select>
<input type="radio" name="less_than" value = "="> ==
<input type="radio" name="less_than" value= "<="> <=
<input type="radio" name="less_than" value= "<"> <
Max/Equal to Value: <input type = "text" name = "max_value"> <br> <br>
</fieldset>
<div id="forum_options">
<!-- THIS IS THE CHECKBOX TO DISPLAY HYPO TABLE -->
<input type ="checkbox" name="display_table" value="display"> Print Queried Table
<input type ="checkbox" name="display_map" value="map"> Print Map from Query
<input type ="checkbox" name="download_table" value="download"> Download Queried Table <br> <br>
<div id="submit">
<input type = "submit" value="Submit" name="submit_query">
<input type=button value="Refresh" onClick="window.location.reload()">
</div>
</div>
</form>
<?php
// What are we going to do once the submit button is pressed?
if(isset($_POST["submit_query"]))
{
//Lets define all the form values as $ without GET/POST. Seems to read better in the query further below.
$hfile = $_POST['hfile'];
$min_value = $_POST['min_value'];
$greater_than = $_POST['greater_than'];
$hypo_cols = $_POST['hypo_cols'];
$less_than = $_POST['less_than'];
$max_value = $_POST['max_value'];
$display_table = $_POST['display_table'];
$display_map = $_POST['display_map'];
$download_table = $_POST['download_table'];
//DEFINE and POPULATE the TABLE with $hfile. This is the only bit that is done no matter what else the form says!
$load_hypo_param = "LOAD DATA INFILE '/Applications/MAMP/db/mysql/IESE/$hfile' INTO TABLE hypo FIELDS TERMINATED BY ','";
mysql_query($load_hypo_param ) or die(mysql_error());
}
//a
if($less_than == "=")
{
//echo "part a successful. <br>";
$result1 = mysql_query("SELECT * FROM hypo WHERE $hypo_cols $less_than $max_value") or die(mysql_error());
//Lets download(?) the table (if the download checkbox is on)
if(isset($download_table)) {
$file = "query.txt";
unlink("/Applications/MAMP/db/mysql/IESE/query.txt");
mysql_query("SELECT * FROM hypo WHERE $hypo_cols $less_than $max_value INTO OUTFILE \"$file\" FIELDS TERMINATED BY ','") or die(mysql_error());
}
}
//b
else if($min_value != NULL and $max_value != NULL) //isset($min_value) and isset($max_value))
{
//echo "part b successful" . "<br>" ;
$result1 = mysql_query("SELECT * FROM hypo WHERE $hypo_cols BETWEEN $min_value AND $max_value") or die(mysql_error());
if(isset($download_table)) {
$file = "query.txt";
unlink("/Applications/MAMP/db/mysql/IESE/query.txt");
mysql_query("SELECT * FROM hypo WHERE $hypo_cols $less_than $max_value INTO OUTFILE \"$file\" FIELDS TERMINATED BY ','") or die(mysql_error());
}
}
//c
else if($min_value != NULL)
{
//echo "part c successful" . "<br>";
$result1 = mysql_query("SELECT * FROM hypo WHERE $hypo_cols $greater_than $min_value") or die(mysql_error());
if($download_table != NULL) {
$file = "query.txt";
unlink("/Applications/MAMP/db/mysql/IESE/query.txt");
mysql_query("SELECT * FROM hypo WHERE $hypo_cols $greater_than $min_value INTO OUTFILE '$file' FIELDS TERMINATED BY ','") or die(mysql_error());
}
}
//d
else if($max_value != NULL)
{
//echo "part d successful" . "<br>";
$result1 = mysql_query("SELECT * FROM hypo WHERE $hypo_cols $less_than $max_value") or die(mysql_error());
if(isset($download_table)) {
$file = "query.txt";
unlink("/Applications/MAMP/db/mysql/IESE/query.txt");
mysql_query("SELECT * FROM hypo WHERE $hypo_cols $less_than $max_value INTO OUTFILE \"$file\" FIELDS TERMINATED BY ','") or die(mysql_error());
}
}
else
{
echo "Nothing seems to be set. <br>";
$file = "query.txt";
unlink("/Applications/MAMP/db/mysql/IESE/query.txt");
mysql_query("SELECT * FROM hypo INTO OUTFILE \"$file\" FIELDS TERMINATED BY ','") or die(mysql_error());
$result1 = mysql_query("SELECT * FROM hypo");
$nothing_set=TRUE;
}
//echo all results.
if(!isset($nothing_set)) {
echo "<h4>" . "Query successful and involves:" . "<br>" . "$hypo_cols " . "$greater_than " . "$min_value " . "<br>" . "$hypo_cols " . "$less_than " . "$max_value" . "<br>" . "</h4>";
}
//Lets print the map (if the print map checkbox is on)
if(isset($display_map)) {
//lets create a string of lat long values from the result1 queried table.
?>