2012-11-02 7 views
0

DB 결과 쿼리에서 옵션을 동적으로로드하는 선택 필드가있는 양식이 있습니다. 다음은 코드의 모양입니다. 나중에 설명 텍스트 입력을 볼 수 있습니까? productID 아래에서 선택한 항목에 대한 설명을 반환하는 코드가 필요합니다. 어떻게해야합니까? 모든 답장을 보내 주셔서 대단히 감사합니다.SQL에서 동적으로로드 된 선택 옵션 값을 기반으로 입력 텍스트 값

<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

페이지에 상쾌 잊지하는

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

는 반드시 입력에 선택한 항목의 설명을 삽입 할 jQuery를 사용할 수 있습니까? 아니면 아약스로로드해야합니까? jQuery가 어쩌면? –

+0

내가 맞다면 사용자가 선택한 productID에 해당하는 설명으로 채울 설명 값이 필요합니다. – Ravi

+0

@Ravi 그래, 그게 내가 목표로하는거야 –

답변

1

당신은 2 가지 방법으로이 작업을 수행 할 수 있습니다

첫 번째 방법을이 제품 ID가 포함됩니다 $_GET 매개 변수를 갖는 페이지 리디렉션하는 것입니다 :

<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']); 
?> 

당신은 이제 하나 개의 js 함수를 생성 및 onchange를 촉구 jQuery library website

+0

대단히 감사합니다. @Matei Mihai. 나는 그것을 이해함에 따라 새로 고침 $ _GET 옵션을 선택했다. 미안 해요. 아직 배울 정도로 나중에 AJAX를 살펴 보겠습니다. 이제 문제는 페이지를 새로 고친 후 제품 ID가 옵션 목록의 첫 번째 값으로 돌아가지만 새로 고침 전에 선택된 제품 ID를 기반으로 제품 설명이 올바른 것입니다. –

+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 함수 힌트 :

$ (". descBox"). hide(); $ ("#"+ selectedItemValue) .show();

JS 기능에 대한 도움이 필요하면 알려주십시오.

+0

'div' 태그를 삽입해서는 안됩니다.'select'를 삽입하십시오. 또한 div id는 숫자이고 id는 다른 변수의 이름으로 문자로 시작해야합니다. 이것에 대해, 적어도'div'를 php 문자열로 생성하십시오, 그러면'select' 다음에'id'를'id = "description '으로 만드십시오. $ res ['productID '].'" ' – Buksy

+0

@sachin jat. 답장을 보내 주셔서 대단히 감사합니다. 나는 여전히 배우기 때문에 마테이의 onchange refresh 코드를 선택했다. 나는 JS 함수를 코딩하는 방법을 이해하자마자 코드를 확실히 시도 할 것이다. =) –

+0

function showDesc() { $ (". descBox"). hide(); $ ("#"+ $ ("# user"). val()). show(); } jQuery lib 파일을 포함하십시오. :) –

0

당신은 우리에게 당신의 SQL 쿼리를 보여주지 않았지만 란 이름의 컬럼이 있다고 가정하고 당신은 당신의 쿼리에서도이 컬럼을 선택하고 있습니다. 그럼

, 당신은 추가 id 속성을 당신의 input type="text"

+0

답장을 보내 주셔서 대단히 감사합니다. 나는 여전히 (전체 멍청한 놈)을 배우려고 노력하면서 Matei의 GET 새로 고침 코드를 사용하기로 선택했고, 내가 가장 쉽게 이해할 수있는 코드였습니다. 그래도 확실히 코드를 시험해 보겠습니다 =) –

+0

문제는 없지만이 코드는 첫눈에 약간 복잡해 보이지만 매우 쉽습니다. 이렇게하면 사이트를 새로 고치지 않고 PHP 파일을 추가하지 않고도'input type = text' 값을 업데이트 할 수 있습니다. 그러나 선택 항목 (수백 개 이상)에 많은 항목이 있다면 Matei의 ** 두 번째 방법 **이 최선의 해결책이 될 것입니다. 궁금한 점이 있으면 알려주세요. – Buksy

관련 문제