繁体   English   中英

使用 Php 通过表单将项目添加到数组

[英]Add items to the array through a form using Php

我需要通过我制作的网站上的表单将项目添加到我现有的数组中。 基本上,一旦我在表单上提交了一些内容,它就需要将项目添加到数组中,我只能使用 php 和 html 来解决这个问题。

我尝试了array_push,但它没有给我我需要的东西,因为它不使用表单

<form action="" method="post">
    <input type="text" name="boodschappen"><br><br>
    <input type="submit" value="Verstuur">
</form>
<ul>
    <?php
    $boodschappen = ["aardappelen","aardbeien","3 pakken melk","yoghurt"];

    foreach ($boodschappen as $boodschap) {
        echo "<li>".$boodschap."</li>";
    }
    ?>
</ul>
</body>
</html>
<?php
$post = $_POST;
$boodschappen = ["aardappelen","aardbeien","3 pakken melk","yoghurt"];
$result = array_merge($post, $boodschappen);

foreach ($result as $item) {
        echo "<li>".$item."</li>";
}
<?php
$a=array("red","green");
array_push($a,"blue","yellow");

echo "<pre>";
print_r($a);
?>

也许像这样?

<html>
    <head><title></title></head>
    <body>
        <form action="" method="post">
            <input type="text" name="boodschappen"><br><br>
            <input type="submit" value="Verstuur">
        </form>
        <ul>
            <?php

                $boodschappen = ["aardappelen","aardbeien","3 pakken melk","yoghurt"];

                if( $_SERVER['REQUEST_METHOD']=='POST' && !empty( $_POST['boodschappen'] ) ){
                    $boodschappen=array_merge( $boodschappen, explode(' ', $_POST['boodschappen'] ) );
                }

                foreach( $boodschappen as $boodschap ) {
                    echo "<li>".$boodschap."</li>";
                }
            ?>
        </ul>
    </body>
</html>

要使用持久性更新数组,您可以使用 session 变量,如下所示:

<?php
    session_start();

    if( !isset( $_SESSION['boodschappen'] ) ){
        $_SESSION['boodschappen']=["aardappelen","aardbeien","3 pakken melk","yoghurt"];
    }

?>
<html>
    <head>
        <title></title>
    </head>
    <body>
        <form action="" method="post">
            <input type="text" name="boodschappen"><br><br>
            <input type="submit" value="Verstuur">
        </form>
        <ul>
            <?php



                if( $_SERVER['REQUEST_METHOD']=='POST' && !empty( $_POST['boodschappen'] ) ){
                    $items=explode(' ', $_POST['boodschappen'] );
                    foreach( $items as $item )$_SESSION['boodschappen'][]=$item;
                }

                foreach( $_SESSION['boodschappen'] as $boodschap ) {
                    echo "<li>".$boodschap."</li>";
                }
            ?>
        </ul>
    </body>
</html>

如果我正确理解您的代码,您将需要某种持久存储来存储列表中所有先前提交的内容。 数据库将是长期存储的理想选择。 Session将是最低要求:

<?php

session_start();

if (!isset($_SESSION['past_submission']) || !is_array($_SESSION['past_submission'])) {
  $_SESSION['past_submission'] = [];
}
if (!empty($_POST) && isset($_POST['boodschappen']) && !empty(trim($_POST['boodschappen']))) {
  array_push($_SESSION['past_submission'], $_POST['boodschappen']);
}
$past_submission = $_SESSION['past_submission'];

?>
<html>
<body>
<form action="" method="post">
    <input type="text" name="boodschappen"><br><br>
    <input type="button" value="Verstuur">
</form>
<ul>
    <?php
    $boodschappen = ["aardappelen","aardbeien","3 pakken melk","yoghurt"];
    array_push($boodschappen, ...$past_submission);

    foreach ($boodschappen as $boodschap) {
        echo "<li>".$boodschap."</li>";
    }
    ?>
</ul>
</body>
</html>

请注意,Session 仅适用于访客 session。 其他访问者或您无法获得这些数据。

如前所述,您可能需要一个MariaDB / MySQL / PostgreSQL来长期存储提交。 您可能需要使用PDO将数据插入数据库或从数据库中检索数据。

    <?php session_start(); ?>
    <ul>
        <?php
        if (!empty($_POST['submit'])) {

            $_SESSION['boodschappen'][] = $_POST['boodschap'];

           foreach ($_SESSION['boodschappen'] as $boodschap) {
               echo "<li>".$boodschap."</li>";
           }
        } else {
           $_SESSION['boodschappen'] = [];
        }  
        ?>
    </ul>
    <form action="" method="post">
        <input type="text" name="boodschap"><br>
        <input type="submit" name="submit" value="Verstuur">
    </form>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM