使用存储的会话变量预填充PHP动态选择选项

时间:2013-05-27 15:17:17

标签: php mysql phpquery dynamicquery

我再次挠挠头,需要你的帮助。

我所拥有的是一个提交到第二页的表单,启用了会话,我在表单上存储名称值2字段并在会话中设置它们的值名称,以便用户返回页面时的用户名将在文本字段中填充。我有这个工作正常..

我正在存储的第二页

$_SESSION['captured_by'] = $_POST['captured_by'];
$_SESSION['prid'] = $_POST['prid'];

无论其..

我遇到的问题是获取一个从查询中填充的选项以具有相同的功能,这样当用户返回页面时,已保存在会话中的所选选项将保留该选项。框而不是必须再次选择它。

以下是我的内容:

表单页面: 这确实有效,并在返​​回页面时返回capture_by文本

<fieldset><legend>Lesson Added By *</legend>
<p class="multiple">(Required - Logon ID)</p>
<input name="captured_by" maxlength="12" id="searchfield" type="text" value="<?php 
if(isset($_SESSION['captured_by'])){print stripslashes($_SESSION['captured_by']);}
else{print "   ";} ?>">
</fieldset>

问题代码是这个

<select id="searchfield" name="prid">

<?php
 $query = "SELECT project_name, project_id FROM ll_project ORDER BY project_name ASC;";
 $result = mysql_query($query) or die(mysql_error());

 while($row = mysql_fetch_assoc($result)) {

 echo '<option value="'.$row['project_id'].'">'.$row['project_name'].' | '.$row['project_id'].'</option>';
 }
?>
</select>
</fieldset>

我需要编辑最后一节,以便从存储的会话值中选取以前选择的选项值。

希望有人可以帮忙吗? 非常感谢。 Tazzy

2 个答案:

答案 0 :(得分:1)

试试这个,

<select id="searchfield" name="prid">

<?php
 $query = "SELECT project_name, project_id FROM ll_project ORDER BY project_name ASC;";
 $result = mysql_query($query) or die(mysql_error());

 while($row = mysql_fetch_assoc($result)) {

 echo '<option value="'.$row['project_id'].'"'. ((isset($_SESSION['prid']) && !empty($_SESSION['prid']) && ($_SESSION['prid'] == $row['project_id'])) ? 'selected="selected"' : '') .'>'.$row['project_name'].' | '.$row['project_id'].'</option>';
 }
?>
</select>
</fieldset>

答案 1 :(得分:0)

当有人更改选择时,您可以简单地使用ajax。

$('select#searchfield').change(function(){
   $.ajax({
      type: 'GET',
      url: 'changeSession.php', // This is the url that will be requested
      data: {prid: $('select#searchfield').val()},
      success: function(html){ 
        // nothing really happens because you simply update your session 
      },
      dataType: 'html'
    });
});

然后在changeSession.php

if(isset($_GET['projectId']{
   $_SESSION['captured_by'] = $_POST['prid'];
}

那应该做的工作。然后,在生成表单时添加条件,如果$ _SESSION ['prid']不为空,则添加selected ='selected'。