我有一个选项菜单(selFilter),用于过滤MYSQL查询。选项菜单选项用于筛选第二个PHP页面的链接。export.php?recordID=
<select name="selFilter" id="selFilter" onchange="formFilter.submit()">
<option value="%">all levels</option>
<?php
do {
?>
<option value="<?php echo $row_RecordsetLevel['Level']?>"<?php if
($varFilter_Recordset3 == $row_RecordsetLevel['Level']) {echo 'selected';}
?>>level: <?php echo $row_RecordsetLevel['Level']?></option>
<?php
} while ($row_RecordsetLevel = mysql_fetch_assoc($RecordsetLevel));
$rows = mysql_num_rows($RecordsetLevel);
if($rows > 0) {
mysql_data_seek($RecordsetLevel, 0);
$row_RecordsetLevel = mysql_fetch_assoc($RecordsetLevel);
}
?>
</select>
第二个php页面使用查询导出到.csv,使用以下内容:
$colname = "%";
if (isset($_GET['recordID'])) {
$colname = $_GET['recordID'];
}
$query = sprintf( 'SELECT Name, ID
FROM schedule WHERE Level LIKE %s ORDER BY Name',
GetSQLValueString("%".$colname."%", "text"));
$result = mysql_query( $query, $conn ) or die( mysql_error( $conn ) );
//
// send response headers to the browser
// following headers instruct the browser to treat the data as a csv file
called export.csv
//
header( 'Content-Type: text/csv' );
header( 'Content-Disposition: attachment;filename=export.csv' );
当在index.php文件中选择一个选项(selFilter)并单击export.php时,一切都很好。问题是,如果我没有在选项菜单中选择任何内容并单击exportphp链接,那么URL字符串就是export.php?recordID=记录ID为空。该空白将不导出任何内容,零记录。如果我选择一个选项菜单级别,然后单击所有级别,则URL为export.php?recordID=%并正确导出。我应该修复什么以便可以从任一调用导出?
我尝试了以下操作,但导出URL仍然为空:
export.php?recordID=<?php $filter=$_POST['selFilter']; if (!empty($filter)) { echo "%"; } ?>
我找到了一个解决方案。已将导出链接更改为:
export.php?recordID=<?php
$filter=isset($_POST['selFilter']) ? $_POST['selFilter'] : '%';
echo "/export_student.php?recordID=$filter";
?>
来自stackoverflow的使用过的解决方案:PHP:";注意:未定义变量"注意:未定义索引";,以及";注意:未定义的偏移量";
我刚换了
$filter=isset($_POST['selFilter']) ? $_POST['selFilter'] : '';
带有
$filter=isset($_POST['selFilter']) ? $_POST['selFilter'] : '%';
由于我的查询触发了一个基于选项菜单的未定义索引,因此没有设置值。