2015-09-04 35 views
4

好的我知道這已經在(Execute PHP script on same page after selecting a dropdown list option using Ajax or JavaScript)之前得到了解答,但答案對於以前從未使用過AJAX的人來說並不是很有幫助。如果有人從下拉列表中選擇一個選項,我該如何運行一個查詢?如何使用AJAX在選擇選項選項上執行PHP查詢?

<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
</head> 

<h3>Subject</h3> 
<select name="allbooks" > 
       <option value="none" ></option> 
       <option value="allbooks" >All Books</option> 
    </select> 

<?php 
$query = "SELECT * FROM books" or die("Error in the consult.." . mysqli_error($connection)); 
    $books = $connection->query($query); 
?> 
+0

您必須將ajax請求發送到您的php頁面,然後您在php頁面中執行查詢,然後將結果返回到您的html頁面 – guradio

+0

好吧,我該如何做ajax部分? – triswill227

+0

您鏈接到的那個頁面顯示。這裏是另一個頁面,https://learn.jquery.com/ajax/ – chris85

回答

13

首先是,你必須通過觸發使用Javascript AJAX請求。但我會通過使用jQuery(一個Javascript庫)來指導您。

你的HTML:

<select name="allbooks" id="allbooks"> 
    <option value="none" ></option> 
    <option value="allbooks" >All Books</option> 
</select> 
<div id="show"> 
    <!-- ITEMS TO BE DISPLAYED HERE --> 
</div> 

之後,下載jQuery

然後讓這樣做的腳本:

<script src="jquery-1.9.1.min.js"></script> <!-- CHANGE THE JQUERY FILE DEPENDING ON THE VERSION YOU HAVE DOWNLOADED --> 
<script type="text/javascript"> 
    $(document).ready(function(){ /* PREPARE THE SCRIPT */ 
    $("#allbooks").change(function(){ /* WHEN YOU CHANGE AND SELECT FROM THE SELECT FIELD */ 
     var allbooks = $(this).val(); /* GET THE VALUE OF THE SELECTED DATA */ 
     var dataString = "allbooks="+allbooks; /* STORE THAT TO A DATA STRING */ 

     $.ajax({ /* THEN THE AJAX CALL */ 
     type: "POST", /* TYPE OF METHOD TO USE TO PASS THE DATA */ 
     url: "get-data.php", /* PAGE WHERE WE WILL PASS THE DATA */ 
     data: dataString, /* THE DATA WE WILL BE PASSING */ 
     success: function(result){ /* GET THE TO BE RETURNED DATA */ 
      $("#show").html(result); /* THE RETURNED DATA WILL BE SHOWN IN THIS DIV */ 
     } 
     }); 

    }); 
    }); 
</script> 

然後讓創造get-data.php將接收通過AJAX發送的數據。

if(!empty($_POST["allbooks"])){ 
    /* DO YOUR QUERY HERE AND GET THE OUTPUT YOU WANT */ 
    echo $output; /* PRINT THE OUTPUT YOU WANT, IT WILL BE RETURNED TO THE ORIGINAL PAGE */ 
} 

您可以查看本示例 - JSfiddle

+1

從這個謝謝你能夠實現和理解Ajax! – triswill227

+0

令人驚歎的答案,非常有幫助 –

+0

太棒了!但是,如果處理dataString對象時遇到任何問題,請嘗試在ajax部分添加:> data:{allbooks:dataString};) – Smaillns

1
var id="1"; 
$.ajax({ 
    type: 'POST', 
    url: 'yourphppage', 
    dataType: "json", 
    data: { 
     idofrow:id 
    }, 
    success: function(data) { 
     alert(data); 
    }, 
    error: function(data) { 
     alert(data); 
    } 
}); 

這是Ajax請求的samle你可以使用這個,只是改變其他領域需要查詢的時候是成功的,你可以在成功檢索數據,您可以操縱你想要什麼樣的數據使用您可以返回json,text

在你的PHP頁面,您可以獲取ID作爲

$id = ($_POST['idofrow']); 

你可以,那麼你這個ID來選擇這樣的

SELECT * FROM table where rowid = $id 

,你可以直接呼應的結果。

,瞭解更多信息只需選中這個documentation

1

Check this simple tutorial希望這會有所幫助。

 <html> 
    <head> 
    <script> 
    function showUser(str) { 
     if (str == "") { 
      document.getElementById("txtHint").innerHTML = ""; 
      return; 
     } else { 
      if (window.XMLHttpRequest) { 
       // code for IE7+, Firefox, Chrome, Opera, Safari 
       xmlhttp = new XMLHttpRequest(); 
      } else { 
       // code for IE6, IE5 
       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.onreadystatechange = function() { 
       if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
        document.getElementById("txtHint").innerHTML = xmlhttp.responseText; 
       } 
      } 
// getuser.php is seprate php file. q is parameter 
      xmlhttp.open("GET","getuser.php?q="+str,true); 
      xmlhttp.send(); 
     } 
    } 
    </script> 
    </head> 
    <body> 

    <form> 
    <select name="users" onchange="showUser(this.value)"> 
     <option value="">Select a person:</option> 
     <option value="1">Peter Griffin</option> 
     <option value="2">Lois Griffin</option> 
     <option value="3">Joseph Swanson</option> 
     <option value="4">Glenn Quagmire</option> 
     </select> 
    </form> 
    <br> 
    <div id="txtHint"><b>Person info will be listed here...</b></div> 

    </body> 
    </html> 

的getuser.php文件

<!DOCTYPE html> 
    <html> 
    <head> 
    <style> 
    table { 
     width: 100%; 
     border-collapse: collapse; 
    } 

    table, td, th { 
     border: 1px solid black; 
     padding: 5px; 
    } 

    th {text-align: left;} 
    </style> 
    </head> 
    <body> 

    <?php 
// don't use intval if your select value is not numberic 
    $q = $_GET['q']; 

    $con = mysqli_connect('localhost','peter','abc123','my_db'); 
    if (!$con) { 
     die('Could not connect: ' . mysqli_error($con)); 
    } 

    mysqli_select_db($con,"ajax_demo"); 
    $sql="SELECT * FROM user WHERE id = '".$q."'"; 
    $result = mysqli_query($con,$sql); 

    echo "<table> 
    <tr> 
    <th>Firstname</th> 
    <th>Lastname</th> 
    <th>Age</th> 
    <th>Hometown</th> 
    <th>Job</th> 
    </tr>"; 
    while($row = mysqli_fetch_array($result)) { 
     echo "<tr>"; 
     echo "<td>" . $row['FirstName'] . "</td>"; 
     echo "<td>" . $row['LastName'] . "</td>"; 
     echo "<td>" . $row['Age'] . "</td>"; 
     echo "<td>" . $row['Hometown'] . "</td>"; 
     echo "<td>" . $row['Job'] . "</td>"; 
     echo "</tr>"; 
    } 
    echo "</table>"; 
    mysqli_close($con); 
    ?> 
    </body> 
    </html> 
+0

我知道這只是一個例子,但無論如何(比對不起更安全): 永遠不要永遠不要將未經檢查的用戶輸入傳遞給mysql。 – Alar