从文本框读入数组php

时间:2016-07-01 11:39:23

标签: php html list post

文件index.php

<html>  
<head>
    <title>Guset Book</title>
</head>

<body>
    <h3>Guest book</h3>
    <a href="/addNew.php">
        <p><input type="button" value="Add in book" ></p>
    </a>
    <a href="/readAll.php">
        <p><input type="button" value="Read all"></p>
    </a>
</body>

文件addNew.php

<html>  
<head>
    <title>Guset Book</title>
</head>

<body>
    <h3>New</h3>

    <form name='formAddNew' method='post' action="ControllerAdd.php">
        <p>Author: <input type="text" name="nameAuthor"></p>
        <p>Comment:</p>
        <p><textarea rows="5" cols="40" name="commentAuthor" style="resize: none;"></textarea></p>  
        <p><input type="submit" name="submitAuthor" value="Submit"></p>
    </form>
</body>

文件Model.php

<?php
class GuestBook
{
    private $author;
    private $comment;

    function __construct($author, $commment)
    {
        $this->author = $author;
        $this->comment = $commment;
    }

    public function getAuthor()
    {
        return $this->author;
    }

    public function getComment()
    {
        return $this->comment;
    }
}
$guestBookList = new ArrayObject();
$guestBookList[] = new GuestBook("Author", "Comment");

function addInList($author, $comment)
{
    $guestBookList[] = new GuestBook($author, $comment);
}

&GT;

文件ControllerAdd.php

<html>
<head>
    <title>Add</title>
</head>

<body>
    <?php
        require_once "Model.php";
        addInList($_POST["nameAuthor"], $_POST["commentAuthor"]);
    ?>
    <h3>Succes</h3>
    <a href="/"><input type="button" value="On main"></a>
</body>

文件readAll.php

<html>
<head>
    <title></title>

</head>

<body>
    <?php 
        require_once "Model.php"; 

        foreach($guestBookList as $value)
        {
            echo("<br>-----------<br>");
            echo($value->getAuthor());
            echo("<br>");
            echo($value->getComment());
        }
    ?>
</body>

问题是编译器不会抛出错误,但不要将代码从文本框写入数组。它以正确的方式读取文本框中的信息,但不要写入数组Plz帮助。

3 个答案:

答案 0 :(得分:0)

在这种情况下,

Session是传递变量的最佳方式

如果我理解正确,那么你想从两个页面传递text filds值并在数组的第3页中使用它们。

将此作为参考

index.php

<?php
session_start();
if(isset($_POST['submit'])){
    if(!empty($_POST['tex1'])){
        $_SESSION['tex1'] = $_POST['tex1'];
        header('location:form.php');        
    }   
}
?>
<form method="POST">
<input type="text" name="tex1">
<input type="submit" name="submit" value="submit">
</form>

form.php
<?php
session_start();
if(isset($_POST['submit'])){
    if(!empty($_POST['tex2'])){
        $_SESSION['tex2'] = $_POST['tex2'];
        header('location:final_page.php');      
    }

}
?>
<form method="POST">
<input type="text" name="tex2">
<input type="submit" name="submit" value="submit">
</form>

final_page.php

<?php
session_start();
print_r($_SESSION);

$_SESSIONglobal variable的{​​{1}}。 阅读有关会话的更多信息。请阅读http://php.net/manual/en/reserved.variables.session.php

答案 1 :(得分:0)

file1.php

<?php
    session_start();
    $formData = $_POST['data'];
    //echo '<pre>'; print_r($formData); die;
    $_SESSION['formData'] = $formData;
    echo 'Open File 3 to check submitted data.'
?>

file2.php

<?php
session_start();
if(isset($_SESSION['formData']) && $_SESSION['formData'] != ''){
    print_r($_SESSION['formData']);
} else {
    echo 'Submit form first.';
}
session_destroy();
?>

file3.php

a

答案 2 :(得分:0)

我建议您在特定情况下需要更改模型的行为,如下所示:

  

它只是一个例子,不能按原样使用

     

我想,这段代码不会导致OP源崩溃

<?php
class GuestBook {
    private $source;
    private $book;

    function __construct($filename) {
        $this->book = array();
        $this->source = $filename;
        $this->restore();
    }

    function getBook() {
        return $this->book;
    }

    function restore() {
        if (file_exists($this->source)) {
            $records = file($this->source);
            if (is_array($records)) {
                while (count($records)) {
                    $line = trim(array_shift($records));
                    list($author, $comment) = explode(':splitter:',$line);
                    $this->book[] = new GuestBookRecord($author, $comment);
                }
            }
        }
    }

    function save() {
        $fd = fopen($this->source, 'w');
        foreach ($this->book as $record) {
            fwrite($fd, $record->getAuthor().':splitter:'.$record->getComment().PHP_EOL);
        }
        fclose($fd);
    }

    function addComment($author, $comment) {
        $this->book[] = new GuestBookRecord($author, $comment);
        $this->save();
    }
}

class GuestBookRecord {
    private $author;
    private $comment;

    function __construct($author, $commment) {
        $this->author = $author;
        $this->comment = $commment;
    }

    public function getAuthor() {
        return $this->author;
    }

    public function getComment() {
        return $this->comment;
    }
}

$guestBook = new GuestBook('sample.txt');

// compatibility with OP source
$guestBookList = $guestBook->getBook();

// compatibility with OP source
function addInList($author, $comment) {
    global $guestBook;
    $guestBook->addComment($author, $comment);
}

但它不太好。这里至少有2个问题,第一个 - 代码将所有记录读入内存,第二个 - 并发访问。这只是一个例子。