Использование баз данных MySQL и PHP для заполнения форм - PullRequest
0 голосов
/ 31 мая 2009

Я собираюсь сделать следующий шаг с моими PHP-приложениями и сделать поля опций динамическими. Это открыло бы двери для большей автоматизации.

В моем проекте есть раскрывающиеся списки, они используются для выбора конкретного пользователя, и я обновляю их вручную при добавлении нового пользователя (что также является ручным процессом). Но если я сделаю первый шаг и сделаю так, чтобы эти раскрывающиеся списки заполнялись базой данных MySQL, я могу перейти к динамическому созданию пользователя.

Я знаю, как мне этого добиться, но мне любопытно узнать о некоторых других альтернативах (если есть).

Вот что я бы сделал ..

$query = ** MySQL Select * From Database Query **

echo '<select name="usernames">';

while($row == mysql_fetch_array($query))
{
     echo '<option>' . $row['username'] . '</option>';
}

echo '</select>';

Итак, мои вопросы, вы бы поступили иначе? И почему? Спасибо!

Ответы [ 4 ]

1 голос
/ 01 июня 2009

php файл

$users = getUsers();

include('template.tpl');

шаблон

<select name="username">
<?php foreach( $users as $user ): ?>
    <li><?= e( $user['username'] ) ?></li>
<?php endforeach; ?>
</select>

e - функция, которая экранирует строки для предотвращения xss-атак

1 голос
/ 31 мая 2009

То, что вы делаете, будет работать нормально. Мне нравится превращать его в функцию, так что если мне когда-нибудь понадобится выпадающий список на другой странице, мне не придется писать много кода заново.

function userDD()
{
   $query = ** MySQL Select * From Database Query **
   $html = '<select name="usernames">';

   while($row == mysql_fetch_array($query))
   {
        $html .= '<option>' . $row['username'] . '</option>';
   }

   $html .= '</select>';

   return $html;
}

Этот код делает именно то, что делает ваш код, за исключением того, что он не использует echo. Вместо этого вы используете переменную ($ html) для хранения всех данных, а когда вы закончите, вы вернете их.

1 голос
/ 31 мая 2009

С тобой все в порядке, но нужно изменить две вещи:
- Запускать htmlentities () или htmlspecialchars () во всем отображаемом HTML, чтобы избежать XSS. Если вы уже не очистили его во время входа в базу данных, но я считаю эту практику глупой .
- Добавьте атрибут value к каждому тегу <option>, иначе вы не сможете получить выбранное имя пользователя. Я предлагаю использовать соответствующий идентификатор пользователя или что-то другое, уникальное для этого пользователя. Если это строка, используйте на ней htmlentities / htmlspecialchars.

0 голосов
/ 31 мая 2009

Я бы не помещал SQL-запрос в тот же документ, что и мой вывод ...

Я бы создал документ, содержащий все SQL-запросы в функциях, и включил бы этот файл. Просто чтобы отделить вещи.

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