2013-05-28 56 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'];' –