0

我有一个员工数据库和一个使用 PHP 生成的下拉列表,然后使用 javascript 我尝试将每个员工的正确类型的血液放入数据库中。

我有一个员工数据库和一个使用 PHP 生成的下拉列表,然后使用 javascript 我尝试将每个员工的正确类型的血液放入数据库中。

首先我检索了数据:

$rsEmployee = employee::getEmployees();
        while($row = mysql_fetch_assoc($rsEmployee))
        {
    echo "
    <select id='slcBloodType' name='slcBloodType' onload='chooseItem(this, '$row['slcBloodType']')'>
    <option value='A+'> A+ </option>
    <option value='A-'> A- </option>
    <option value='B+'> B+ </option>
    <option value='B-'> B- </option>
    <option value='AB+'> AB+ </option>
    <option value='AB-'> AB- </option>
    <option value='O+'> O+ </option>
    <option value='O-'> O- </option>
    </select>";
}

javascript函数:

function elegirOption(list, value){
                array = ["A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-"];

                index = -1;
                for(var i = 0; i < array.length; i++){
                    if(value == array[i]){
                        index = i;
                        break;
                    }
                }
                if(index != -1){
                               this.selectedIndex = index;
                            }
            }

但不起作用,似乎我无法将 php 变量作为参数传递给 javascript 函数......

还有其他下拉列表我想这样做。

4

3 回答 3

1

为什么不这样做:

$blood_types = array("A+", "A-", ...);
echo '<select>';

while(....) {

  foreach($blood_types as $blood_type) {
    echo '<option';
    if($blood_type == $row['slcBloodType'])
       echo 'selected="selected"';
    echo '>'.$blood_type.'</option>';
  }
}

您不必指定 value 属性,因为它与文本相同。

于 2012-06-21T13:51:10.957 回答
1

首先,您的代码有几个问题,例如重复的 ID,这很糟糕。Gere 是我的做法,这是对您的代码的大规模清理,但应该使其非常接近您所拥有的:

在页面的开头

最好将数据加载到内存中,然后稍后在输出中重用它。不,除非你有 100 万行,否则内存应该不是问题......

<?php
//Read my data i need to work with
$rsEmployee = employee::getEmployee();
$employees = array();
while($row = mysql_fetch_assoc($rsEmployee)){
    $employees[] = $row;
}

在页眉的下方

现在,我们将创建初始化代码……您需要 JQUERY 来完成这项工作。这是一种很好的与浏览器无关的工作方式,可以为您省去很多麻烦。

?><script>
    $(function(){ <?php
        foreach($employees as $employee){ ?>
        $('#slcBloodType<?php echo $employee['id']; ?>').val('<?php echo $employee['slcBloodType']; ?>');
        <?php } ?>
    });
</script><?php

在页面的 HTML 部分进一步向下

好的,此时,现在您输出 HTML 并确保您的 id 是唯一的:

<?php foreach($employees as $employee){ ?>
<select id="slcBloodType<?php echo $employee['id']; ?>" name="slcBloodType[<?php echo $employee['id']; ?>]">
    <option value='A+'> A+ </option>
    <option value='A-'> A- </option>
    <option value='B+'> B+ </option>
    <option value='B-'> B- </option>
    <option value='AB+'> AB+ </option>
    <option value='AB-'> AB- </option>
    <option value='O+'> O+ </option>
    <option value='O-'> O- </option>
</select>
<?php } ?>

祝你好运应用这种更好的编码技术,如果你现在开始这样编码,它将为你省去很多麻烦!

于 2012-06-21T13:54:20.707 回答
0

但不起作用,似乎我无法将 php 变量作为参数传递给 javascript 函数......

这是因为您不能直接将 PHP 变量传递给 javascript。

您的选择是:

  1. 在 PHP 中设置 cookie,javascript 以后可以读取
  2. 让 PHP 回显 javascript 代码,并在其间打印出 PHP 变量。例如:

    <脚本语言=“javascript”类型=“文本/javascript”>

    var 级别 =“< ?php echo $levels ?>” ;

    </脚本>

于 2012-06-21T13:51:58.667 回答