私のウェブサイトは、ユーザーの入力によって提供される独自のコンテンツに依存しています。
「スポーツ」と入力すると、スポーツに基づいたコンテンツが表示されます。それはとても簡単です。ただし、キーワードを追加し始めると、少なくとも私が行っている方法では、もう少し複雑になります。
ユーザーが入力したデータが配列であるかどうかを常に確認し、データを別の方法で操作する必要があります。
現在、Codeigniter のセッション クラスを使用してユーザーの選択を保存し、その値に基づいてデータを取得して操作しています。
彼らがフォームを送信すると、私の JS が実行されます。
$('#topics_form').submit(function() {
var topic = document.getElementById('topics_filter').value
$.ajax({
type: "POST",
url: 'ajax/update_session_topic',
dataType: 'json',
data: { topic: topic },
success: function(){
load_custom_topics()
}
});
return false;
});
次に、AJAX モデルで update_session_topic が実行されます
public function update_session_topic()
{
if ($this->session->userdata('active_topic') == FALSE)
{
$array['active_topic'] = $this->input->post('topic');
$this->session->set_userdata($array);
return true;
} else {
$this->page_model->add_session_topic($this->input->post('topic'));
return true;
}
}
値が 1 つしかない場合は、大したことではありません。
ただし、2番目の値を追加しようとすると...配列かどうかを確認するか、配列にする必要があります。
public function add_session_topic($current_filter)
{
$session = $this->session->userdata('active_topic');
if (is_array($session) == false)
{
$session = array($this->session->userdata('active_topic'));
}
foreach ($session as $keyword)
{
if ($keyword == $current_filter)
{
return false;
}
}
$session[] = $current_filter;
$active['active_topic'] = $session;
$this->session->set_userdata($active);
return true;
}
これは私の見解でも起こります。
ちょっと面倒なので、これを行うためのより良い方法があることを望んでいました。私はまだ PHP/codeigniter に慣れていないので、何でも受け入れることができます。
ありがとう!