0

ユーザーがテーブル/データベースをクエリできるフォームを作成しています。ユーザーは、HTML ドロップダウン メニューを使用して、ディレクトリからロードするテーブルを選択します。このドロップダウン メニューは、ディレクトリからファイル (またはテーブル) を読み取って表示する PHP ループを利用しています。同じテーブルの複数のクエリを実行するには、ユーザーが最初にチェックボックスを選択して、クエリ対象のテーブルを同じディレクトリにダウンロードし、次に、同じドロップダウン メニューからクエリ対象のファイルを選択します。わかる?

ただし、送信を押した後、新しく作成されたファイルがドロップダウン メニューに表示されません。ページを更新すると、ファイルが表示されます。

質問: 送信ボタンが押されるとすぐに、ドロップダウン ボックス (および 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());

}

4

1 に答える 1

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.  

    ?>
于 2013-03-12T23:13:35.153 に答える