PHP:Function()检查表单索引数组

时间:2014-09-13 14:31:35

标签: php arrays forms loops indexing

编辑: 我解决了我的问题: 感谢大家的评论,这有助于我以不同的方式思考: 我不知道回归......;表现得这样(我相信它只是发送价值而不是结束功能),所以就像我说的那样,我只是开始,我是'新手...... 我用多维数组解决了我的问题,我认为它应该像我现在想的那样工作。我在这篇文章的末尾发布了代码。

-------------------------------------------- ----------------

我试图制作一个基本的检查表单功能,用于检查我未来网站上的所有表单。我花了几个小时(几天......)来做这个简短的代码,因为我是PHP的新手,我刚刚开始几天前。 这是Idea(请注意,表单更大,我只是为了调试创建了一个较小的版本)。 PHP库包含在HTML页面中的require():

function check_form() {
    $n = 0;
    $indexed = array_values($_POST);
    // How should I do to make this loop,
    // to edit the HTML of each input one by one,
    // without modifying other input that the one corresponding
    // to the $n position in the table ?
    if (isset($indexed[$n])) {
        if (!empty($indexed[$n])) {
            $value = $indexed[$n];
            $icon = define_article_style()[0];
            $color = define_article_style()[1];
        } else {
            $value = define_article_style()[4];
            $icon = define_article_style()[2];
            $color = define_article_style()[3];
        }
        $form_data_input = array($value, $icon, $color);
        return $form_data_input;
    }
}

HTML表单:

        <form role="form" method="post" action="#checked">
            <div class="form-group <?php echo check_form()[1]; ?>">
                <label class="sr-only" for="title">Title</label>
                <input type="text" name="title" class="form-control input-lg" id="title"  placeholder="Enter title * (min: 5 characters, max: 30 characters)" value="<?php echo check_form()[0]; ?>">
                <?php echo check_form()[2]; ?>
            </div>
            <div class="form-group <?php echo check_form()[1]; ?>">
                <label class="sr-only" for="another">Title</label>
                <input type="text" name="another" class="form-control input-lg" id="another"  placeholder="Enter title * (min: 5 characters, max: 30 characters)" value="<?php echo check_form()[0]; ?>">
                <?php echo check_form()[2]; ?>
            </div>
            <button type="submit" class="btn btn-default" name="check_article" value="#checked">Check</button>
        </form>

我的问题是返回到输入的值始终是&#34; title&#34;的内容,例如,如果

    $array[0] = $indexed[$index];
    $array[1] = define_article_style()[0];
    $array[2] = define_article_style()[1];

for&#34; title&#34;等于

    $array[0] = "blabla";
    $array[1] = "myclass1";
    $array[2] = "myclass2";

表单的所有其他输入(在这种情况下,它只是&#34;另一个&#34;)具有相同的值。 我有点困惑,我不太清楚一切是如何运作的,但我认为这与输入共享$array[n]以获得他们的价值观/风格这一事实有关,但我不知道&#39}我真的明白如何保持这个概念并让它发挥作用。 因此,如果您了解什么不在这里工作,我会对解释感兴趣(请记住,我是代码中的新手,以及PHP。) 谢谢。 问候。

-------------------------------------------- ----------------

这是我的工作代码(我必须验证,但我认为它可以正常工作)。

function check_form() {
    $n = 0;
    $index_post = array_values($_POST);
    while ($n < count($index_post)) {
        if (isset($index_post[$n])) {
            if (!empty($index_post[$n])) {
                $value[$n] = $index_post[$n];
                $color[$n] = define_article_style()[0];
                $icon[$n] = define_article_style()[1];
            } else {
                $value[$n] = define_article_style()[4];
                $color[$n] = define_article_style()[2];
                $icon[$n] = define_article_style()[3];
            }
        }
        $array_all = [$value, $color, $icon];
        $n = $n + 1;
    }
    return $array_all;
}

再次,感谢您的回答,很高兴看到即使是新手也不了解他们在使用此功能时所做的一半,而不是其他功能。 表示赞许,满意,胜利。 问候。

1 个答案:

答案 0 :(得分:0)

您的代码中有很多错误:

首先:我认为你有一个视图文件“form.php”以及“submit_form.php”中提交表单的过程,所以在你的html代码中你需要修复它(动作)属性):

 <form role="form" method="post" action="submit_form.php">

第二:您有2个输入标签,名称为“title”和“another”,因此$ _POST数组有2个索引: $ _POST [“title”],$ _POST [“另一个”],你可以查看这个数组的内容:

var_dump($_POST); // this function print all the data of this array, check it.