我正在开发一个网站,该网站将包含10个不同属性的十个不同页面。每个页面都有两个表单,一个用于设置约会,另一个用于其他设置。我如何处理每个表格?现在我有一个每个表单的处理页面。所以总共有20个不同的处理页面。对于所有变量,名称和ID,我添加一个2..3 ... 4 ..等。对于每个表格。这是正确的做法吗?
<form role="form" id="apptform2" name="apptform2" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST">
<div class="form-group cushion">
<label for="apptName2">Full Name*</label>
<input type="text" name="apptName2" class="form-control" id="apptName2" placeholder="Last, First">
<?php if (isset($apptErrors2['apptNamePgTwo1'])) { echo '<div class = "pink-text"/><p>', $apptErrors2['apptNamePgTwo1'] , '</p></div>'; } ?>
<?php if (isset($apptErrors2['apptNamePgTwo2'])) { echo '<div class = "pink-text"/><p>', $apptErrors2['apptNamePgTwo2'] , '</p></div>'; } ?>
<?php if (isset($apptErrors2['apptNameLengthPgTwo'])) { echo '<div class = "pink-text"/><p>', $apptErrors2['apptNameLengthPgTwo'] , '</p></div>'; } ?>
</div>
<div class="form-group cushion">
<label for="apptEmail2">Email address*</label>
<input type="email" name="apptEmail2" class="form-control" id="apptEmail2" placeholder="Email">
<?php if (isset($apptErrors2['apptEmailPgTwo1'])) { echo '<div class = "pink-text"/><p>', $apptErrors2['apptEmailPgTwo1'] , '</p></div>'; } ?>
<?php if (isset($apptErrors2['apptEmailPgTwo2'])) { echo '<div class = "pink-text"/><p>', $apptErrors2['apptEmailPgTwo2'] , '</p></div>'; } ?>
</div>
<div class="form-group cushion">
<label for="apptPhone2">Phone*</label>
<input type="text" name="apptPhone2" class="form-control" id="apptPhone2" placeholder="Phone">
<?php if (isset($apptErrors2['apptPhonePgTwo2'])) { echo '<div class = "pink-text"/><p>', $apptErrors2['apptPhonePgTwo2'] , '</p></div>'; } ?>
</div>
<div class="form-group cushion">
<label for="apptMessage2">Message:</label>
<textarea class="form-control" name="apptMessage2" rows="5" id="apptMessage2"></textarea>
</div>
<div class="cushion text-center">
<button type="submit" name="appt-form-2" class="btn btn-danger btn-md">Request</button>
</div>
</form>
答案 0 :(得分:0)
您只需要两个表单,并在每个表单中添加一个包含该特定表单ID的隐藏和只读输入,以便在提交表单时,您的处理页面将知道如何处理数据。所有处理页面都必须查看&#34; form_id&#34;中的内容。字段以了解提交的表单。
示例:
<form action="processingpage.php">
<input type="text" name="form_id" value="AppointmentForm" readonly/>
...
</form>
<form action="processingpage.php">
<input type="text" name="form_id" value="SomethingElseForm" readonly/>
...
</form>
从技术上讲,你可以取消隐藏的&#34; form_id&#34;输入并只使用两个不同的处理页面,但我上面提供的例子是你绝对必须只使用一个处理页面。
答案 1 :(得分:0)
如果我没有理解错误,您希望通过留在当前页面来单独处理它们。然后我可以告诉我有两种选择:
每页一页 这将为您提供简洁的设计,并且可能会更直观地被用户理解。
异步处理每个表单。 您可以使用目标iframe(How do you post to an iframe?),也可以使用JavaScript函数来执行此操作。
使用JavaScript对我来说更优雅,但需要更多工作。你可以这样做:
$("#form-id").submit(function(e){
e.preventDefault();
var form = {};
form.field1 = $("#field1").val();
form.field2 = $("#field2").val();
var url = "your-submit-url";
$.post(url, form)
.done(function(data) {
// do some success action
})
.fail(function(){
// do some failure action
})
.always(function(){
// do some action (optional) at the end
});
});
答案 2 :(得分:0)
感谢您的帮助。这就是我最终做到的方式。我在每个表单上添加一个隐藏的输入类型。
<input type="hidden" value="Listing One" name="apptType">
我只使用一个处理页面。在处理页面上,我添加了这个,以便我可以识别正在填写的表单,并通过电子邮件发送信息:
if (isset($_POST['apptType'])):
if ($_POST['apptType']== "Listing One" ):
$messagePt = "Some message here:";
$headerPT ="location: some page here" ;
endif;
(repeat above code for each value "Listing One" thru "Listing Ten")
end if;