我对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"/>
但这似乎是处理这种情况的一种混乱方式。
是否有简单的方法和/或最佳实践if($_POST['download']){
...
}else if($_POST['preview']){
...
}
和download.php
或者
preview.php
分支?我试图找到其他相关的答案,但希望找到一个不需要javascript的解决方案,但如果这是最好的选择,我会愿意使用js。
答案 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
中的值。