Php 将页面提交到自身并允许输入更多数据

Php 将页面提交到自身并允许输入更多数据,php,mysql,Php,Mysql,我的PHP表单上有两个部分。一个部分允许输入客户信息(名称、地址等),另一个部分允许输入客户产品及其详细信息(约15个文本框)和提交按钮。用户可以为同一客户输入无限的产品和详细信息。我有两张桌子。客户表和客户产品表。所以我想我必须提交表格,保留第一部分的数据,清除第二部分。实现此功能的最佳实践是什么 好的,您可以添加一个检查,查看表单是否已提交给自身,并输出适当的表单,同时注意存储发布的值 if (isset($_POST['submit'])) { // product & detai

我的PHP表单上有两个部分。一个部分允许输入客户信息(名称、地址等),另一个部分允许输入客户产品及其详细信息(约15个文本框)和提交按钮。用户可以为同一客户输入无限的产品和详细信息。我有两张桌子。客户表和客户产品表。所以我想我必须提交表格,保留第一部分的数据,清除第二部分。实现此功能的最佳实践是什么

好的,您可以添加一个检查,查看表单是否已提交给自身,并输出适当的表单,同时注意存储发布的值

if (isset($_POST['submit']))
{ // product & details form 
}
else
{ // customer information
}

好的,您可以添加一个检查,查看表单是否已提交给自身,并输出适当的表单,同时注意存储发布的值

if (isset($_POST['submit']))
{ // product & details form 
}
else
{ // customer information
}

第一次创建客户id后,可以将其存储在会话中。如果再次打开表单,则在会话中检查id,如果设置了id,则显示客户的详细信息和表单以添加其他产品


如果未设置会话(或用户希望创建新客户:提供一个链接以在会话中重置id),则您可以提供创建客户的表单。

您可以在首次创建客户id后将其存储在会话中。如果再次打开表单,则在会话中检查id,如果设置了id,则显示客户的详细信息和表单以添加其他产品


如果未设置会话(或用户希望创建新客户:提供一个链接以重置会话中的id),则提供用于创建客户的表单。

为表单提供以下内容:

<input type="hidden" name="user_name" value="$_POST['user_name']">


这样,如果您重新发布到同一页面,您可以继续使用相同的用户名,而无需用户一直输入该用户名。

请提供以下表单:

<input type="hidden" name="user_name" value="$_POST['user_name']">


通过这种方式,如果您重新发布到同一页面,您可以继续使用相同的用户名,而用户不必一直输入该用户名。

我在删除对象时使用这种方法,强制用户单击“删除”两次,以确认他们真的要删除某些内容,但我想这对你的情况也会很好

function yourmodule_FORM_ID($form, &$form_state) {
    if(!isset($form_state['storage']['confirm'])){
        //this is where your first form goes
    }
    else{
        //this is the second form
    }
}

function yourmodule_FORM_ID_submit($form, &$form_state) {
    if(!isset($form_state['storage']['confirm'])){
        $form_state['storage']['confirm'] = TRUE; 
        $form_state['rebuild'] = TRUE;
        //this is where the first form's submit would go
        //you can stuff some info into $form_state if you need it
    }
    else{
        //this is where the second form's submit would go
    }
}

我在删除一个对象时使用这个命令,强迫用户点击删除两次,以确认他们真的想删除某个对象,但我想这对你的情况也会很好

function yourmodule_FORM_ID($form, &$form_state) {
    if(!isset($form_state['storage']['confirm'])){
        //this is where your first form goes
    }
    else{
        //this is the second form
    }
}

function yourmodule_FORM_ID_submit($form, &$form_state) {
    if(!isset($form_state['storage']['confirm'])){
        $form_state['storage']['confirm'] = TRUE; 
        $form_state['rebuild'] = TRUE;
        //this is where the first form's submit would go
        //you can stuff some info into $form_state if you need it
    }
    else{
        //this is where the second form's submit would go
    }
}

处理动态表单的最佳实践是使用Ajax。@AndrejsCainikovs引文Needed您可以将数据保存在会话变量中(这样更安全,因为一些破坏性的用户操作,如页面重新加载等,可能会破坏他输入的数据)。或者使用AJAX(正如建议的那样)。或者以某种方式存储其他用户的数据,因为处理数据块是最佳实践(为了安全和方便)。处理动态表单的最佳实践是使用Ajax。@AndrejsCainikovs引文需要您可以将数据保存在会话变量中(它更安全,因为一些破坏性的用户操作,如页面重新加载等,可能会破坏他输入的数据)。或者使用AJAX(正如你所建议的那样)。或者以某种方式存储其他用户的数据,因为这是最佳做法(为了安全和方便)处理数据块谢谢。第一次我必须保存客户和产品的详细信息。我的保存逻辑应该在同一页上。对吗?你有什么例子吗?这将进入你需要根据需要定制的地方。一个选项是在运行时将数据存储到会话中,然后在完成后将其转储到数据库中。我希望继续看看这个方法。关于保存逻辑…如果你想将演示文稿与数据存储分开,那么是的,应该分开。谢谢。第一次我必须保存客户和产品的详细信息。我的保存逻辑应该在同一页上。对吗?你有什么例子吗?这会让你需要根据自己的需要进行定制。一个选项是在运行时将数据存储到会话中,然后在完成后将其转储到数据库中。我会向谷歌寻求该方法。关于保存逻辑……如果您希望将演示文稿与数据存储分开,那么是的,它应该分开。