0

我是 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>
4

6 回答 6

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 } ?>
于 2013-05-17T14:30:57.920 回答
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>
于 2013-05-17T14:39:04.400 回答
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
}

您显然可以采用这些原则并将它们用于您的特定情况。:)

高温高压

于 2013-05-17T14:36:33.107 回答
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

}
于 2013-05-17T14:36:18.870 回答
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
}

?>
于 2013-05-17T14:36:43.263 回答
0

也许使用 array() 方法会更好,因为它会照顾你想要完成的事情?

于 2013-05-17T14:34:04.177 回答