我遇到一些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> </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> </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> </td>
<td><input type="submit" class="submit" value="Search"></td>
<td> </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);
对于大量代码感到抱歉,不想错过任何重要的代码。
如果有人能发现我做错了什么,那么我很想知道!
谢谢,
马丁
更新
doPost方法:
FUNCTION doPost($st, $default)
{
if (isset($_POST[$st]))
return $_POST[$st];
else
return $default;
}
高级搜索可以很好地构建查询,但表单字段不会回显应该设置的值。
这里可以看到完整的代码(没有大量的JS文件):http://pastebin.com/eydtyEYK
答案 0 :(得分:1)
当尝试以POST方法形式计算出HTML,JS和PHP之间传递的内容时,请使用其中一种方法来测试实际输出与您自己的预期。
var_dump( $_POST );
var_export( $_POST );
print_r($_POST, 1);
第一个通常是最好用的。
答案 1 :(得分:0)
可以如下简单:在此输入中
<input type="hidden" name="hiddenfiletype" id="hiddenfiletype"/>
没有价值。或许我很蠢:):
答案 2 :(得分:0)
我最终通过在单击高级搜索按钮时使用javascript将表单输入的值复制到隐藏输入来解决它,如下所示:
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);
}
表格形式:
<div class="advancedsearchsubmit"><input type="submit" class="submit" onclick="copy();" value="Advanced Search"/></div>