我如何更新/编辑行的更新版本。而不是使页面查看所有行并链接到另一个页面,然后我们可以输入要更新的行。我已经制定了这个。
<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>
到目前为止它的确有效。虽然我不知道我是否可以同时更新多行或者需要更多编码。但不好的尝试,这是我学习尝试寻求更好,更快的做事方式的一种方式。
答案 0 :(得分:0)
开始问问自己为什么使用框架。我用它来简化一切,并使用documentation和practices。一旦你意识到框架的重点,你就会学会更好地使用它。
在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 principle。这意味着将视觉效果,命令和常用操作分解为代码的不同部分。不要在视图文件中获取数据,例如避免在控制器内回显html。
答案 1 :(得分: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);