PHP输入值传递给循环

时间:2013-05-17 14:28:36

标签: php linux

我是PHP的新手,我遇到了以下问题。我想写一个简单的表单,它接受多个输入字段并传递给其他页面以在多行中打印这些值,例如参见下面的屏幕截图。我的问题是我想使用循环所以我不需要写所有变量名和多行..我如何使用循环来实现以下解决方案?

enter image description here

这是提交后的输出..

enter image description here

这是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>

6 个答案:

答案 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
}

?>