Я уже некоторое время работал над проектом, используя CodeIgniter, и я несколько раз сражался с проблемой. Я показываю серию изображений из базы данных с циклом foreach на индексном представлении и каждому изображению, которое вам может нравиться или не нравится, и это прекрасно работает, проблема в том, что на странице отображается только количество понравившихся изображений для одного изображения. Поэтому я решил, что решение будет заключаться в том, чтобы отправить данные в общедоступный метод index()
на моем контроллере, а затем сделать запрос в модели и вернуть все в представление. Вы думаете, есть еще один способ снять это?Вернуть все изображения в цикле foreach с Codeigniter
Это мой Аякса запрос
jQuery(document).ready(function($) {
var id = $("*#id_image").val();
$.ajax({
url: 'index.php/inicio/display_votes_index',
type: "POST",
dataType: "JSON",
data: {id_image: id},
success: function (response) {
$("#displayVote"+id).html(response.msg + " puntos");
console.log(response);
},
error: function (response) {
console.log(response);
}
});
});
Это мой вид
<aside class="container">
<div class="row col-md-8">
<?php
foreach ($images as $value) {
?><h1 style="font-size:20px;"><a href="#"><?= $value->title; ?></a></h1><?php
?><img src="<?= base_url(); ?>images/<?= $value->path; ?>" alt="<?= $value->title ?>" class="img-responsive" width="500"/>
<a href="#" style="color: #636363; margin-top:10px;display:block" id="displayVote<?= $value->id_image; ?>"></a><br/>
<button type="button" style="margin-right:5px;" class="btn btn-default btn-md" onclick="voteUp(<?= $value->id_image; ?>)"><i class="fa fa-arrow-up"></i></button>
<button type="button" style="margin-right:5px;" class="btn btn-default btn-md"><i class="fa fa-arrow-down"></i></button>
<button type="button" style="margin-right:5px;" class="btn btn-default btn-md"><span class="glyphicon glyphicon-comment"></span></button>
<input type="hidden" id="id_image" value="<?= $value->id_image; ?>"/>
<hr/>
<?php
}
?>
</div>
</aside>
Это модель
public function get_all_votes($id_image)
{
$sql = "SELECT COUNT(vote) AS vote_up FROM likes WHERE id_image = ? AND id_status = 1";
$query = $this->db->query($sql, $id_image);
$row = $query->row();
return $row->vote_up;
}
И это контроллер ПОЛУЧАТЬ Данные,
public function display_votes_index()
{
$id_image = $this->input->post('id_image');
$votes = $this->vote_model->get_all_votes($id_image);
if ($votes) {
echo json_encode(['success' => TRUE, 'msg' => $votes]);
} else {
echo json_encode(['success' => FALSE, 'msg' => 'Error']);
}
}
PD: если я использую eq()
как это: var id = $("#id_image").eq(1).val();
страница показывает количество подобных второго изображения в цикле, и если я изменить номера дисплеев нравится другим изображениям. Есть ли способ выбрать все идентификаторы всех изображений? Я пробовал с eq(*)
, но это не сработало. Благодаря!!!