2013-05-28 58 views
0

我有以下代碼組合框onchange事件選擇數據庫值

<form class="form-horizontal" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" > 
    <br /><div class="controls"><h1><?php echo $full_name; ?></h1></div><br /> 
    <?php echo printErrorMessage($errors); ?> 
    <fieldset><legend>Add Subject for <u>"<?php echo $full_name; ?>"</u></legend></fieldset> 

    <!-- select all courses --> 
    <div class="control-group"> 
    <label class="control-label">Subject</label> 
    <div class="controls inline"> 
     <select id="courses" class="input-xlarge" name="courses" onchange="getSubj()"> 
     <option value="0">Courses</option> 

      <?php 
      $pstmt = Course::findAll(); 
      while($row = $pstmt->fetch(PDO::FETCH_ASSOC)){   
       echo '<option value="' . $row['id'] . '" >'; 
       echo $row['title'] . '</option>'; 
      } 
      ?> 


      <?php //echo displayCombo2(Course::findAll()); ?> 
     </select> 
    </div> 
    </div> 

<?php echo $couid; ?> 

    <!-- select all subject --> 
    <div class="control-group"> 
    <label class="control-label">Subject</label> 
    <div class="controls inline"> 
     <input name="emp_id" value="<?php echo $employee_id; ?>" type="hidden" /> 
     <select class="input-xlarge" name="subject"> 
     <option value="0" onchange="">Subject</option> 


      <?php 
      $pstmt = Subject::findAll(); 
      while($row = $pstmt->fetch(PDO::FETCH_ASSOC)){   
       echo '<option value="' . $row['id'] . '" >'; 
       echo $row['title'] . '</option>'; 
      } 
      ?> 



      <?php //echo displayCombo2(Subject::findAll()); ?> 
     </select> 
    </div> 
    </div> 


    <div class="control-group"> 
    <label class="control-label">Description</label> 
    <div class="controls"> 
     <input name="desc" class="input-xlarge" type="text" placeholder="Description"> 
    </div> 
    </div> 

    <div class="control-group"> 
    <div class="controls"> 
     <button type="submit" class="btn btn-primary" name="submit">Save Course</button> 
    </div> 
    </div> 
</form> 

的用戶將獲得從一個組合框具有所有的課程先選擇兩個項目。一旦用戶選擇課程,我想回到數據庫,並只選擇鏈接到所選課程的科目。我可以通過SQL來做到這一點,但我不知道如何在這裏做到這一點。

我必須提交回服務器來處理PHP嗎?我的意思是,圍繞select標籤form標籤,以便它可以提交給自己並獲取與該主題相關的新值。問題是,這已經在一個表單中。

我該如何做到這一點?

下面

是jQuery代碼我試過,以及獲得的數據,但它是困難的,因爲該特定頁面上的頁進程的東西來解釋和只返回回顯比如

<script type="text/javascript"> 
    function getSubj(){ 
    var courseID = $('#courses').val(); 
    $.post('getSubjects.php', {postCourseID:courseID}, 
      function(data){ 
      if(data>="1"){ 
       $('#res').html(data); 
      } 
      }); 

    //alert("working wit ooooooo " + courseID); 
    } 
</script> 

問題是如何存儲存儲在「數據」(功能(數據))在PHP,所以我可以執行的東西

感謝

回答

1

你的懷疑是正確的值。爲了完成你想要的東西,你必須創建一個單獨的表單並將其提交給PHP腳本。這是諸如PHP之類的服務器端語言的特徵之一。數據提交必須由用戶發起,頁面必須完全重新加載。

這可以看作是對你設計的限制,這就是爲什麼許多網站用JavaScript等客戶端腳本來補充它們的服務器端腳本的原因。 (jQuery是一個流行的JavaScript框架,可以使JavaScript更簡單)您可以通過一種名爲AJAX的方法來完成此操作。

AJAX基本上是不同的網絡技術的混合,允許客戶端通過點擊按鈕或從select元素中選擇特定值等操作來啓動對服務器端腳本的調用。這個電話是在後臺進行的,所以用戶甚至不必知道它正在發生。然後,頁面可以通過JavaScript與返回的服務器端數據實時更新。

我更喜歡做的是使用由jQuery庫提供的.ajax()函數。這是一個非常乾淨和無痛的實現。閱讀上面鏈接中的文檔以獲取更多關於實施的具體信息。

+0

正如你所看到的,我已經更新了與jquery的問題,jquery處理指定頁面上的東西,但只返回echo語句不介意返回回顯但我如何將該值存儲到本地php變量? – Amjad

+0

由於您使用'$ .post()'函數,您的'postCourseID'值將通過'$ _POST'數組發送到PHP文件。因此只需像這樣存儲它:'$ postCourseId = $ _POST ['postCourseId'];' –