2013-03-31 55 views
0

下面是代碼:mysql_fetch_array問題

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

second php block;

<?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。您必須創建一個名爲ajax.php的新文件。您可以使用相同的文件,將所有代碼從ajax.php(在最後添加exit;在最後)放在文檔的頂部並更改... load('ajax.php'... ... with ...加載(''...

如果將腳本放在文檔的頭部,則必須將其包裝到$(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(客戶端)收集所選擇的第一個選項
  • 通過jQuery.ajax()或同義詞(客戶端)
  • 執行一個AJAX請求
  • 定義收集信息的AJAX請求的登錄頁面(服務器端)
  • 更新第二個選項集(客戶端)