Получение данных из базы данных перед отправкой формы - PullRequest
2 голосов
/ 09 июля 2020

У меня есть база данных с пользователями. Я могу перевести пользователей email из раскрывающегося списка в модальное окно. используя ajax.

Вопрос в том, как получить born_date и phone_number этого пользователя через его email в том же модальном окне , а затем отправить форму для обработка. Что-то не работает. В чем может быть ошибка?

Структура БД:

image {% для описания в описании%} {{descr}} {% endfor%} Процесс Информация о пользователе ×

Дата рождения: {{born}} Номер телефона: {{num}} Отправить данные

1 Ответ

0 голосов
/ 09 июля 2020

Без распечатки фактического аргумента для адреса электронной почты я не могу понять, в чем заключается ошибка, но, поскольку вы не получаете исключения, я могу только догадываться, что вы используете значение, которого нет в база данных и, следовательно, вы не отделяете адрес электронной почты правильно от ввода, используя то, что составляет:

email_address = data_list.split()[2][:-4].replace("'", "")

Итак, я предлагаю внести следующие изменения:

В HTML :

Измените value="{{descr}}"> на value="{{descr['email']}}">:

<select id='sel' name='sel' class="selectpicker sel" multiple data-live-search="true" onchange="optionClick(this)">
    {% for descr in description%}
        <option id="val" value="{{descr['email']}}">{{ descr }}</option>
    {% endfor %}
</select>

Таким образом, при вызове Ajax будет отправлен только адрес электронной почты.

Ваш код Python становится следующим:

data = request.json
email_address = data['selectedItems'][0] # the first email address selected
cur = mysql.connection.cursor()
cur.execute("SELECT born_date, phone_number FROM users.data WHERE email = %s", (email_address,))
account = cur.fetchone()

Я считаю, что, поскольку у вас есть раскрывающийся список с множественным выбором, вам будет отправлен список значений, даже если список содержит только один элемент и поэтому я указал data['selectedItems'][0]. Конечно, очевидный вопрос: если пользователь выбрал несколько адресов электронной почты, ваш код, похоже, не справляется с этим, поэтому я не знаю, почему вы сделали это раскрывающимся списком с множественным выбором. Также обратите внимание, что я использую prepared statement, поэтому SQL инъекционные атаки больше не должны быть проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...