Действительно, header ведет на эту же страницу, поэтому попробовал перенести весь скрипт обработки формы в тот же файл, где и сама форма. В итоге не использовал куки вообще, а просто в скрипте вывел сообщение результата, и сразу после вывода поставил header чтобы пропала post переменная и скрипт при обновлении страницы второй раз не сработал, но не помогло - обновляешь страницу и скрипт срабатывает еще раз
А зачем добавляешь время жизни для куки? Тебе же просто передать со страницы на страницу сообщение о выполненном действии. По умолчанию "до закрытия окна" тебе за глаза должно хватать.
Мне по крайней мере хватает. Сам использую подобный механизм для неавторизованных пользователей. Время жизни специально нигде на назначаю, стирается простым назначением пустого значения. Накладок в браузерах пока не заметил.
Если вы используете сессии, то не нужно делать перенаправление на другую страницу. Используйте include для скрипта с идентификацией пользователя.
Если куки, то не понимаю зачем вам нужно указывать время жизни для стираемой переменной. Это имеет значение для задаваемого значения, а для стирания? По крайней мере мне хватало всегда просто указания пустого значения.
header("Location:") собственно и является вашей проблемой. Это же переадресация, как если бы вы на странице кликнули по ссылке.
session_start() должен вызываться при каждом обращении к серверу.
"session_start() создаёт сессию (или продолжает текущую на основе session id, переданного через GET-переменную или куку)" http://www.php.su/session_start
если я правильно понял, и второй код формирует значение переменной $category, то она у вас всегда содержит одно значение.
Фактически этот код у вас проверяет переданное значение $_GET['category'] и получает из базы "обвес" для него.
Отсюда вопрос: а что собственно вы хотите сделать?
Что бы по единственному значению $category формировался перечень статей ,и что бы каждая статья в своем описании содержала полный перечень категорий, в которые она входит?
Если так, то вам необходимо в цикле обработки результата первого запроса "SELECT p.*, c.title as cat_title ... " сделать запрос для формирования списка категорий для выбранной статьи. И уже его его результаты формировать в строку и выводить.
ЗЫ Заранее извиняюсь за ненужную писанину, если неправильно понял цель данного кода.
данные у вас в таблице.
Зачем вам промежуточный массив?
и по заданию:
по какому принципу группируются три месяца? первые три, вторые три, ... с даты начала формирования вывода? или по кварталам?
продажа к периоду привязывается по дате начала или по дате окончания?
а так на вскидку запрос для вывода по периодам, если группировка по кварталам.