使用PHP的HTML表单运行功能不起作用(没有错误,没有任何反应)

时间:2013-11-03 23:22:54

标签: php html forms isset

我有一个HTML表单:

<form action="<?=$_SERVER['PHP_SELF'];?>" method="post"><br>
Order Number: <input type="number" name="orderNo" size="10"/>
<input type="submit" value="Download" />
</form>

和PHP设置:

if(isset($_POST['Download'])){download();}

用户输入一个数字,然后我希望它运行代码,该代码根据输入的数字创建一个包含表格数据的文件,并将文件下载到用户。这可以将下载代码放在一个单独的文件中,只需在表单操作中调用该文件,但是我需要在带有表单的文件中运行它。

我目前在同一页面上有另一个表单,它使用isset运行一个函数将文件上传到服务器,这样可以正常工作,但是尝试使用其他代码只会导致任何事情发生。在这种交互方面,我是PHP和HTML的新手。

以下是下载脚本的完整代码:

function download()
{
$conn = mysql_connect('localhost', 'root', '');
mysql_select_db('amazondb', $conn); 
$result = mysql_query("SELECT ID, PurchaseDate, BuyerName, ShipCity, ShipState,     ShipPostalCode, ShipCountry,
                          ShipAddress1, ShipAddress2,   ShipAddress3 FROM imported_orders");
$orderNo = $_POST['orderNo'];
$row = mysql_fetch_array($result, MYSQL_ASSOC);
if($orderNo>0&&$orderNo<=count($row))
{
$file = fopen('Order.txt', 'w');
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{
if($row['ID']==($orderNo))
    {
    fwrite($file, $row['BuyerName'].PHP_EOL .$row['ShipAddress1'].PHP_EOL .$row['ShipAddress2'].PHP_EOL  .$row['ShipAddress3'].PHP_EOL  .$row['ShipCity'].PHP_EOL  .$row['ShipState'].PHP_EOL  .$row['ShipPostalCode'].PHP_EOL  .$row['ShipCountry'].PHP_EOL);
    }
}
fclose($file);
$file = 'Order.txt';
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
readfile($file);
}
else{echo "Please enter a valid Order Number";}
} 

感谢任何帮助,这可能很简单。

3 个答案:

答案 0 :(得分:1)

检查您未提交的属性(您的按钮没有名称)。给它起一个名字,添加一个不可见的输入字段甚至更好,检查数字属性:

if ( isset($_POST['number']) && is_numeric($_POST['number']) ) {
    download();
}

答案 1 :(得分:0)

只需在html文件中添加名称..

<input type="submit" name="download" value="Download" />

答案 2 :(得分:0)

名称或ID需要在元素上“下载”才能使该检查生效。您只有一个具有下载值的按钮,它没有名称或ID。试试这个:

<form action="<?=$_SERVER['PHP_SELF'];?>" method="post"><br>
    Order Number: <input type="number" name="orderNo" size="10"/>
    <input type="submit" name="Download" value="Download" />
</form>