动态创建php开关语句的案例

动态创建php开关语句的案例,php,mysql,Php,Mysql,我正在用php编写一个switch语句,它将根据发布的数据确定mysql查询的内容。过账的金额数据因创建表单的数据库而异。是否有任何方法可以从数据库中提取可能的案例,因为对所有案例都执行了相同的代码,并进行了一些特定于案例的修改。我之所以不使用一种可能性而不是开关,是因为还有其他与数据库无关的情况可以输入开关 这可能会把事情弄清楚 我有两个页面people.php和edit.php。php根据通过get发送的建筑Id动态创建建筑中的成员表。从该表中,用户可以从下拉菜单中选择要更改的记录,然后脚本

我正在用php编写一个switch语句,它将根据发布的数据确定mysql查询的内容。过账的金额数据因创建表单的数据库而异。是否有任何方法可以从数据库中提取可能的案例,因为对所有案例都执行了相同的代码,并进行了一些特定于案例的修改。我之所以不使用一种可能性而不是开关,是因为还有其他与数据库无关的情况可以输入开关

这可能会把事情弄清楚

我有两个页面people.php和edit.php。php根据通过get发送的建筑Id动态创建建筑中的成员表。从该表中,用户可以从下拉菜单中选择要更改的记录,然后脚本将所有内容发布到edit.php。如果用户希望更改某人的建筑,则开关盒将捕获泰国人并创建一个表单,询问他们将更改为哪栋建筑。然后将其发回edit.php。我是否必须将每个建筑硬编码到交换机中,或者我可以让它基于mysql中的可用建筑动态创建案例

echo”
保存更改
删除记录
添加其他电话号码和/或电子邮件地址
更改此人的建筑
“

这是在人员表的每一行中创建的,这将决定表单将如何处理edit.php中的数据

switch ($_POST['action'])
{
        case 'save':
                update($_POST);
                header("Location: people.php?bid=".$_POST['bid']);
                break;
        case 'delete': //Havent written delete person code yet
                break;
        case 'more': //havent written add more phone number or emails yet
                break;
        case 'building': echo "Move ".$_POST['fname']." ".$_POST['mname']." ".$_POST['lname']." to which building?
                <br/><form action='edit.php' method='POST'><select name='action'>"
                compile_permissions($_SESSION['uid']);
                foreach($_SESSION['buildings'] as $value)
                {
                        $query="select name from schools where bid='$value'";
                        $result=mysql_query($query);
                        $row=mysql_fetch_array($result);
                        echo "<option value='$value'> Move to ".$row['name']."</option>";
                }
                echo "</select><br/><input type='submit' value='Go'></form>"
                break;
        default: header("Location:index.php");
                break;
}
开关($\u POST['action']))
{
“保存”案例:
更新(美元邮政);
标题(“Location:people.php?bid=“.$\u POST['bid']);
打破
案例'delete'://尚未编写删除人员代码
打破
案例“更多”://尚未编写添加更多电话号码或电子邮件
打破
案例“building”:将“$\u POST['fname']”.$\u POST['mname']”.“$\u POST['lname']”回送到哪个建筑?

” 编译权限($_会话['uid']); foreach($\会话['buildings']作为$value) { $query=“从bid='$value'的学校中选择名称”; $result=mysql\u query($query); $row=mysql\u fetch\u数组($result); 回显“移动到“.$row['name']”; } 回声“
” 打破 默认值:header(“Location:index.php”); 打破 }

我需要通过此表单将pid和bid传递给edit.php,这样我就可以使用查询来更新他们的构建。我如何才能进行此操作?

听起来确实需要将代码拆分为更多部分,但如果您正在寻找构建动态代码,请查看eval()。您可以构建一个字符串,然后使用它来执行它。目前还不确定这是否对您有帮助。

如果没有看到代码,就很难给您提供任何有用的反馈。我们可以做出各种各样的假设,但我们只能在黑暗中摸索。有一点是肯定的:PHP并不真正支持“动态创建
切换
案例”所需的元编程。但这也不是必须的,您可能只需要使用一个循环来遍历从数据库中提取的案例,这样会使事情变得过于复杂。您需要进一步分离代码。把它进一步分解成更小的类。您正在创建一个维护夜间任务。@西姆斯,谢谢。我曾试图压缩以保存代码,但我知道这会使它变得更加复杂。@b而且,有时您需要一段非常精简的代码。但您所做的看起来足够复杂,足以保证几个类。您甚至可以编写简单的路由器,根据特定的值对请求进行操作,例如您的$\u POST['action']。路由器可以加载其他类和调用方法,等等。我也会尝试将HTML输出分开。这将进入MVC。我不知道这有多大。您可以使用Codeigniter这样的小框架来奠定基础。