2017-02-18 7 views
0

私はデータベース(生徒の名前と姓)によって入力されるドロップダウンリストを持っています。これは正常に動作します。いくつかのjavascriptがありますが、それは私の質問には関係ありません。コード:ドロップダウン選択後、mysqlデータベースの結果を選択して同じページをリフレッシュします

<div class="dropdown"> 
    <button onclick="myFunction()" class="dropbtn">Find person ></button> 
     <div id="Dropdown" class="drop-content"> 
     <input type="text" placeholder="Search" id="myInput" 

アイデアは、ユーザーのドロップダウンリストから人を選択してから、その学生については、ドロップダウン(これがないページのリロード)と同じページに出力するためのものです。現時点では何もしません。エラーも表示されません。ここで

+0

あなたは 'output.php'から'応答 'として何を得ているのか教えてください。 –

+0

Imは何も起こっていないので、何も起こっていない瞬間に応答が得られません – Jub

+0

'console.log(response)'を実行すると出力はどうなりますか? - あなたのコンソールの 'undefined'または空白行 –

答えて

0

は私が始めるだろうかです:データベースから引き出し、オプションで選択をセットアップページになります

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
</head> 
<body> 
<div class="dropdown"> 
    <button class="dropbtn">Find Student ></button> 
    <div id="myDropdown" class="dropdown-content"> 
     <input type="text" placeholder="Search.." id="myInput" onkeyup="filterFunction()"> 
     <div id="studentdrop"> 
      <?php 
      // $pdo = new PDO('mysql:host=localhost;dbname=thename', 'root', 'root'); 
      // $result = $pdo->query('SELECT student_forename, student_surname FROM students'); 
      $result = array(
       array("student_id" => 1, "student_forename" => 'Joe', "student_surname" => 'Jones'), 
       array("student_id" => 2, "student_forename" => 'Mary', "student_surname" => 'Jones'), 
       array("student_id" => 3, "student_forename" => 'Perry', "student_surname" => 'Wallace') 
      ); 
      echo "<select id='user_id'>"; 
      foreach ($result as $row) { 
       echo '<option value="' . $row['student_id'] . '">' . $row['student_forename'] . " " . $row['student_surname'] . '</option>'; 
      } 
      echo "</select>"; 
      ?> 
     </div> 
    </div> 
</div> 

<div class="data"></div> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.dropbtn').click(function() { 
      $.get("output.php", { id: $('#user_id option:selected').val() }, function(data) { 
       $('.data').text(data); 
       console.log(data); 
      }); 
     }); 
    }); 
</script> 

</body> 
</html> 

。 dbをセットアップしてテストする時間がなかったので、修正する必要があります。しかし、結果はselectオプションで使用できる配列です。

JavaScriptを更新して、取得リクエストでユーザーデータを取得し、返されたデータを<div>タグに取り込みます。

<?php 
$id = $_GET['id']; 
switch($id) { 
    case 1: 
     echo "This is student Joe Jones"; 
     break; 
    case 2: 
     echo "This is student Mary Jones"; 
     break; 
    case 3: 
     echo "This is student Perry Wallace"; 
     break; 
} 

これは単純なページですが、データベースを照会し、必要なすべてのデータを返すためにそれを変更することができます:ここで

output.phpページです。これは、index.phpページからのajax getリクエストのidに渡されたものを使用しています。私は入力の検証とそれが浄化されたデータであることを確認するためのチェックを追加することをお勧めします。

ディレクトリを作成し、そこにこれらの2つのファイルを配置すると、PHPサーバーでビルドして実行できます。私がやりたいことは次のとおりです:php -S localhost:8080

質問がある場合はお知らせください。

0

フロー - ユーザーによって

ドロップダウン変更 - > JSでの機能がトリガ - >でPHPファイルを呼び出し、応答を返す - > JS関数で応答を取得する - >あなたのDOMを更新します。

他のファイルと同じディレクトリにoutput.phpを作成する必要があります(構造に基づいて後で変更することができます)。これでJS関数ではPHPファイルに何も渡されません。選択されたデータ。

JS編集: POSTを使用する場合はJSON形式で、GETを使用する場合はURLでデータを渡します。直接 デコード$ _POSTでJSONデータ[ 'VAR_NAME']や$ _GET [ 'VAR_NAME']を使用してパラメータを取得するアクセス:

PHP編集。

それはうまくいくはずです...もし何かがわかったら教えてください。

関連する問題