0

私は学校比較ウェブサイトに取り組んでいます。このためには、その機能を処理するプラグインが必要です。セッションデータを学校 ID として保存し、学校を選択した後に比較表に渡すことができるようにします。

私が問題を抱えているタスク:

  1. 「ボタンを追加」 - ポスト/学校 ID をセッション配列に追加 - $_SESSION['schools']
  2. 上部のダッシュボード - $_SESSION['schools'] の値をエコーし​​ます (ユーザー エクスペリエンスのために、現在リストにある学校をリストします)
  3. 「追加ボタン」が押されると、ダッシュボードのリストが自動的に更新されます。できればページ全体ではありません。

これまでの私の試み:

まず、PHP フォーム アクションにコメントしました。

    <?php   session_start();    
    $schools = array('post_id');

    //If form not submitted, display form. 
    if (!isset($_POST['submit_school'])){

    //If form submitted, process input.
    } else {
        //Retrieve established school array.
        $schools=($_POST['school']);
        //Convert user input string into an array.
        $added=explode(',',$_POST['added']);

        //Add to the established array.
        array_splice($schools, count($schools), 0, $added);
        //This could also be written $schools=array_merge($schools, $added);

    }

    $_SESSION['schools'] = $schools;
?>

次はフォーム自体です。

    <form method="post" action="http://henrijeret.ee/7788/temp_add_button.php" id="add_school">
    <input type="hidden" name="added" value="Value" size="80" />
    <?php
        //Send current school array as hidden form data.
        foreach ($schools as $s){
            echo "<input type=\"hidden\" name=\"school[]\" value=\"$s\" />\n";
        }
    ?>
    <input type="submit" name="submit_school" value="Lisa võrdlusesse" />
</form>

そして、私が使用するダッシュボードの場合:

    <?php


    foreach($_SESSION['schools'] as $key => $value){
        // and print out the values
        echo 'The value of $_SESSION['."'".$key."'".'] is '."'".$value."'".' <br />';
    }
?>

これは、目の前のタスクの周りにヘッド ラッパーを配置するための単なるプロトタイプです...

問題 何か気分が悪い.. :P

フォームを送信すると、最初の変更が行われません。もう一度押すと、リストが更新され、最後の文字列が除外されます。ページ全体を更新すると、最後のページがポップアップします

私はこの長いトピックに関するアドバイスを非常に感謝しています..どこを見ればいいのかわからないかもしれませんが、解決策を探すのに少し行き詰まっています..

私の実行中のコードへのリンクhttp://henrijeret.ee/7788/

4

1 に答える 1

0

最初の実行時にフォームを送信しています.. URL の変更を確認すると、次の実行時に..これを取得してから

  //If form not submitted, display form. 
    if (!isset($_POST['submit_school'])){

    //If form submitted, process input.
    } else {
        //Retrieve established school array.
        $schools=($_POST['school']);
        //Convert user input string into an array.
        $added=explode(',',$_POST['added']);

        //Add to the established array.
        array_splice($schools, count($schools), 0, $added);
        //This could also be written $schools=array_merge($schools, $added);

    }

POST が既に設定されているため、else ステートメントに移動します。

これを試して:

 //If form not submitted, display form. 
    if (!isset($_POST['submit_school'])){

    //If form submitted, process input.
    } else {
        //Retrieve established school array.
        $schools=($_POST['school']);
        //Convert user input string into an array.
        $added=explode(',',$_POST['added']);

        //Add to the established array.
        array_splice($schools, count($schools), 0, $added);
        //This could also be written $schools=array_merge($schools, $added);

       $_SESSION['schools'] = $schools;

    }
于 2013-07-03T09:09:26.167 に答える