【问题标题】:save selection in session and show in table在会话中保存选择并在表格中显示
【发布时间】:2015-08-24 04:23:48
【问题描述】:

我有一个选择器,可以从我的数据库中选择所有数据。

<?php
        $results = $database->Selector();
?>
        <form name='form' method='POST' id='selector'>
            <select name='train_id[]' id='train_name' multiple='multiple'>
            <?php
                foreach($results as $train_details){ //Look through every result in DB
                        echo "<option value=" . $train_details['train_id'] . ">" . $train_details['train_name'] . "</option>";
                }
            ?>
            </select><br />
            <td>
                <input type='submit' name='Add' value='Add to list'/>
            </td>
        </form>
<?php
    include 'train_selector_result.php'; //This will display the results (will show page later)

还有“train_selector_result.php”页面:

<?php
    if(isset($_POST['train_id'])){
//Table stuff here (Won't place here because too long)
//And then the table results:
    foreach ($_POST['train_id'] as $selectedOption){
        $test = $database->testingSelector($selectedOption);
                    foreach($test as $lol){
                ?>
                <tr> 
                    <td name="train_name"><?= $lol['train_name']?></td>
                    <td><?= $lol['number_of_bogies']?></td>
                    <td><?= $lol['number_of_axles']?></td>
                    <td><a href="expand_info.php?train_id=<?= $lol['train_id']?>">More Information</a></td>
                    <td><a href="train_model.php?train_id=<?= $lol['train_id']?>">Model</a></td> 
                    <td><input type="checkbox" name="checkbox[]" value="<?= $lol['train_id']?>"></td>
                </tr>
                <?php
                    }
    }
}

功能:

function testingSelector($selectedOption){
        $sql = "SELECT * FROM train_information WHERE train_id = :train_id";
        $sth = $this->pdo->prepare($sql);
        $sth->bindParam(":train_id", $selectedOption, PDO::PARAM_STR);
        $sth->execute();
        return $sth->fetchAll();
    }

function selector() {
        $sql = "SELECT train_name, train_id FROM train_information ORDER BY train_name";
        $sth = $this->pdo->prepare($sql);   
        $sth->execute();
        return $sth->fetchAll();
    }

这一切都很好。当我从选择器中选择多个项目并按下提交按钮时,它会显示这些选定的项目。

但是,我不希望它们在我添加另一个或进入主屏幕时消失。所以我想把它们放在一个会话中。

我尝试将它们放入会话中,但没有成功。 (得到未发现的索引错误)。 我是怎么做到的:

<?php
    if(isset($_POST['train_id'])){
//Table stuff here (Won't place here because too long)
//And then the table results:
    foreach ($_POST['train_id'] as $selectedOption){
        $test = $database->testingSelector($selectedOption);
        $_SESSION['selector'] = $test
                    foreach($_SESSION['selector'] as $lol){
                ?>
                <tr> 
                    <td name="train_name"><?= $lol['train_name']?></td>
                    <td><?= $lol['number_of_bogies']?></td>
                    <td><?= $lol['number_of_axles']?></td>
                    <td><a href="expand_info.php?train_id=<?= $lol['train_id']?>">More Information</a></td>
                    <td><a href="train_model.php?train_id=<?= $lol['train_id']?>">Model</a></td> 
                    <td><input type="checkbox" name="checkbox[]" value="<?= $lol['train_id']?>"></td>
                </tr>
                <?php
                    }
    }
}

但是这不起作用...(已经开始一个会话,因为我已经登录了!)

编辑:

当我选择 3 列火车并按下提交时的样子:

当我再添加 1 个时,它看起来像这样:

如您所见,表格已重置。虽然我实际上希望它添加 1 个额外的列!

【问题讨论】:

  • &lt;form name='form' method='POST' id='selector'&gt; 标签中添加 action 属性,以便它转到应该为会话赋予值的页面。
  • 但我不想要那个。因为选择器在首页,我想在首页看到结果。
  • 好吧,我想我明白了。您的主页中是否有某个地方可以检查用户是否检查/单击了selector,因此它会添加到SESSION 中?
  • 我有 index.php。我需要选择器(顶部代码)。在那里我检查用户点击的内容等。然后当他按下提交时。选择器下的表格使用刚刚检查的详细信息创建。
  • 您的javascript 代码在哪里?

标签: php html session selector


【解决方案1】:

正如我们在聊天中讨论的:

在您的train_selector_result.php 页面中更改为此

foreach ($_POST['train_id'] as $selectedOption){
    //if has selected selector, then add to session 
    $test = $database->testingSelector($selectedOption); 
    $_SESSION["selector"][] = $test; 
} 

foreach ($_SESSION["selector"] as $result){
    $lol = $result[0];
    ?> 
    <tr> 
    <td name="train_name"><?= $lol['train_name']?></td> 
    <td><?= $lol['number_of_bogies']?></td> 
    <td><?= $lol['number_of_axles']?></td> 
    <td><a href="expand_info.php?train_id=<?= $lol['train_id']?>">More Information</a></td> 
    <td><a href="train_model.php?train_id=<?= $lol['train_id']?>">Model</a></td> 
    <td><input type="checkbox" name="checkbox[]" value="<?= $lol['train_id']?>"></td> 
    </tr> 
    <?php 
} 

【讨论】:

  • 非常感谢您抽出宝贵时间帮助我!
  • 我们随时为您提供帮助! :D
猜你喜欢
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多