2015-09-15 3 views
0

Я написал следующий скрипт для создания загрузки файла .ics на основе запроса mySQL.MySQL Query, GET (id) ?!

$start = date('Ymd', strtotime($row['CourseStartDate'])); 
$end = date('Ymd', strtotime($row['CourseEndDate'])); 
header("Content-Type: text/Calendar"); 
header("Content-Disposition: inline; filename=Bookings$id.ics"); 
echo "BEGIN:VCALENDAR\n"; 
echo "PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN\n"; 
echo "VERSION:2.0\n"; 
echo "METHOD:PUBLISH\n"; 
echo "X-MS-OLK-FORCEINSPECTOROPEN:TRUE\n"; 
echo "BEGIN:VEVENT\n"; 
echo "CLASS:PUBLIC\n"; 
echo "CREATED:20091109T101015Z\n"; 
echo "DESCRIPTION:{$row['Attendees']}\n"; 
echo "DTEND:{$end}\n"; 
echo "DTSTAMP:20100109T093305Z\n"; 
echo "DTSTART:{$start}\n"; 
echo "LAST-MODIFIED:20091109T101015Z\n"; 
echo "LOCATION:{$row['CourseLocation']}\n"; 
echo "PRIORITY:5\n"; 
echo "SEQUENCE:0\n"; 
echo "SUMMARY:{$row['CourseTitle']}\n"; 
echo "TRANSP:OPAQUE\n"; 
echo "UID:".date('Ymd') . 'T' .date('His').rand(); 
echo "X-MICROSOFT-CDO-BUSYSTATUS:BUSY\n"; 
echo "X-MICROSOFT-CDO-IMPORTANCE:1\n"; 
echo "X-MICROSOFT-DISALLOW-COUNTER:FALSE\n"; 
echo "X-MS-OLK-ALLOWEXTERNCHECK:TRUE\n"; 
echo "X-MS-OLK-AUTOFILLLOCATION:FALSE\n"; 
echo "X-MS-OLK-CONFTYPE:0\n"; 
echo "END:VEVENT\n"; 
echo "END:VCALENDAR\n"; 

MySql

$sql = "SELECT BookingID, CourseStartDate, CourseEndDate, CourseTitle,(' ',Forenames,' ', Surname) as Attendees, LastUpdated 
FROM Bookings 
GROUP BY CourseStartDate, CourseTitle 
ORDER BY CourseStartDate DESC"; 

При загрузке файла он создает идеальный событие календаря со всем целевым, как и планировалось, однако он возвращает только один курс, я хотел бы быть в состоянии сделать это курс по курсу, т. е. просмотреть курс и иметь возможность «загрузить в календарь», а затем запустить скрипт на основе этого курса!?. Я пробовал писать в заявлении if, но безрезультатно. Где я ошибаюсь ?!

+1

Не могли бы вы просто создать несколько 'VEVENT' в цикле, внутри вашего блока выражений эха, которые генерируют файл? Ваш SQL (и нам нужен код, обрабатывающий результаты запроса, btw), должен иметь нужные вам данные, но вы должны перебирать набор результатов и заполнять '$ row' данными из каждого результата, а затем записывать их на новый «VEVENT». –

+0

Спасибо @ShotgunNinja .. Извините, очень новичок в php и mySQL-запросах. Курсы отображаются на домашней странице сайта, повторяя некоторые из '$ sql' сверху в таблицу дата курса - coursename - добавить в календарь другая дата курса - еще один курс - добавить в календарь и т. Д. И т. Д. The td 'add to calendar - это ссылка на кнопку с файлом caltest.php, где я написал сценарий VCALENDAR. Я хочу, чтобы каждая из этих кнопок запускала сценарий, основываясь на курсе, которым они тоже являются? Пожалуйста, помогите! – webcreator25

ответ

0

Если я понял, вы должны:

Использование $ _GET, чтобы передать идентификатор вашего курса.

Пример, если вы читаете "курс # 1":

<a href="caltest.php?id=$course_id">Download to calendar</a> 

Затем добавьте ИНЕКЕ в вашем SQL запроса в caltest.php:

WHERE CourseId = $_GET['id'] 

Примечание: Убедитесь, что $_GET['id'] является действительным и использовать prepared statements для большей безопасности

+0

Привет @ user3198601 Спасибо за помощь, вы правильно поняли! Я добавил код к ссылке, чтобы теперь читать ''Add to Calendar' ', и теперь они добавляются красиво в конец URL-адреса, когда я нажимаю кнопку« Добавить в cal ». Когда я добавляю предложение '$ _GET' как оператор WHERE, я получаю сообщение об ошибке, так как оно влияет на вывод таблицы, я думаю, мне нужно поместить вариацию инструкции WHERE в файл VCALENDAR, возможно, в качестве' if' заявление?! Я пробовал несколько вариантов этого, но не работает ?! – webcreator25

+0

Выполняется ли SQL-запрос, но результат неправильный или он вызывает ошибку с '$ _GET'? – user3198601

+0

'$ _GET' работает, и я могу получить правильный« курс курса ». Мне просто нужно сказать VCALENDAR, что запросы, такие как« CourseTitle »,« CourseStartDate »и т. Д., Применимы к« конечному идентификатору », который у меня есть! Будет ли цикл «foreach» делать это ?! – webcreator25