#php #mysql #ajax
#php #mysql #ajax
Вопрос:
Справочная информация: Мы запускаем мероприятие, в котором примут участие студенты из разных университетов. Веб-приложение будет в режиме реального времени сообщать о количестве студентов, зарегистрировавшихся на мероприятие.
Основной веб-макет
Я надеюсь, что желаемый макет понятен. Это сообщение должно обновляться каждые 5 минут, чтобы отображаться по мере регистрации новых учащихся. Я выполнил часть обновления с помощью метода Ajax setTimeout ().
У меня есть таблица Student
. Запрос, который я использую, является:
SELECT UNIV, STUDENT_NAME, STUDENT_EMAIL
FROM STUDENT
ORDER BY UNIV;
Однако основная проблема заключается в определении того, когда добавлять новую строку в таблицу, и отображении подробных сведений
Проблема 1: В настоящее время то, что я делаю, — это наличие $currUniv
переменной, которая ссылается на текущее значение University. Если значение $currUniv
и текущая выбранная строка не совпадают, я создаю новую строку
Код: в updater.php
function updateTable()
{
$currUniv = "";
while($currLine = mysql_fetch_array($results))
{
if (strcmp($currLine[0], $currUniv) != 0)
{
responseHTML .= "<tr id = "{$currLine[0]}">";
responseHTML .= "<td id = "{$GLOBALS["univ"]}">";
responseHTML .= "{$currLine[0]}";
responseHTML .= "</td>";
$currUniv = $currLine[0];
}
responseHTML .= "<td id = "{$GLOBALS["studentname"]}">";
responseHTML .= "{$currLine[1]}";
responseHTML .= "</td>";
responseHTML .= "<td id = "{$GLOBALS["studentemail"]}">";
responseHTML /= "{$currLine[2]}";
responseHTML .= "</td>";
if (strcmp($currLine[0], $currUniv) != 0)
{
responseHTML .= "</tr>";
}
}
}
Во-первых, таблица не отображается. Я не думаю, что это лучший алгоритм для создания таблицы. Кто-нибудь может предложить мне какие-либо другие способы достижения того же?
Ответ №1:
Похоже, вы открываете недостаточно тегов tr и td, если название университета совпадает с названием из предыдущей строки. Убедитесь, что в обоих случаях генерируется одинаковое количество тегов. Предпочтительно использовать else. Ячейки могут быть пустыми, но вы должны их сгенерировать.
Также есть ли какая-либо уважительная причина, по которой вы не сортируете свои результаты по именам студентов в пределах одного университета? Это всего лишь небольшое изменение в запросе — ПОРЯДОК ПО UNIV, STUDENT_NAME. Без этого вы не можете полагаться на порядок, заданный вам mysql, он просто отправит студентов в любом порядке, который, по его мнению, будет самым быстрым, особенно когда таблица становится большой.
Если это единственное, что вам нужно обновить, это не настолько сложно, чтобы дать повод изменить ваш код на то, что вам пришлось бы изучать с нуля.
Комментарии:
1. Проблема в том, что я не могу добавить новую запись к существующей строке в таблице. т. Е. Предположим, что новая пользовательская запись поступает для университета A, и я использую
tr id = "A"
тег для добавления новой записи в таблицу, в итоге все равно создается новая строка в HTML.