2016-05-17 6 views
1

私は目標がユーザーが選択した特定のキルンのプロットデータポイントであるWebプログラムを持っています。私の問題は、ユーザーが新しいKilnを選択したいときです。別のJSONページをすべて、選択した新しいテーブルからデータを取得する場所に更新するにはどうすればいいですか?ドロップダウンリストの選択に基づいて特定のテーブルをPHPクエリで選択するにはどうすればよいですか?

ここに私のドロップダウンリストのcreaterコードです。

<p class="navleft"> 
 
Kiln Number:<br> 
 
<select name="kilns" id="kilns"> 
 
<?php 
 
$sql = "SHOW TABLES FROM history"; 
 
$result = mysqli_query($con,$sql); 
 

 
while($table = mysqli_fetch_array($result)) { // go through each row that was returned in $result 
 
\t echo ("<option value='". $table[0] . "'>" . $table[0] . "</option>"); 
 
} 
 
?> 
 
</select> 
 
</p>

そして、ここで私は、テーブル内の値からすべてのデータを選択して、JSONファイルにそれを回すPHPページの一つです。 k1_historyを言うている

<?php 
 
$con = mysqli_connect("localhost","KilnAdmin","KilnAdmin","history"); 
 

 
// Check connection 
 
if (mysqli_connect_errno()) 
 
    { 
 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
 
    } 
 

 
mysqli_select_db($con,"history") or die ("no database"); 
 

 
//Fetch Data 
 
$query = "SELECT * FROM k1_history LIMIT 1000"; 
 
$result = mysqli_query($con,$query); 
 

 
if ($result) { 
 
\t $data = array(); 
 
\t while($row = mysqli_fetch_assoc($result)) { 
 
\t \t //$data[] = $row; 
 
     $data[] = array(
 
\t \t \t "date" => $row[ 'Timestamp' ], 
 
\t \t \t "value" => $row[ 'DryBulbFront' ] 
 
\t \t); 
 
    } 
 
\t echo json_encode($data); 
 
} 
 
else { 
 
\t echo "Error"; 
 
} 
 
?>

、どのように私はそれが他のページからDropboxのメニューでユーザーからの選択であることを得ることができますか?

+0

実際に質問が出ることはありませんが、選択した値をdb \ファイルに保存できませんか? –

+0

上記のコードは、スクリプト間で変数を渡す方法を知らなくても得られないレベルの知識を示しているので、あなたの質問はかなり奇妙です。フォーム、アクション、サーバー変数、またはajaxを理解する必要があることを理解する。これらのすべての概念を理解するための答えを作成するのは難しいことです。特に上記の事実を与えられています。このコードはどこで入手できましたか? –

答えて

0

あなたが必要とするものを正しく理解していれば、必要なものはAjaxです。

あなたが選択したものにデータを取り込み、選択するたびに、ユーザーが選択したものを処理する.phpにAjaxコールを発信する必要があります。あなたの場合、この.phpファイルは、ユーザーが選択したテーブル名を取得し、クエリを実行していくつかの結果をHTMLに返します。デモンストレーションの目的のために、例を挙げて説明します。

あなたは、このような選択を持っているのは、あなたの.htmlで言ってみましょう:

Select Value: 
    <select name="kilns" id="kilns"> 
     <option value="1">Option 1</option> 
     <option value="2">Option 2</option> 
     <option value="3">Option 3</option> 
    </select> 

オプションの値プロパティで定義されたあなたは、私が言及したの.phpファイルへのパスつもりであるかです。 var data = {'kilns': this.value};(これは何が行うことはどこの選択値、ユーザーがselectから何かを選択するたびに、この関数が呼び出されるということです

$('#kilns').on('change', function(e) { 
    var data = {'kilns': this.value}; 
    $.ajax({ 
     type: 'POST', 
     url: 'submit.php', 
     data: data, 
     dataType: 'json' 
    }).done(function(msg) { 
     alert(msg); 
    }); 
}); 

:あなたが持っているいくつかのscriptタグの内側ので、あなたがアヤックスを使用する、ということを行うには)がPOSTを介してsubmit.phpというファイルに送信されています。 submit.phpは、次のようになります。ここで起こる

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $kilns_error = 0; 

    if (isset($_POST['kilns']) && !empty($_POST['kilns'])) { 
     $kilns = $_POST['kilns']; 
    } else { 
     $kilns = null; 
     $kilns_error = 1; 
    } 

    if ($kilns_error != 1) { 
     echo json_encode($kilns); 
    } 
} 

私たちは私たちが実際にPOST REQUESTを持って確認した後、我々は値が未定義か空であるかどうかを確認しています。この単純なチェックの後、echo json_encode($kilns);に進み、最初に送信した値を.phpスクリプトに返します。これは実際にユーザーが選択した値です。

あなたのケースでは、実際に.phpスクリプトでいくつかのことを行い、それを呼び出した値を返すだけでなく、何をする必要がありますか。また、ユーザーが実際のテーブルを選択し、データベースの問題を作成しようとしていないことを確認するために、ホワイトリストに記載されている値を渡すことを忘れないでください。実際に選択する前に選択してください。 mysqliとPDOの準備文を見てください。

+1

ありがとう!完璧に動作します。 –

+0

私はそれを聞いてうれしいです! :)あなたが質問の将来の訪問者を助けるように頼んだものを満たす場合、この答えを解決策としてマークしてください。 –

1

このようなシナリオでは、SQLインジェクションを避けるために強く注意する必要があります。Konstantinos Vytiniotisが述べたホワイトリストアプローチを使用して、これをチェックしてくださいHow can I prevent SQL injection in PHP?

関連する問題