2012-11-02 17 views
0

我有一個表單,它有一個select字段,可以從db結果查詢動態加載選項。這是代碼的樣子。事後查看說明文字輸入?我需要代碼返回在productID下選擇的項目的描述。我如何去做這件事?非常感謝所有答覆。基於從sql db動態加載的select選項值輸入文本值

<div class="row-fluid"> 
    <div class="span3"> 
     <label>SKU</label> 
     <?php echo '<select name="ITEM" id="user" class="textfield1">'; 
     while($res= mysql_fetch_assoc($sql)) 
     { 
     echo '<option value="'.$res['productID'].'">'; 
     echo $res['SKU'] ; 
     echo'</option>'; 
     } 
     echo'</select>'; 

     ?> 
    </div> 
</div> 
<div class="row-fluid">    
    <div class="span3"> 
     <label>Description</label> 
     <input type="text" name="description" value=""/> 
    </div> 
</div> 
+0

你的頁面刷新?或者你需要加載一個Ajax? jQuery可能嗎? –

+0

如果我是對的,您需要填寫描述值以填入用戶選擇的productID的相應描述。 – Ravi

+0

@Ravi是的,這是我的目標 –

回答

1

您可以通過兩種方式做到這一點:

第一種方式是通過重定向有$_GET參數,其中將包含產品ID頁:

<div class="row-fluid"> 
    <div class="span3"> 
     <label>SKU</label> 
     <?php echo '<select name="ITEM" id="user" class="textfield1" 
         onchange="document.location=\'my-page.php?pid=\' + this.value">'; 
     while($res= mysql_fetch_assoc($sql)) 
     { 
      echo '<option value="'.$res['productID'].'"'; 
      // LATER EDIT 
      if(isset($_GET['pid']) && $_GET['pid'] == $res['productID']) 
       echo 'selected="selected"'; 
      // END LATER EDIT 
      echo '>'; 
      echo $res['SKU'] ; 
      echo'</option>'; 
     } 
     echo'</select>'; 

     ?> 
    </div> 
</div> 
<div class="row-fluid">    
    <div class="span3"> 
     <label>Description</label> 
     <?php 
      if(isset($_GET['pid']) && is_numeric($_GET['pid'])) { 
       $sql = mysql_query("SELECT description 
            FROM products 
            WHERE product_id='" . mysql_real_escape_string($_GET['pid']) . "'"); 
       $row = mysql_fetch_assoc($sql); 
      } 
     ?> 
     <input type="text" name="description" value="<?=$row['description']?>"/> 
    </div> 
</div> 

方式二將動態地添加ajax調用和填充描述輸入,而不會刷新頁面

// this is the JS code 
$(document).ready(function(){ 
    $('#user').change(function(){ 
     $.POST("my-ajax-call-page.php", 
       {pid: $("#user").val()}, 
       function(data){ 
        $('input[name="description"]').val(data.description); 
       }, "json"); 
    }); 
}); 

和你my-ajax-call-page.php應該是這樣的:

<?php 
    include("mysql-connection.php"); 

    $sql = mysql_query("SELECT description 
         FROM products 
         WHERE product_id='" . mysql_real_escape_string($_POST['pid']) . "'"); 
    $row = mysql_fetch_assoc($sql); 

    echo json_encode("description" => $row['description']); 
?> 

你會發現許多實例和文檔的使用上jQuery library website

+0

非常感謝@Matei Mihai。我選擇刷新$ _GET選項,因爲我更瞭解它。對不起,我仍在學習,所以稍後我會研究AJAX。我現在唯一的問題是,在頁面刷新後,productID恢復到選項列表中的第一個值,但產品描述基於刷新前所選的productID是正確的。 –

+0

我編輯了我的答案,因此搜索了更新後的編輯代碼。歡迎! :) –

+0

真棒!非常感謝。=) –

0
<div class="row-fluid"> 
    <div class="span3"> 
     <label>SKU</label> 
     <?php echo '<select name="ITEM" id="user" class="textfield1" onchange="showDesc()">'; 
     $desHTML = ""; 
     echo "<option value='0'>Please select</option>" 
     while($res= mysql_fetch_assoc($sql)) 
     { 
     echo '<option value="'.$res['productID'].'">'; 
     echo $res["SKU"] ; 
     echo'</option>'; 
     $desHTML .="<div class'descBox' id='".$res['productID']."' style='display:none'>".$res['description']."</div>"; 
     } 
     echo'</select>'; 

     ?> 
    </div> 
</div> 
<div class="row-fluid">    
    <div class="span3"> 
     <label>Description</label> 
     <?php echo $desHTML; ?> 
    </div> 
</div> 

jQuery庫現在創建一個js函數和對平變化的呼籲選擇框。 Js函數提示:

$(「.descBox」)。hide(); $(「#」+ selectedItemValue).show();

讓我知道你是否需要JS功能的任何幫助。

+0

你不應該插入'div'標籤插入'select'。此外,您的div id是數字,id(作爲任何其他變量的名稱)應以字符開頭。對你來說,至少可以將你的'div'生成爲php字符串,你將在'select'後將它打印出來,並將'id's作爲'id ='description'。$ res ['productID']。'「 ' – Buksy

+0

@sachin jat。非常感謝答覆。我仍然在學習,所以我選擇了Matei的onchange刷新代碼。我一定會嘗試一下你的代碼,儘快我想出如何編寫JS函數。 =) –

+0

function showDesc(){0}(「.descBox」)。hide(); (「#」+ $(「#user」)。val())。show(); } 請包括jQuery的lib文件。 :) –

0

您沒有向我們展示您的SQL查詢,但我假設您有一列名爲的描述並且您也在查詢中選擇了此列。

那麼,你可以使用jQuery插入所選項目說明輸入

<div class="row-fluid"> 
<div class="span3"> 
    <label>SKU</label> 
    <?php echo '<select name="ITEM" id="user" class="textfield1">'; 

    $js_array = array(); // This variable will contain your Javascript array with descriptions 
    while($res= mysql_fetch_assoc($sql)) 
    { 
    echo '<option value="'.$res['productID'].'">'; 
    echo $res['SKU'] ; 
    echo'</option>'; 

    // Fill your array with descriptions; ID of item will be the index of array 
    $js_array[$res['productID']] = $res['description']; 
    } 
    echo'</select>'; 
    ?> 
    <script> 
    var description; 
    <?php 
    foreach($js_array as $description => $id) 
    { 
     echo("description['".$id."'] = '".$description."';\n"); 
    } 
    ?> 

    $(document).ready(function(){ 
     $('#user').change(function(){ 
     $("#description").val(description[$('#user').val()]); 
     }) 
    }); 
    </script> 
</div> 
</div> 
<div class="row-fluid">    
    <div class="span3"> 
     <label>Description</label> 
     <input type="text" name="description" id="description" value=""/> 
    </div> 
</div> 

請務必不要忘記屬性添加idinput type="text"

+0

非常感謝您的回覆。我選擇使用Matei的GET刷新代碼,因爲我仍然試圖學習(全部noob),這是我理解的最簡單的代碼。我一定會試試你的代碼,雖然=) –

+0

沒問題,這個代碼看起來可能一點也不復雜,但它也很容易。通過這種方式,您可以更新'input type = text'的值,而無需刷新網站,也無需額外的php文件。但是如果你在選擇(百+)中有很多項目,那麼Matei的**第二種方式**將是最好的解決方案。如有任何問題,請告知我 – Buksy

相關問題