2015-10-02 101 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