繁体   English   中英

根据从数据库加载的数据更改组合框中的selectedIndex(PHP)

[英]Change the selectedIndex in a combo box according to data loaded from a database (PHP)

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

我有一个Employees数据库和一个用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函数...

还有其他下拉列表,我想用它做。

为什么不这样做:

$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属性,因为它与文本相同。

首先,您的代码有几个问题,例如重复的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 } ?>

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

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

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

你的选择是:

  1. 在PHP中设置cookie,javascript可以在以后阅读
  2. 有PHP回显javascript代码和inbetween有PHP变量打印出来。 例如:

    <script language =“javascript”type =“text / javascript”>

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

    </ script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM