我是PHP的新手,我遇到了以下问题。我想写一个简单的表单,它接受多个输入字段并传递给其他页面以在多行中打印这些值,例如参见下面的屏幕截图。我的问题是我想使用循环所以我不需要写所有变量名和多行..我如何使用循环来实现以下解决方案?
这是提交后的输出..
这是index.php的代码
<html>
<body>
<form action="welcome.php" method="post">
Build File: <input type="text" name="1bname">
WAR File: <input type="text" name="1wname">
Study: <input type="text" name="1study">
Bug: <input type="text" name="1bug">
<br>
Build File: <input type="text" name="2bname">
WAR File: <input type="text" name="2wname">
Study: <input type="text" name="2study">
Bug: <input type="text" name="2bug">
<input type="submit">
</form>
</body>
</html>
这是welcome.php
<html>
<body>
<pre>{ ignore(FAILURE) { build( "Deploy", BUILDFILE: "<?php echo $_POST["1bname"]; ?>", WARFILE: "<?php echo $_POST["2wname"]; ?>", STUDY: "<?php echo $_POST["1study"]; ?>", BUG: "<?php echo $_POST["1bug"]; ?>" )}},
<pre>{ ignore(FAILURE) { build( "Deploy", BUILDFILE: "<?php echo $_POST["2bname"]; ?>", WARFILE: "<?php echo $_POST["2wname"]; ?>", STUDY: "<?php echo $_POST["2study"]; ?>", BUG: "<?php echo $_POST["2bug"]; ?>" )}},
</body>
</html>
答案 0 :(得分:8)
您最好的选择是使用数组,如下所示:
<input type="text" name="bname[]" />
<input type="text" name="wname[]" />
<input type="text" name="study[]" />
<input type="text" name="bug[]" />
然后你可以用一个简单的循环来处理它们:
<?php $count = count($_POST['bname']);
for ($i = 0; $i < $count; $i++) { ?>
<pre>{ ignore(FAILURE) { build( "Deploy", BUILDFILE: "<?php echo $_POST["bname"][$i]; ?>", WARFILE: "<?php echo $_POST["wname"][$i]; ?>", STUDY: "<?php echo $_POST["study"][$i]; ?>", BUG: "<?php echo $_POST["bug"][$i]; ?>" )}}
<?php } ?>
答案 1 :(得分:1)
billyonecan的回答是正确的,但没有太多解释,所以我会添加一些例子。
想象一下HTML表单,如下所示:
<form method="POST">
<input type="text" name="first_name[]" />
<input type="text" name="first_name[]" />
<input type="text" name="first_name[]" />
</form>
这将作为一个数组进入php,就好像你已经这样做了:
$_POST['first_name'] = array("thomas", "billy", "jeoff");
因此,您可以遍历此数组以获取不同的值:
foreach($_POST['first_name'] as $name){
echo $name."<br />"; // this will print a list of names
}
显然,您可以将这些原则用于特定情况。 :)
HTH
答案 2 :(得分:1)
在welcome.php中使用 foreach 循环,并为输入定义数组:
<html>
<head>
<script language="javascript">
fields = 0;
function addInput() {
var con = document.getElementById('text');
if(fields != 10)
{
con.insertAdjacentHTML('beforeend', "Build File: <input type=\"text\" name=\"bname[]\">WAR File: <input type=\"text\" name=\"wname[]\">Study: <input type=\"text\" name=\"study[]\">Bug: <input type=\"text\" name=\"bug[]\"><br />");
fields += 1;
}
else
{
con.insertAdjacentHTML('beforeend', "<br />Only 10 instances allowed.");
document.form.add.disabled=true;
}
}
</script>
</head>
<body>
<form action="welcome.php" method="post" name="form">
Build File: <input type="text" name="bname[]">
WAR File: <input type="text" name="wname[]">
Study: <input type="text" name="study[]">
Bug: <input type="text" name="bug[]">
<br />
Build File: <input type="text" name="bname[]">
WAR File: <input type="text" name="wname[]">
Study: <input type="text" name="study[]">
Bug: <input type="text" name="bug[]">
<br />
<div id="text">
</div>
<input type="submit" value="Submit">
<input type="button" onclick="addInput()" name="add" value="Add more inputs" />
</form>
</body>
</html>
在welcome.php中:
<html>
<body>
<?php foreach($_POST['bname'] as $id => $value) { ?>
<pre>{ ignore(FAILURE) { build( "Deploy", BUILDFILE: "<?php echo $_POST["bname"][$id]; ?>", WARFILE: "<?php echo $_POST["wname"][$id]; ?>", STUDY: "<?php echo $_POST["study"][$id]; ?>", BUG: "<?php echo $_POST["bug"][$id]; ?>" )}},</pre>
<?php } ?>
</body>
</html>
答案 3 :(得分:0)
也许你最好使用array()方法,因为它会照顾你想要完成的事情?
答案 4 :(得分:0)
根据billyonecan的回答,您的服务器端脚本可能是这样的:
$bname_array = $_POST['bname'];
$wname_array = $_POST['wname'];
$study_array = $_POST['study'];
$bug_array = $_POST['bug'];
for($i=0; $i<count($bname_array); $i++){
// your code
}
答案 5 :(得分:0)
我看到你在所有输入区域前都有一个数字id,你可以这样做:
<?php
$totalRow=2;
for($i=0, $i<$totalRow,$i++)
{
?>
<pre>{ ignore(FAILURE) { build( "Deploy", BUILDFILE: "<?php echo $_POST[$i."bname"]; ?>", WARFILE: "<?php echo $_POST[$i."wname"]; ?>", STUDY: "<?php echo $_POST[$i."study"]; ?>", BUG: "<?php echo $_POST[$i."bug"]; ?>" )}},
<?php
}
?>