0

我如何更新/编辑行的更新版本。而不是创建一个页面来查看所有行并创建指向另一个页面的链接,然后我们可以在那里输入要更新的行。我已经制定了这个。

<html>
<head>
    <meta charset="UTF-8">
    <title>Crud Functions - Bookshelf</title>
    <link rel="stylesheet" href="css/style.css" type="text/css">
</head>
<body>
    <div class="header">
        <div>

        </div>
    </div>
    <div class="body">
        <div>
            <div>
                <div>
                    <div class="programs">
                        <h2>Book Options:</h2>
                        <div class="first">
                            <ul>
                                <li class="selected">
                                    <a href="showbooks">View Books</a>
                                </li>
                                <li>
                                    <a href="showinsert">Add Book</a>
                                </li>
                                <li>
                                    <a href="showupdate">Update Book</a>
                                </li>
                                <li>
                                    <a href="showdelete">Delete Book</a>
                                </li>
                            </ul>
                        </div>
                        <div>

<?php echo form_open('bookstore/update'); ?>
<table  cellpadding='5'>

<th>Update</th>
<th>Book ID</th>
<th>Title</th>
<th>Author</th>
<th>Released Year</th>
<th>ISBN</th>

<?php

if(isset($books)) : foreach($books as $book) :
?>      
        <tr>
        <td><input type="submit" name="idtoupdate" value="<?=$book['book_id']?>"/></td>
        <td><?php echo $book['book_id'] ?></td>
        <td><input type="text" name="bkname" value="<?php echo $book['book_name'] ?>"/></td>
        <td><input type="text" name="bkauthor" value="<?php echo $book['book_author'] ?>"/></td>
        <td><input type="text" name="bkyear" value="<?php echo $book['book_year'] ?>"/></td>
        <td><input type="text" name="bkisbn" value="<?php echo $book['book_isbn'] ?>"/></td>
        </tr>
<?php
    endforeach;
?>
<?php
else :
?>
<h5>No records</h5>
<?php
endif;
?>
</table>
<?php echo form_close();?>


                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

</body>
</html>

到目前为止它有效。虽然我不知道我是否可以同时更新多行或者需要更多的编码。但是尝试一下,这是我学习尝试并寻求更好更快的做事方式的一种方式。

4

2 回答 2

0

首先问自己为什么要使用框架。我用它来简化一切,并利用文档实践。一旦你意识到框架的意义,你就会学会更好地使用它。

在 html 中,考虑使用:

<? if (TRUE): ?>
Print this
<? endif; ?>

而不是:

<? if (TRUE) { ?>
Print this
<? } ?>

为了在 HTML 中混合时获得更多的可读性。

代替:

$name = $this->input->xss_clean($this->input->post('bkname'));

利用:

$name = $this->input->post('bkname', TRUE);

是一样的效果


也就是说,尝试简单地编写简单且合乎逻辑的代码。始终根据您所知道/认为更简单和合乎逻辑的方式调整您的样式和方法。如果您不喜欢您的代码的一部分,请尝试重新构建它并比较差异。

CodeIgniter遵循 MVC 原则。这意味着将视觉效果、命令和常用操作拆分为代码的不同部分。不要在视图文件中获取数据,例如避免在控制器中回显 html。

于 2013-08-05T12:06:57.293 回答
0

你让这种方式对自己太难了。使用表单助手,甚至不用费心在 URL 中传递书籍 ID(不是最佳实践,因为如果你这样做的话,你可以在技术上编写一个脚本来覆盖数据库中的每一本书)

您想为每个 tr 创建一个表单,将 book_id 作为隐藏的表单变量传递,然后在控制器中处理它。

HTML 片段

<?php echo form_open('index.php/bookstore/update/'); ?>
<tr>
<td><?php echo $book['book_id']; echo form_hidden('book_id', $book['book_id']; ?></td>
<td><input type="text" name="bkname" value="<?php echo $book['book_name'] ?>"/></td>
<td><input type="text" name="bkauthor" value="<?php echo $book['book_author'] ?>"/></td>
<td><input type="text" name="bkyear" value="<?php echo $book['book_year'] ?>"/></td>
<td><input type="text" name="bkisbn" value="<?php echo $book['book_isbn'] ?>"/></td>
<td><?php echo form_submit('submitMe', 'Submit') ;?></td>
</tr>
<?php echo form_close() ;?>

public function update() 
{
    if ($this->input->post('submit'))       
    {
    $data['book_id'] = $this->input->post('book_id',TRUE);
    $data['name'] = $this->input->post('bkname', TRUE);
    $data['author'] = $this->input->post('bkauthor',TRUE);
    $data['year'] = $this->input->post('bkyear',TRUE);
    $data['isbn'] = $this->input->post('bkisbn',TRUE);
    //You really want to be doing some validation before running the update!!!
    $this->posts_model->updatePost($data);


            $this->load->view('showupdate');
    } 
}

老实说,您甚至可以通过执行以下操作直接从控制器进行更新(尽管有些人可能认为这是不好的做法):

 $this->db->update('books',$data);
于 2013-08-05T13:37:16.573 回答