0

I have a database of Employees and a dropdown list which I generated with PHP, then with javascript I tried to put the right type of blood of each employee in the database.

I have a database of Employees and a dropdown list which I generated with PHP, then with javascript I try to put the right type of blood for each employee in the database.

First I retrieved the data:

$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>";
}

The javascript function:

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;
                            }
            }

But is not working, it seems that I can't pass a php variable as a parameter to a javascript function...

There are others dropdown list with which I want to do that.

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 の重複など、コードにいくつかの問題がありますが、これは悪いことです。ギアは私がそれを行う方法です。これはコードの大規模なクリーンアップですが、あなたが持っていたものに非常に近くなるはずです:

ページの先頭に

データをメモリにロードし、後で出力で再利用することをお勧めします。いいえ、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. JavaScript が後で読み取ることができる PHP で Cookie を設定する
  2. PHP に JavaScript コードをエコーさせ、その間に PHP 変数を出力します。例えば:

    < script language="javascript" type="text/javascript" >

    var レベル ="< ?php echo $levels ? >" ;

    < /スクリプト >

于 2012-06-21T13:51:58.667 に答える