Быстрое подведение итогов: у меня есть профили активности в стиле Facebook в профилях пользователей. Есть несколько вариантов «сортировки» на выбор. Поэтому, если они хотят видеть, скажем, только свою активность, они нажимают «Ваша активность». Эта часть работает отлично. Я добавляю новый фрагмент в эту головоломку, где они также могут сортировать определенные виды деятельности, такие как: сообщения, комментарии, голоса и т. Д.
Я пытаюсь заставить это сделать, если у них уже выбрана активность, а затем они отмечают флажки «Сообщения и ответы», в ней должны отображаться только их сообщения и ответы.
Я использую чекбоксы, чтобы они могли ставить / снимать галочки по желанию и jquery ajax / php для вызова этого. Вот чекбоксы:
<div class="activitySelector">
<a href="" id="stalk" class="selectOrder">Following Activity</a> • <a href="" id="user" class="selectOrder">Your Activity</a>
</div>
<input type="checkbox" class="sortOption" id="post" /><label for="post">Posts</label>
<input type="checkbox" class="sortOption" id="response" /><label for="response">Responses</label>
Вот jQuery / ajax:
$('input[type=checkbox]').live("click", function(){
$('input:checked').each(function(){
var ID = $('.activitySelector .selected').attr("id");
var optionID = $(this).attr("id");
if (optionID) {
$('ul.streamActivity').html('<img src="/images/ajax-loader.gif" class="loader" alt="" />');
$.ajax({
type: "POST",
url: "/profile/sort_activity.php",
data: "sort="+ID+"&option="+optionID+"&user=<?php echo $user; ?>",
cache: false,
success: function(html){
$("ul.streamActivity").html(html);
}
});
}
});
});
И, наконец, PHP (я только показываю код, который имеет отношение к тому, о чем я говорю ... Мне не нужно показывать полный запрос, так как он работает отлично, я просто хочу, чтобы вы могли получить право на головную боль: P): sort_activity.php
if ($sort == "user") {
$checkActivity .= " WHERE a.name = '$user'";
$activityNum .= " WHERE a.name = '$user'";
if ($option == "post") {
if ($option == "response") {
$checkActivity .= " AND a.type = 'Post' AND (a.type = 'Comment' OR a.type = 'Advice')";
$activityNum .= " AND a.type = 'Post' AND (a.type = 'Comment' OR a.type = 'Advice')";
} else {
$checkActivity .= " AND a.type = 'Post'";
$activityNum .= " AND a.type = 'Post'";
}
} elseif ($option == "response") {
if ($option == "post") {
$checkActivity .= " AND a.type = 'Post' AND (a.type = 'Comment' OR a.type = 'Advice')";
$activityNum .= " AND a.type = 'Post' AND (a.type = 'Comment' OR a.type = 'Advice')";
} else {
$checkActivity .= " AND (a.type = 'Comment' OR a.type = 'Advice')";
$activityNum .= " AND (a.type = 'Comment' OR a.type = 'Advice')";
}
}
}
Итак, по сути, для этого нужно понять, что «Ваша активность» (пользователь) уже была выбрана, и затем после этого выбирается ЕСЛИ «Сообщения» И «Ответы», после чего отображаются только ВАШИ сообщения и ответы. Прямо сейчас, он отображает только одно или другое (если выбраны оба «сообщения» и «ответы», кажется, что отображаются только ваши ответы. Это уже наполовину) l
Я думал о том, чтобы устанавливать куки или что-то подобное, чтобы он запомнил то, что они проверяли, но я хотел бы держаться подальше от этого, если это вообще возможно.
Любая помощь будет принята с благодарностью, так как я пытаюсь перезапустить эти классные новые функции:)
UPDATE:
Вот оператор foreach, который я добавил. Эхо находится там, чтобы увидеть, правильно ли он его называет, и это так. Включение и выключение флажков отображает сообщение / ответ / голосование - оно просто не отображает никаких результатов: /
Я думаю, что мне нужно сделать что-то вроде: если есть более 1 опции, измените И на ИЛИ, чтобы выбрать все из них ... может быть? Не могу заставить его работать должным образом.
if (isset($options)) {
foreach ($options as $option) {
echo $option .'<br />';
if ($option['post']) {
$checkActivity .= " AND a.type = 'Post'";
$activityNum .= " AND a.type = 'Post'";
}
if ($option['response']) {
$checkActivity .= " AND (a.type = 'Comment' OR a.type = 'Advice')";
$activityNum .= " AND (a.type = 'Comment' OR a.type = 'Advice')";
}
if ($option['vote']) {
$checkActivity .= " AND a.type = 'Vote'";
$activityNum .= " AND a.type = 'Vote'";
}
}
}