Трудно понять, с чего начать, пытаясь ответить.
Сколько из приведенного выше кода является актуальным, и сколько для демонстрационных целей при задании вопроса?
Я предполагаю, что вы не будете вставлять данные в базу данных при каждой загрузке страницы.
Я предполагаю, что вам не составит труда кодировать имя таблицы базы данных с префиксом 'jos_'. Делая это по-настоящему, вы должны использовать «#__» без кавычек.
Требуется ли в запросе к базе данных, возвращающем ошибку, сценарий завершается и возникает ошибка сервера 500? Я думаю, что обнаружение и перехват ошибки и изящная обработка были бы лучше.
После вашего тега у вас есть слово date, а затем - т.е. вы закрываете опционный тег, который вы никогда не открывали. Я предполагаю, что вы намереваетесь как-то пометить селект - лучше всего делать это с реальным тегом, а не заполнять фиктивную опцию внутри селекта.
Если вы не заключите ключи массива в кавычки, вы, вероятно, сгенерируете предупреждения - так что сделайте это
$ nt ['training'], а не $ nt [training]
Возможно, вам нужно получить ассоциативный массив, а не стандартный порядковый массив.
Затем вы запускаете запрос к базе данных «за пределами» Joomla. Вы получили объект базы данных - вы должны использовать его вместо непосредственного запуска mysql_query.
Вместо этого:
$queryCourses="SELECT training_id,training,trainingDate FROM training"; ?>
$result = mysql_query ($queryCourses);
Вам, вероятно, нужно сделать что-то более подобное
// http://docs.joomla.org/How_to_use_the_database_classes_in_your_script#loadAssoc.28.29
$queryCourses="SELECT training_id,training,trainingDate FROM training"; ?>
$db->setQuery($queryCourses);
$db->query();
$num_rows = $db->getNumRows();
if(! $num_rows){
// return or die or something - there ar no results
}
while($nt = $db->loadAssoc()){
На этой строке
echo "<option value=$nt['id']>$nt['training']</option>";
Вы, вероятно, должны сделать это:
echo "<option value=\"{$nt['id']}\">{$nt['training']}</option>";
, четко очерчивая переменные в фигурных скобках, так как вся строка заключена в кавычки, и не забудьте поместить кавычки вокруг параметра значения в случае, если вы решите добавить туда другие переменные и включить пробелы и т. Д.
Из вашего описания вы хотите отобразить дату для пользователя - вы, вероятно, хотите добавить дополнительную переменную - возможно, две внутри ... части, возможно, что-то вроде:
echo "<option value=\"{$nt['id']}\">{$nt['training']} {$nt['trainingDate']}</option>";
Я уверен, что есть и другие вещи, которые мне не хватает - и я предположил, что ваш запрос БД в целом правильный и возвращает результаты, но там должно быть достаточно указателей, чтобы вы могли встать на правильный путь.
Наконец - при создании / заполнении списка выбора вы можете построить структуры данных и заставить класс jHTML Joomla сделать тяжелую работу за вас. Иногда я удивляюсь, если слишком много абстракции создает больше работы, чем сворачивание вашей собственной - но, эй, вариант есть.