Я пытаюсь понять, как написать заявление в моем первом приложении CI (и только втором приложении PHP), и я застрял.
У меня есть таблица соединений, которая содержит book_id и user_id из соответствующих таблиц. Я хочу выяснить, кто прочитал книгу и повторить это, но мне нужно, чтобы форматирование имело смысл. Вот запрос:
$readQuery = $this->db->get_where('books_users', array('book_id' => $isbn));
А вот моя логика для одного человека
// Get my user info
$user = $this->ion_auth->get_user();
// Tell me who has read it.
$this->db->select('user_id');
$readQuery = $this->db->get_where('books_users', array('book_id' => $isbn));
// If only one person has read it
if ($readQuery->num_rows() == 1) {
$readResult = $readQuery->row();
// And if that person was me...
if ($readResult->user_id == $user->id) {
$message = 'You have read this.';
// If it was someone else...
} else {
$reader = $this->ion_auth->get_user($readResult->user_id);
$message = "$reader->first_name $reader->last_name has read this";
}
// If two people have read it
}
Так что я хорошо, если только один человек прочитал это. Но когда два человека прочитали это, я хочу, чтобы он сказал: «Имя одно и Имя два прочитали это». если залогиненный человек не прочитал его. Если они один из двух человек, он должен сказать «Вы и Имя Два прочитали это».
И так в течение 3-5. Если его прочитали 3-5 человек, можно выбрать «Имя одно, Имя два и Имя три прочитали это» или «Вы, Имя два и Имя три прочитали это». до пяти человек
И если это 6 или более, он должен просто сказать имена двух из них, т.е. "Вы, Имя Два, и 5 других людей читали это."
Я подумал о создании условия для каждого экземпляра, а затем отправке всех пользователей в массив. Тогда я мог бы использовать in_array (), чтобы увидеть, прочитал ли вошедший в систему пользователь и попытаться отчитаться, но у меня просто возникают некоторые проблемы при разработке логики.
Есть ли более простой способ?
Большое спасибо заранее,
Marcus