基本的に私がしたいのは、特定の記事を表示しているビューページから、フィールドのあるページへの削除リンクと、そのフィールドに表示されているIDを持つその記事を削除するためのボタンを持つことです。
私はここ数日、URLリンクにIDを入れようとして「delete?id = 20」を試し、$ _ GETでアクセスしようとした後、「delete/20」とURIを試しました。セグメント。それからセッションなどを使ってみましたが、どれも動かないのでどちらがいいのかわかりません。
手つかずのコードを表示して、最初から始めることにしました。これが私のコードです。
view.php
<?php
echo '<h2>'.$news_item['title'].'</h2>';
echo '<p>'.$news_item['text'].'</p>';
?><br><br>
<a href="http://website.com/CodeIgniter/index.php/news">
Go to latest news</a>
<a href = "http://website.com/CodeIgniter/index.php/news/delete">Delete</a><br>
delete.php
<h2>Delete a news item</h2>
<?php echo validation_errors(); ?>
<?php echo form_open('news/delete') ?>
<form>
<label for="delete">Article Number</label><br>
<input name="id" class="resizedTitlebox" value="id" /><br>
<br>
<input type="submit" name="submit" value="Delete news item" /></form>
news.php(コントローラー)
<?php
class News extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('news_model');
}
public function view($slug)
{
$data['news_item'] = $this->news_model->get_news($slug);
if (empty($data['news_item']))
{
show_404();
}
$data['title'] = $data['news_item']['title'];
$this->load->view('templates/header', $data);
$this->load->view('news/view', $data);
$this->load->view('templates/footer');
}
public function delete() {
{
$this->load->helper('form');
$this->load->library('form_validation');
$data['title'] = 'Delete news item';
$this->form_validation->set_rules('id', 'required');
if ($this->form_validation->run() === FALSE)
{
$this->load->view('templates/header', $data);
$this->load->view('news/delete');
$this->load->view('templates/footer');
}
else
{
$data['id'] = $this->news_model->delete('id');
$this->load->view('news/success');
}
}
}
news_model.php(モデル)
<?php
class News_model extends CI_Model {
public function __construct() {
$this->load->database();
}
public function get_news($slug = FALSE){
$this->load->helper('text');
if ($slug === FALSE){
$this->db->order_by('id', 'desc');
$query = $this->db->get('news');
return $query->result_array();
}
$query = $this->db->get_where('news', array('slug' => $slug));
return $query->row_array();
}
public function set_news(){
$this->load->helper('url');
$slug = url_title($this->input->post('title'), 'dash', TRUE);
$data = array(
'id' => $this->input->post('id'),
'title' => $this->input->post('title'),
'slug' => $slug,
'text' => $this->input->post('text'));
return $this->db->insert('news', $data);
}
public function delete ($id) {
$this->db->where('id',$this->input->post('id'));
$this->db->delete('news');
}
}
ルート.php(構成)
$route['news/(:any)'] = 'news/view/$1';
$route['news/delete'] = 'news/delete';
$route['news'] = 'news';
$route['default_controller'] = 'news';
$route['404_override'] = '';
助けてくれてありがとう!
@jeroen回答
「削除リンクに値を渡していない。パスまたはクエリ文字列のいずれかにIDを追加する必要がある」-次のような意味だと思います
<a href = "http://website.com/CodeIgniter/index.php/news/delete?article_id=<?php echo $news_item['id']; ?>">Delete</a>
したがって、article_idを使用します。次に、削除コントローラーでarticle_idを定義できますか?これをどのように行うことができるかわかりません。
回答:$ this-> input-> get(article_id)