0

送信ボタンをクリックするたびに、フォームから div タグにテキストをエコーするスクリプトが必要です。

私はすぐにそれを行うことができましたが、別のものを送信してもテキストがdivに表示されるようにしたい. 新しく送信されたすべてのテキストでリストを作成したい。以前のリストに追加します。

これはデータベースに関係している可能性がありますが、送信をクリックするたびに現在のテキストが送信されるだけなので、知りたいです。

そのようなスクリプトの例

<?php 
$text = $_POST['text'];

?>
<html>
<div>
<?php echo "<ul>";
echo "<li>".$text."</li>";
echo "</ul>";
?>
</div>

<form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="text" /><br/>
<input type="submit" value="Submit"/>
</form>

</html>

<li>送信をクリックするたびにリストにエントリを追加したいだけです。

4

4 に答える 4

1

楽しんでいただけて嬉しいです。これが簡単な「10のスターター」です:)

<?php
$items = array();
if('POST' === $_SERVER['REQUEST_METHOD']) {
    if( ! empty($_POST['item'])) {
        $items[] = $_POST['item'];
    }
    if(isset($_POST['items']) && is_array($_POST['items'])) {
        foreach($_POST['items'] as $item) {
            $items[] = $item;
        }
    }
}
?>
<html>
    <head>
        <title>Demo</title>
    </head>
    <body>
        <?php if($items): ?>
            <ul>
                <?php foreach($items as $item): ?>
                    <li><?php echo $item; ?></li>
                <?php endforeach; ?>
            </ul>
        <?php endif; ?>
        <form method="post">
            <input type="text" name="item" />
            <input type="submit" value="Add Item" />
            <?php if($items): ?>
                <?php foreach($items as $item): ?>
                    <input type="hidden" name="items[]" value="<?php echo $item; ?>" />
                <?php endforeach; ?>
            <?php endif; ?>
        </form>
    </body>
</html>
于 2013-05-18T21:05:44.733 に答える
0

セッション変数に追加し続ける必要があり、配列を使用するのが最善です。

そのようです;

<?php 

session_start(); // This is needed to keep your session

if(!isset($_SESSION['text'])){
   // set session array if not already set previously
   $_SESSION['text'] = array();
}

if($_SERVER['REQUEST_METHOD'] == 'POST' && strlen($_POST['text']) > 0){
   // add text to session array and escape for security
   $_SESSION['text'][] = htmlspecialchars($_POST['text'], ENT_QUOTES);
}

?>

<html>
<div>
<ul>
<?php foreach($_SESSION['text'] AS $text): ?>
<li><?php echo $text; ?></li>
<?php endforeach; ?>
</ul>
</div>

<form method="POST">
Name: <input type="text" name="text" /><br/>
<input type="submit" value="Submit"/>
</form>

</html>

編集:後で戻って同じリストを表示したい場合、これは現在のセッションでのみ機能します。データベースのような場所に値を保存する必要があります。

于 2013-05-18T21:03:15.213 に答える
0

私も声をかけようと思いました。これは、ページの現在のインスタンスでのみ機能する単純なソリューションです。

<?php 
if ( isset( $_POST['text'] ) ) { # Find out if the form had been submitted
    $text = $_POST['text']; # If so then store the submitted text in the $text var

    if ( isset( $_POST['previous'] ) ) { # Find out if there were any previous inputs
        $current = $_POST['previous'] . "," . $_POST['text']; # If there were then pop the latest one on the end of the previous ones with a comma and make that our current set of text
    } else {
        $current = $_POST['text']; # Otherwise the current set of text just comprises our most recently input text
    }
}
?>
<html>

<div>
<?php 
if ( isset( $_POST['text'] ) ) { # Find out if some text was input
    $text_arr = explode(",", $current); # If it was then take our current set of text and make an array from it
    echo "<ul>"; # Start the list
    foreach ( $text_arr as $text ) { # For each item of text that has previously been input
        echo "<li>".$text."</li>"; # Print out the list item with the text in it
    }
    echo "</ul>"; # End our list
}
?>
</div>

<form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">

<?php if ( isset( $_POST['text'] ) ) { ?> # If the previous form submitted some text
<input type="hidden" name="previous" value="<?php echo $current ?>" /> # Store it in a hidden input field to be submitted later
<?php } ?>

Name: <input type="text" name="text" /><br/>
<input type="submit" value="Submit" />
</form>

</html>

したがって、これは必要なことを行いますが、データベースに保存する必要はありません。データベースへの保存が目的である場合は、MySQL について調査するか、リスト アイテムを永続的に保存する他の方法を検討することをお勧めします。

私がこれを入力している間に、他の多くの人が答えを見つけたと確信しています...

于 2013-05-18T21:17:17.950 に答える