单个HTML表单到多个PHP脚本

时间:2015-07-22 15:15:00

标签: php html forms

我对PHP编程有些新手,我对从同一个表单处理输入的最佳方法有疑问,可以转到两个不同的PHP页面。

例如,我有一个项目和参数数据库,用户可以从中选择相关选项,然后将表单提交到预览脚本,该脚本在新页面上显示一些数据,或者下载选项允许用户以CSV格式下载所选数据。

$count = 0; 
// Fetch all the records:
while ($stmt->fetch()) {
    if($image_type == 0) {
        $class = '';
        if($count === 0) {
            $class = ' active';
        }

        $result  = "<div class='item {$class}'>\n";
        $result .= "    <div class='gallery_image'>\n";
        $result .= "        <a class='thumbnail lightbox' title='{$db_restaurant_name}' rel='gal' target='_blank' href='{$image_path}{$image}'>\n";
        $result .= "            <div class='img-holder' style='background-image:url({$image_path}{$image})'></div>\n";
        $result .= "        </a>\n";
        $result .= "    </div>\n";
        $result .= "</div>\n";  
        $gallery[] = $result;   

    }
    $count++;       
}  

目前,输入被发送到单个PHP脚本,该脚本使用if语句来确定最佳行动方案

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

但这似乎是处理这种情况的一种混乱方式。

是否有简单的方法和/或最佳实践
  1. 创建一个处理程序PHP脚本,然后将相关信息传递给另一个更具体的PHP文件,在本例中,我可以将下载和预览拆分为if($_POST['download']){ ... }else if($_POST['preview']){ ... } download.php
  2. 或者

    1. 将表单中的条目从一个PHP脚本重用到另一个PHP脚本,例如用户按下预览按钮,查看新页面上的数据,确定它是可接受的,并希望通过按下载按钮下载完整数据集在预览页面上。是否可以使该下载按钮使用我已有的相同脚本,即返回并从生成预览的同一脚本中获取另一个preview.php分支?
    2. 我试图找到其他相关的答案,但希望找到一个不需要javascript的解决方案,但如果这是最好的选择,我会愿意使用js。

2 个答案:

答案 0 :(得分:1)

由于您输入的属性为value,因此您可以尝试这样做:

<input type="submit" value="download" name ="submit_type"/>
<input type="submit" value="preview" name="submit_type"/>

并在你的php中:

if ('download' == $_POST['submit_type']) {
    // ...
} else if('preview' == $_POST['submit_type']) {
    // ...
}

我确信有一种更优雅的方式可以做到这一点,但这个方法有效。

答案 1 :(得分:1)

你几乎已经有了你的处理程序脚本,虽然我认为我会把它称为一个简单的路由器,它使用的脚本是处理程序。您可以根据所选值修改它以包含相应的脚本。

if ($_POST['download']) {
    include 'download.php';
} else if($_POST['preview']) {
    include 'preview.php';
}

至于重复使用用户从预览到下载的所选选项,有不同的方法来处理它。一种是使用action="download.php"将这些值插入预览脚本中表单中的隐藏输入。另一种方法是将它们存储在会话中。

在这种情况下,第一个选项会更简单,因为无论用户是直接下载还是先使用预览,您的下载脚本都只能使用$_POST中的值。