首页 > 解决方案 > codeigniter 单选按钮表单的问题

问题描述

我是 php 和 codeigniteran 的初学者我有一个关于我在 codeigniter 中创建的调查投票表格的问题。我不知道调查的创建者写了多少答案,所以我必须编写一个动态页面,用户看到的单选按钮与答案一样多。

控制器:

public function vote($frage_id){

        if(!$this->ion_auth->logged_in()){
            redirect('auth/login');
        }

        $antworten = $this->antwort_model->getbyFrageid($frage_id);
        $frage = $this->fragen_model->get($frage_id);

        foreach($antworten as $antwort){
        $this->form_validation->set_rules('antworten',$antwort['inhalt']);
        }

        if($this->form_validation->run() === FALSE){

            $data = array(
                'frage' => $frage,
                'antworten' => $antworten
            );

            $this->load->view('templates/header');
            $this->load->view('antwort/vote', $data);
            $this->load->view('templates/footer');
            print_r($antworten);



        }
        else{
            $antwort_id;
            foreach($antworten as $antwort){

                if($antwort['inhalt'] = $this->input->post('antworten')){
                    $antwort_id = $antwort['id'];
                }
            }
            $user_id = $this->ion_auth->get_user_id();
            $this->antwort_model->set($antwort_id,$user_id);
            redirect('umfrage/display/'.$frage['umfrage_id']);

        }
    }
}

看法;

<?php echo validation_errors(); ?>

<h1><?php echo $frage['inhalt'];?></h1>

<?php echo form_open('antwort/vote/'.$frage['id']); ?>
    <?php foreach($antworten as $antwort){ ?>
        <label for="antworten" ><?php echo $antwort['inhalt'];?></label>
        <input type="radio" name="antworten" value = "<?php $antwort['inhalt'];?>"<?=set_radio('antworten',$antwort['inhalt'])?> /><br />

    <?php } ?>
<input type="submit" name="submit" value="Submit" />

</form>

由于某种原因,form_validation() 总是返回 false。

请帮忙

提前谢谢

标签: phpcodeigniter-3

解决方案


如果您在浏览器上查看您的 HTML 源代码以查看需要生成的 HTML,您应该看到您必须找到更多的“回显”命令。

<?php echo validation_errors(); ?>
<h1><?php echo $frage['inhalt'];?></h1>
<?php echo form_open('antwort/vote/'.$frage['id']); ?>
    <?php foreach($antworten as $antwort){ ?>
        <label for="<?php $antwort['inhalt'];?>" ><?php echo $antwort['inhalt'];?></label>
        <input type="radio" name="<?php $antwort['inhalt'];?>" value = "<?php $antwort['inhalt'];?>" /><br />
    <?php } ?>
<input type="submit" name="submit" value="Antwort abgeben" />
</form>

需要更多的回声语句,但它比使用更好<?=<?php echo因为有些人忘记了回声......)

<?= validation_errors(); ?>
<h1><?= $frage['inhalt'];?></h1>
<?= form_open('antwort/vote/'.$frage['id']); ?>
    <?php foreach($antworten as $antwort){ ?>
        <label for="<?= $antwort['inhalt'];?>" ><?= $antwort['inhalt'];?></label>
        <input type="radio" name="<?= $antwort['inhalt'];?>" value = "<?= $antwort['inhalt'];?>" /><br />
    <?php } ?>
<input type="submit" name="submit" value="Antwort abgeben" />
</form>

我们可以通过使用https://www.php.net/manual/en/control-structures.alternative-syntax.php在 HTML 中减少花括号的混淆

<?= validation_errors(); ?>
<h1><?= $frage['inhalt'];?></h1>

<?= form_open('antwort/vote/'.$frage['id']); ?>

<?php foreach($antworten as $antwort): ?>
    <label for="<?= $antwort['inhalt'];?>"><?= $antwort['inhalt'];?></label>
    <input type="radio" name="<?= $antwort['inhalt'];?>" value = "<?= $antwort['inhalt'];?>"><br>
<?php endforeach; ?>

<input type="submit" name="submit" value="Antwort abgeben">
</form>

推荐阅读