2015-10-02 100 views
1
TABLE wp_thesis   TABLE wp_courses 

Thesis_ID Thesis_Title  Course_ID Thesis_ID Course 
1   thesis1   1   1   course1 
2   thesis2   2   1   course2 
          3   2   course1 
          4   2   course2 
          5   2   course3 

我有一個select調用showText函數onchange。發送SQL查詢參數到函數

$query = "SELECT * FROM wp_thesis"; 
$result = mysqli_query($conn,$query);?> 

<select name="ThesisTitle" onchange="showText(x,y)" required=""> 
    <option disabled='disabled' selected='selected' value=''></option>"; <?php 
    foreach ($result as $row) 
    { 
     echo "<option value= {$row[Thesis_ID]}>{$row[Thesis_Title]}</option>"; 
    } 
echo"</select><br />";?> 

首先想到的是送選的值(平變化=「showText(THIS.VALUE)」),然後有showText函數內的SQL查詢,以獲得這兩個值我想要的。我讀過你不能在函數內執行sql查詢,因爲Javascript是客戶端,所以我想在php上執行sql查詢,然後將值發送到showText函數。我想要的查詢是這樣的:

$query = "SELECT Course FROM wp_courses WHERE Thesis_ID={$row[Thesis_ID]} "; 
$courses = mysqli_query($conn,$query); 
$coursesNo = mysqli_num_rows($courses); 

我想發送的Tha值是$ courses和$ coursesNo。是否有必要在同一個php文件中獲得select的值,而不使用按鈕或類似的東西?

+0

只要將所有選項回顯到頁面上,只需將課程和課程編號設置爲每個選項的數據屬性即可。當select onchange事件觸發時,您可以選擇事件目標的數據屬性來獲取您的x和y值。 – Shilly

+0

@Shilly我試過了,但我不知道我是否正確地做了這件事。我以前從未使用數據屬性。 – Kiki

+0

你需要ajax! – MozzieMD

回答

0

我終於找到了我需要的東西。我張貼代碼。

<script language="javascript" type="text/javascript"> 
//Browser Support Code 
function showCourses(str){ 
    var ajaxRequest; // The variable that makes Ajax possible! 
    try{ 
     // Opera 8.0+, Firefox, Safari 
     ajaxRequest = new XMLHttpRequest(); 
    }catch (e){ 
     // Internet Explorer Browsers 
     try{ 
      ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
     }catch (e) { 
      try{ 
       ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
      }catch (e){ 
       // Something went wrong 
       alert("Problem with your browser!"); 
       return false; 
      } 
     } 
    } 

    // Create a function that will receive data 
    // sent from the server and will update 
    // div section in the same page. 
    ajaxRequest.onreadystatechange = function(){ 

     if(ajaxRequest.readyState == 4){ 
      var ajaxDisplay = document.getElementById('courses'); // where it should be displayed 
      ajaxDisplay.innerHTML = ajaxRequest.responseText; 
     } 
    } 

    // Now get the value and pass it to server script. 
    var queryString = "?thesis_id=" + str ; 
    ajaxRequest.open("GET", "http://localhost/wordpress/get_thesis/" + queryString, true); 
    ajaxRequest.send(null); 
} 

從選擇:

<select name="ThesisTitle" id="link_block" onchange="showCourses(this.value)" required=""> 
    <option disabled='disabled' selected='selected' value=''></option>";<?php 
    foreach ($result as $row) 
    { 
     echo "<option value= {$row[Thesis_ID]}>{$row[Thesis_Title]}</option>"; 

    } 
    echo"</select><br />";?> 

我發送Thesis_ID到http://localhost/wordpress/get_thesis/這是一個PHP文件,我需要查詢。

2

獲取渲染選項之前的X和Y座標並將其作爲數據屬性提供。

<select name="ThesisTitle" onchange="showText(this)" required=""> 
     <option disabled='disabled' selected='selected' value=''></option>"; <?php 
     foreach ($result as $row) 
     { 
      echo "<option data-x={$row[Thesis_X]} data-y={$row[Thesis_Y]} value= {$row[Thesis_ID]}>{$row[Thesis_Title]}</option>"; 
     } 
    echo"</select><br />";?> 

只是在這之後去showText(本)使用此功能參數與

function showText(obj){ 
    var x_val = $(obj).attr("data-x"); 
    var y_val = $(obj).attr("data-y"); 
    } 

希望這有助於你得到的屬性。

+0

Foreach正從表wp_thesis獲取值。我想要的x和y值不在wp_thesis表內,它們在wp_courses內。 – Kiki

+1

然後編輯查詢,使其與該表連接。 :) – Shilly

+0

@Shilly我想要的課程和課程沒有選定的論文。在我的問題結尾查看查詢。當有人選擇論文題目時,我想獲得與本論文相關的課程和課程的數量。我不知道我是否清楚自己。 – Kiki