2013-03-31 1 views
0

코드입니다 :로 MYSQL_ASSOC 문제가 여기에

<select name="op1" id="op1" class="op1"> 
    <option value=""> -- please choose -- </option> 
    <?php 
     while($row = mysql_fetch_array($query)){ 
      $id = $row['id']; 
      $name = $row['name']; 
      echo '<option value="'.$id.'">'.$name.'</option>'; 
     } 
    ?> 
</select> 
<br /> 
<select name="op2" id="op2" style="margin-top:20px" class="op2"> 
    <option value=""> -- please choose -- </option> 
    <?php 
     $query2 = mysql_query("SELECT * FROM cat2 WHERE cor = '$id' ORDER BY id ASC"); 
     while($row2 = mysql_fetch_array($query2)){ 
      $id2 = $row2['id']; 
      $name2 = $row2['name']; 
      echo '<option value="'.$id2.'">'.$name2.'</option>'; 
     } 
    ?> 
</select> 

내가하고 싶은 것은 첫 번째 루프에서 선택 $ ID가이고 두 번째 루프 쿼리를 사용하지만 캔트이 때문에 변수의 작동하도록하는 것 파이프 라인, 누구든지이 문제를 해결할 수 있습니까?

+0

양식을 제출해야합니다. –

+0

두 번째 SELECT에서 값을 채울 때 첫 번째 SELECT에서 사용자가 선택한 값을 사용 하시겠습니까? – JoLoCo

+2

첫 번째 루프의'$ id'는 두 번째 쿼리에서 사용하기를 원하십니까? PHP는 브라우저에서 페이지를 보내기 전에 서버에서 실행되므로 사용자가 선택하는 내용에 의존 할 수 없습니다. 이를 위해서는 AJAX를 사용해야합니다. – Barmar

답변

0
<?php 
$ids=array(); 
    while($row = mysql_fetch_array($query)){ 
      $id = $row['id']; 
     $ids[]=$id; 
     $name = $row['name']; 
     echo '<option value="'.$id.'">'.$name.'</option>'; 
    } 
?> 

제 2 php 블록;

<?php 
foreach ($ids as $id) { 
    $query2 = mysql_query("SELECT * FROM cat2 WHERE cor = '$id' ORDER BY id ASC"); 
    while($row2 = mysql_fetch_array($query2)){ 
     $id2 = $row2['id']; 
     $name2 = $row2['name']; 
     echo '<option value="'.$id2.'">'.$name2.'</option>'; 
    } 
} 
?> 

다음 코드 줄은 아약스를 사용하고 있습니다. ajax.php라는 새 파일을 만들어야합니다. 같은 파일을 사용하여 문서의 맨 위에있는 ajax.php의 코드를 모두 추가하고 (끝을 추가하고 끝에) 문서를 변경하고 ... load ('ajax.php'... with ... load (''...

doc의 head에 스크립트를 배치하면 페이지의 모든 요소가로드 된 후 실행하기 위해 $ (function() {})에 래핑해야합니다.

코드를 테스트하지 않습니다.하지만 잘못된 곳이야 경우 여기에 우리 제발 사람의 의견. 이동합니다.

AJAX

<select name="op1" id="op1" class="op1"> 
     <option value=""> -- please choose -- </option> 
     <?php 
      while($row = mysql_fetch_array($query)){ 
       $id = $row['id']; 
       $name = $row['name']; 
       echo '<option value="'.$id.'">'.$name.'</option>'; 
      } 
     ?> 
    </select> 
    <br /> 
    <select name="op2" id="op2" style="margin-top:20px;" class="op2"> 

    </select> 

<script type="text/javascript"> 
     $('#op1').change(function() { 
      $('#op2').load('ajax.php',{id:$(this).val()}); 
    }); 

</script> 

ajax.php 파일 :

<?php if (isset($_REQUEST['id'])) { $id = $_REQUEST['id']; ?> 
     <option value=""> -- please choose -- </option> 
     <?php 
      $query2 = mysql_query("SELECT * FROM cat2 WHERE cor = '$id' ORDER BY id ASC"); 
      while($row2 = mysql_fetch_array($query2)){ 
       $id2 = $row2['id']; 
       $name2 = $row2['name']; 
       echo '<option value="'.$id2.'">'.$name2.'</option>'; 
      } 
     } ?> 
+0

그러면 사용자가 무엇을 선택하든 관계없이 id 값이 1이됩니다. – mtcamesao

+1

@mtcamesao 두 번째 SELECT를 사용자가 첫 번째 항목에서 선택한 것으로 채우려는 경우 다음과 같이 할 수 없습니다. 한 번에 전체 HTML (PHP 생성 HTML 포함)이 출력됩니다. 두 번째 SELECT를 생성하기 전에 AJAX 또는 FORM 제출을 통해 사용자의 SELECT 선택을 제출해야합니다. – JoLoCo

+0

예제 코드를 제공 할 수 있습니까? – mtcamesao

0

사용자가 첫 번째 선택 상자에서 첫 번째 옵션 내가 그것을 두 번째 상자를 아래로 슬라이드하려면 선택합니다 (이미이를 그 작업)하지만 난 데이터를하는 데 도움이 필요 mysql 데이터베이스에서 두 번째 선택 상자에 사용자가 첫 번째 선택을 기반으로.

  • jQuery.ajax() 또는 동의어 (클라이언트 측)
  • 를 통해 AJAX 요청을 수행 jQuery를 (클라이언트 측)에 의해 선택된 첫 번째 옵션을 수집 : 당신은 당신이해야 원하는 것을 들어

  • 정보 수집을위한 AJAX 요청의 방문 페이지 정의 (서버 측)
  • 두 번째 옵션 세트 업데이트 (클라이언트 측)