2011-04-22 5 views
0

일부 POST 변수에 문제가있어 다른 사람이 잘못 볼 수 없기를 바라고 있습니다. 내가 제출 버튼 모든 것이 괜찮 및 검색 값이 표시되고 양식이 때문에 필드 값을 기억 치면,PHP - POST 변수를 반향 출력합니다.

<div id ="form"> 
<form enctype="multipart/form-data" method="post" action="testdocs-db.php" name="search" id="search" class="search"> 
<input type="hidden" name="dosearch" value="true"> 
<table border=0> 
<tr> 
    <td class="label">File Type:</td> 
    <td> 
<?php  doSelectMultiple("filetype", $options_filetype, $filetype, ""); ?> 
    </td> 
</tr> 
<tr> 
    <td class="label">File Name:</td> 
    <td> 
    <input id="filename" name="filename" class="text" value="<?php echo($filename); ?>"> 
    </td> 
    <td>&nbsp;</td> 
</tr> 
<tr> 
    <td class="label">File Size:</td> 
    <td> 
    <input id="filesize_min" name="filesize_min" class="text" value="<?php echo($filesize_min); ?>"><div id="kb">(kb min)</div> 
    </td> 
    <td> 
    <input id="filesize_max" name="filesize_max" class="text" value="<?php echo($filesize_max); ?>"><div id="kb">(kb max)</div> 
    </td> 
</tr> 
<tr> 
    <td class="label"># Results:</td> 
    <td> 
    <input id="numresults" name="numresults" class="text" 
    <?php 
    if (strlen($numresults) >= 1) 
    { 
     echo ("value=\"$numresults\""); 
    } 
    else 
    { 
     echo ("value=\"10\""); 
    } 
    ?> > 
    </td> 
    <td>&nbsp;</td> 
</tr> 
<tr> 
    <td class="label">Order By:</td> 
    <td> 
<?php  doSelect("orderby", 1, $options_orderby, $orderby, ""); ?> 
    </td> 
    <td> 
<?php  doSelect("orderbyad", 1, $options_orderbyAD, $orderbyAD, ""); ?> 
    </td> 
</tr> 
<tr> 
    <td class="label">Output Format:</td> 
    <td> 
<?php  doSelect("outputformat", 1, $options_outputformat, $outputformat, ""); ?> 
    </td> 
    <td> 
<?php  doSelect("outputlocation", 1, $options_outputlocation, $outputLocation, ""); ?> 
    </td> 
</tr> 
<tr> 
    <td>&nbsp;</td> 
    <td><input type="submit" class="submit" value="Search"></td> 
    <td>&nbsp;</td> 
</tr> 

그래서 :

은 '단순 검색'형태이다 원하는 경우 검색 기준을 조정할 수 있습니다.

그러나 나는 또한이 작업을 수행하려고 또 다른 '고급 검색'양식을 가지고 있지만, 어떤 이유로 작동하지 않습니다

<div id="advancedsearch" class="advancedsearch"> 
<form enctype="multipart/form-data" class="advancedsearchform" action="testdocs-db.php" method="post"> 
<input type="hidden" name="advancedsearchsubmit" value="1"/> 
<input type="hidden" name="hiddenfiletype" id="hiddenfiletype"/> 
<input type="hidden" name="hiddenfilename" id="hiddenfilename"/> 
<input type="hidden" name="hiddenfilesize_min" id="hiddenfilesize_min"/> 
<input type="hidden" name="hiddenfilesize_max" id="hiddenfilesize_max"/> 
<input type="hidden" name="hiddennumresults" id="hiddennumresults"/> 
<input type="hidden" name="hiddenorderby" id="hiddenorderby"/> 
<input type="hidden" name="hiddenorderbyad" id="hiddenorderbyad"/> 
<input type="hidden" name="hiddenoutputformat" id="hiddenoutputformat"/> 
<input type="hidden" name="hiddenoutputlocation" id="hiddenoutputlocation"/> 

<script type="text/javascript"> 
$("#filetype").change(copyFiletype); 
$("#filename").change(copyFilename); 
$("#filesize_min").change(copyFileSizeMin); 
$("#filesize_max").change(copyFileSizeMax); 
$("#numresults").change(copyNumResults); 
$("#orderby").change(copyOrderBy); 
$("#orderbyad").change(copyOrderByAD); 
$("#outputformat").change(copyOutputFormat); 
$("#outputlocation").change(copyOutputLocation); 

function copyFiletype() 
{ 
    var valueToCopy=$("#filetype option:selected").val(); 
    $("#hiddenfiletype").val(valueToCopy); 
} 

function copyFilename() 
{ 
    var valueToCopy=$("#filename").val(); 
    $("#hiddenfilename").val(valueToCopy); 
} 

function copyFileSizeMin() 
{ 
    var valueToCopy=$("#filesize_min").val(); 
    $("#hiddenfilesize_min").val(valueToCopy); 
} 

function copyFileSizeMax() 
{ 
    var valueToCopy=$("#filesize_max").val(); 
    $("#hiddenfilesize_max").val(valueToCopy); 
} 

function copyNumResults() 
{ 
    var valueToCopy=$("#numresults").val(); 
    $("#hiddennumresults").val(valueToCopy); 
} 

function copyOrderBy() 
{ 
    var valueToCopy=$("#orderby option:selected").val(); 
    $("#hiddenorderby").val(valueToCopy); 
} 

function copyOrderByAD() 
{ 
    var valueToCopy=$("#orderbyad option:selected").val(); 
    $("#hiddenorderbyad").val(valueToCopy); 
} 

function copyOutputFormat() 
{ 
    var valueToCopy=$("#outputformat option:selected").val(); 
    $("#hiddenoutputformat").val(valueToCopy); 
} 

function copyOutputLocation() 
{ 
    var valueToCopy=$("#outputlocation option:selected").val(); 
    $("#hiddenoutputlocation").val(valueToCopy); 
} 
</script> 

<p> 
<input type="radio" name="andor" value="AND" checked /> match <span class="all">all</span> of these | 
match <span class="any">any</span> of these <input type="radio" name="andor" value="OR" /> 
</p> 

<div class="dropdown"> 
<select name="tags[]" class="tags"> 
<option value="tags" selected="selected">tags</option> 
<option value="agent">agent</option> 
<option value="extension">extension</option> 
</select> 

<select name="operands[]" class="operands"> 
<option>please select a tag</option> 
</select> 

<select name="values[]" class="values"> 
<option>please select a tag</option> 
</select> 

<img class="addButton" src="images/blank.gif" alt="add" onclick="addNew();"/> 
<img class="deleteButton" alt="delete" src="images/delete1.png" onclick="remove(this)" onmouseover="this.src='images/delete.png'" onmouseout="this.src='images/delete1.png'"/> 
<div class="clear"></div> 
</div> 

<div class="clonecontainer"></div> 

<div class="advancedsearchsubmit"><input type="submit" class="submit" value="Advanced Search"/></div> 
</form> 
</div> 

고급 검색 양식이 제출, 변수 제대로 밖으로 반향을 제외하고

// hidden input values from simple search 
    $filetype= doPost('hiddenfiletype', $filetype); 
    $filename= doPost('hiddenfilename', $filename); 
    $filesize_min= doPost('hiddenfilesize_min', $filesize_min); 
    $filesize_max= doPost('hiddenfilesize_max', $filesize_max); 
    $numresults= doPost('hiddennumresults', $numresults); 
    $orderby= doPost('hiddenorderby', $orderby); 
    $orderbyAD= doPost('hiddenorderbyad', $orderbyAD); 
    $outputformat= doPost('hiddenoutputformat', $outputformat); 
    $outputLocation= doPost('hiddenoutputlocation', $outputLocation); 

간단한 검색 변수

이 유사하게 수행되어 다음과 같이 설정

/* do the search */ 
    $filetype  = doPost('filetype', $filetype); 
    $filename  = doPost('filename', $filename); 
    $filesize_min = doPost('filesize_min', $filesize_min); 
    $filesize_max = doPost('filesize_max', $filesize_max); 
    $numresults  = doPost('numresults', $numresults); 
    $outputformat = doPost('outputformat', $outputformat); 
    $orderby  = doPost('orderby',  $orderby); 
    $orderbyAD  = doPost('orderbyad', $orderbyAD); 
    $outputLocation = doPost('outputlocation', $outputLocation); 

코드 힙을 놓쳐서 미안하지만, 중요한 것을 놓치고 싶지 않았습니다.

누군가 내가 잘못하고있는 것을 발견 할 수 있다면 나는 알고 싶어합니다!

감사합니다,

마틴

UPDATE

doPost 메소드 : 고급 검색 쿼리의 벌금을 구축하지만, 양식 필드의 값을 울리는되지 않습니다

FUNCTION doPost($st, $default) 
{ 
    if (isset($_POST[$st])) 
     return $_POST[$st]; 
    else 
     return $default; 
} 

그 그들에게 설정해야합니다.

전체 코드는 (방대한 JS 파일없이) 여기서 알 수

+1

: 양식에서

function copy() { var filetype=$("#filetype option:selected").val(); $("#hiddenfiletype").val(filetype); var filename=$("#filename").val(); $("#hiddenfilename").val(filename); var filesize_min=$("#filesize_min").val(); $("#hiddenfilesize_min").val(filesize_min); var filesize_max=$("#filesize_max").val(); $("#hiddenfilesize_max").val(filesize_max); var numresults=$("#numresults").val(); ("#hiddennumresults").val(numresults); var orderby=$("#orderby option:selected").val(); $("#hiddenorderby").val(orderby); var orderbyad=$("#orderbyad option:selected").val(); $("#hiddenorderbyad").val(orderbyad); var outputformat=$("#outputformat option:selected").val(); $("#hiddenoutputformat").val(outputformat); var outputlocation=$("#outputlocation option:selected").val(); $("#hiddenoutputlocation").val(outputlocation); } 

: 고급 검색 버튼과 같이, 클릭 할 때 –

+0

정확히 작동하지 않는 것은 무엇입니까? 고급 검색의 필드 중 어느 것도 게시/에코로 표시되지 않습니까? –

+0

이 문제가 있는지 알 수는 없지만 $ (document) .ready (function() {... 여기서 함수 ...}); –

답변

0

나는 결국 자바 스크립트를 사용하여 숨겨진 입력 폼 입력의 값을 복사하여 그것을 해결 `doPost()`의 코드를 게시 할 수 있습니까?
0

http://pastebin.com/eydtyEYK 다음과 같이 간단 할 수있다 :이 입력

<input type="hidden" name="hiddenfiletype" id="hiddenfiletype"/> 

의 값은 없다. 또는 어쩌면 메신저 :

+0

그럴리가. 필드에 값 (또는 빈 값)이 없어도 여전히 제출됩니다. –

+0

나는이 필드가 게시물에서 울릴 때 잘못된 값이 있다고 생각했습니다. – k102

+0

그냥 비어있는 것 같아요. 테스트를하는 중 ... –

1

POST 메서드 양식에서 HTML, JS 및 PHP 사이에 전달되는 것을 처리하려면 다음 방법 중 하나를 사용하여 실제 출력 대 사용자의 기대치를 테스트하십시오.

var_dump($_POST); 
var_export($_POST); 
print_r($_POST, 1); 

일반적으로 첫 번째 것이 가장 좋습니다.

<div class="advancedsearchsubmit"><input type="submit" class="submit" onclick="copy();" value="Advanced Search"/></div> 
+0

고급 검색이 제출되면 고맙습니다. array (14) {[ "advancedsearchsubmit"] => string (1) "1"[ "hiddenfiletype"] (3) "123"[ "hiddenfilesize_max"] => string (3) "456"> "숨겨진 파일 이름" "["hiddennumresults "] => string (2)"12 "... ' 하지만 POST 변수를 PHP 변수와 같은 이름으로 설정하고 표시하지 않습니다? – martincarlin87

+0

음, hiddenfiletype ("excel")을 취하면 doPost()의 결과는 무엇입니까? 다시 var_dump (doPost());를 사용하십시오. 이것이 잘못 될 때까지이 변수를 쫓아 내십시오. Echo와 var_dump() 변수는 페이지에 출력됩니다 - 디버깅 할 때까지 미니 응용 프로그램을 만드는 것을 의미하더라도 말입니다. – Cups

+0

문제는 고급 검색 양식을 제출할 때 이러한 포스트 값을 가져 와서 변수로 설정하고이 변수를 텍스트 입력 값으로 반향 출력하는 것입니다. 동일한 값이 잘 작동하는 mysql 쿼리를 작성하는 데 사용됩니다. 검색 양식 값이 작동하지 않아서 문제를 해결할 수 없습니다. S – martincarlin87