2012-06-21 2 views
0

저는 PHP로 생성 한 Employees 및 드롭 다운 목록의 데이터베이스를 가지고 있습니다. 그리고 나서 javascript를 사용하여 각 유형의 올바른 유형의 혈액을 넣으려고했습니다. 데이터베이스의 직원.데이터베이스에서로드 된 데이터에 따라 콤보 상자의 selectedIndex를 변경하십시오. (PHP)

필자는 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>"; 
} 

자바 스크립트 함수 :

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 변수를 전달할 수 없습니다 것 같다 기능 ...

내가하고 싶은 다른 드롭 다운리스트가 있습니다.

+0

당신이 맞습니다, 당신은 _directly_ 자바 스크립트에서 PHP 변수에 액세스 할 수 없습니다. PHP는 서버 측이고 JavaScript는 클라이언트 측입니다. – Bono

+0

코드에 일부 경고를 추가하십시오. 어쨌든 다음과 같이하면됩니다.''chooseItem (this, '$ row ['slcBloodType ']') '' – Sebas

답변

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 속성을 지정할 필요가 없습니다.

0

그러나 작동하지 않습니다, 당신이 직접하는 PHP 변수를 전달할 수 없기 때문에 내가

이 ... 자바 스크립트 함수에 매개 변수로 PHP 변수를 전달할 수 없습니다 것 같다 자바 스크립트.

옵션은 다음과 같습니다

  1. 가 되세요 PHP는 PHP 변수를 인쇄 한 inbetween 자바 스크립트 코드를 에코와 자바 스크립트 나중에
  2. 을 읽을 수 PHP에서 쿠키를 설정. 예를 들어 :

    < 스크립트 언어 = "자바 스크립트"유형 = "텍스트/자바 스크립트">

    VAR 수준 = "? < 수준> $ 에코 PHP";

    </스크립트>

1

먼저 당신은 나쁜 중복 된 ID가 같은 코드를 사용하여 몇 가지 문제가 있습니다. 기어는 내가 그것을 할 거라고 방법이 코드의 대규모 정리하지만 당신이 무엇을했다하는 것이 매우 가까이해야입니다 :

그것은 항상 더 나은 부하에의 페이지의 시작 부분에서

당신의 데이터를 메모리에 저장 한 다음 출력에서 ​​나중에 다시 사용하십시오. 그리고, 1 백만 라인이 없다면, 메모리가 문제가되어서는 안됩니다 ...또한 아래로 페이지 헤더

에서

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

이제 우리는 초기화 코드를 만듭니다이 시점에서 ... 당신은이 일을하기 위해 jQuery를해야합니다. 그것은 작동하는 매우 훌륭한 브라우저 독립적 방법이며 문제의 힙을 저장합니다. 이제 더 아래로 페이지

알려줘야의 HTML 부분에,이 시점에서

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

, 당신에게 HTML 출력과 아이디의 고유 있는지 확인 :

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

행운을 빕니다 이처럼 더 나은 코딩 기술을 적용하면 지금 당장 코딩을 시작하면 나중에 문제의 힙을 줄일 수 있습니다!