2013-03-08 2 views
1

현재 선택 목록 (전체 목록)을 PHP 페이지로 전달하고 목록에서 개별 값을 가져 와서 동적 SQL 쿼리를 수행하려고합니다. I는 selectItems 전달하지만, I는 반향을 수행 할 때, I 얻을선택 목록을 PHP 페이지로 넘겨주세요

[오브젝트 HTMLSelectElement]

또한 selectItems.value 전달 시도하지만 단지 3리스트 중 하나에 전달 나는 과거의 날을 수색했으며 나는별로 성공하지 못했다. 나는 이것에 접근하는 방법을 너무 확신하지 못한다. 어떤 도움이라도 대단히 감사하겠습니다.

<select multiple name="selectItems" size="6" id="selectItems"> 
    <option value="value1" selected="selected">value1</option> 
    <option value="value2" >value2</option> 
    <option value="value3" >value3</option> 
    </select> 

    <input type=button id="opener" value='Clickme' onclick="showTable(selectItems, 'getquery.php')"> 

아래 showtable 기능에서 조각을 다음과 같이

현재 선택 목록입니다, 나는 기본적으로 (Q로 표시) 목록과 페이지의 위치를 ​​전달하려합니다.

xmlhttp.open("GET",page+"?q="+str,true); 
xmlhttp.send(); 

답변

2

초기 onclick 메소드가 처음에는 선택 노드를 통과하지 못했으며, 그 다음에도 실제 노드 자체를 PHP로 보냅니다. 추출 된 값이 아닙니다.

dm03514 자신이 말했듯이 PHP 문자열에서 Query 문자열을 직렬화 할 수 있으므로 PHP 수준에서보다 쉽게 ​​관리 할 수 ​​있습니다.

jsFiddle : http://jsfiddle.net/7dtXs/1/

<script type="text/javascript"> 
    function showtables(selectObj, page) { 

     var xmlhttp = new XMLHttpRequest(); 
     var str = ""; 

     var AllOptions = selectObj.options; 
     var SelectedOptions = selectObj.selectedOptions; 

     /** 
     * Iterate through each Object that is selected 
     * From here you can pick out: 
     *  - id name 
     *  - value 
     * etc, to form a query string 
     **/ 
     for (var x = 0; x < AllOptions.length; x++) { 
      str += (!x ? "" : "&") 
        + AllOptions[x].value + "=" + AllOptions[x].textContent; 
     } 

     /** 
     * if apples & shaz.. selected 
     * str now contains: 
     *  &value1=Apples&vsalue2=shazbots 
     **/ 
     console.log(str); 

     xmlhttp.open("GET", page + "?" + str, true); 
      xmlhttp.send(); 
     } 
    </script> 

    <select multiple name="selectItems" size="6" id="selectItems"> 
     <option value="value1">Value1</option> 
     <option value="value2">Value2</option> 
     <option value="value3">Value3</option> 
    </select> 

    <!-- Passing through ID.selectedOptions to function --> 
<input type="button" id="opener" value="Clickme" onclick="showtables(document.getElementById('selectItems'), 'getquery.php');"> 

또한, 귀하의 예제가 그냥 예 또는 코드에 있는지 확실하지, 잘못 인용 있었나요 - 예를 들면 : 유형 = 버튼 유형 = "버튼을해야한다 ".

나는 당신의 질문을 정확하게 이해했으면합니다! :)

+0

아쉽게도 직렬화 할 코드를 가져올 수 없습니다. :(왜 우리는 .selectedOptions를 사용합니까?) 그 선택 목록의 값만 잡을 수 있습니까? 선택에 관계없이 그것을 모두 잡고 싶습니다 .PP 페이지에서 q를 에코하려고 할 때, 아무것도 PHP에서로드 할 것 같습니다. 어떤 아이디어가 있습니까? – rawrPowershell

+0

음, 옵션을 반복하기 만하면 답변을 업데이트했습니다 -하지만 논리적으로는 다른 항목의 값을 이미 알고 있기 때문에 선택한 항목 만 필요합니다! 0 그래서 모든 값을 보냈다면 당신이 진실/허위를 어떻게 구별 할 수 있느냐에 따라 선택의 목적을 거의 상실 할 것입니다. 어느 곳에서 체크 박스가 더 좋은 선택이 될 수 있습니까? 마지막으로, 브라우저 (yoursite/getquery.php?q = test) - 'test'에코가 없다면 PHP 코드에서 에러를 확인해야 할 것입니다. – MackieeE

+0

멋진 JSfiddle이 매우 유용합니다. 내가 2 개의 버튼 기능을 가지고 있기 때문에 모든 목록 항목을 가져와야하는 이유는 하나의 기능이 개별 항목을 쿼리하고 현재 작업하고있는 기능이 목록 내의 모든 항목을 쿼리하기 때문입니다. 코드는 훌륭하게 작동하지만 간단한 PHP 페이지에 전달하면로드되지 않습니다. 저는 현재 $ q = $ _ GET [ "q"]하고 있습니다; echo $ q; 하지만 직렬화에서 전달한 값을 좋아하지 않는 것 같습니다. 나는 지금까지 굉장한 도움에 감사한다 :) – rawrPowershell

0

당신이 HTML을 직렬화 수, 즉 값 의 배열이 무엇인지 PHP를 찾고 있습니다

값.

http://example.com/?selectItems[]=test&selectItems[]=test1

이것은 PHP에서 배열로 모든 값에 액세스 할 수 있습니다.

이제 가장 좋은 방법은. 나는 바닐라 자바 ​​스크립트 사용을 모른다. 선택한 모든 값을 반복 할 수 있고 자신 만의 쿼리 문자열을 만들 수 있습니까?

+0

필자는 연재 화를 시도했지만 정확한 경로가 맞는지 확실하지 않아 제대로 작동하지 못했습니다. 기본적으로 내 출력은 s : 26 : "[object HTMLSelectElement]"; – rawrPowershell

관련 문제