в PHP, как я могу получить информацию из одной таблицы, чтобы подтянуть в форме для другой - PullRequest
0 голосов
/ 04 ноября 2010

Это, вероятно, довольно просто, но я новичок в PHP - у меня есть одна таблица для категорий (cat_id является первичным ключом, а cat_name является единственным другим полем), и другая таблица для сообщений, в которой в качестве внешний ключ.

Мой вопрос заключается в том, чтобы при создании формы для пользователя, отправляющей новое сообщение, как получить список уже созданных категорий для отображения в форме (по названию категории) в раскрывающемся списке?

Я предполагаю, что мне придется выбрать таблицу, присвоить значения / переменные данным или сделать из нее какой-нибудь массив, а затем распечатать данные в таблице для выбора пользователем?

Ответы [ 3 ]

2 голосов
/ 04 ноября 2010

раскрывающиеся списки или <select> элементы имеют следующий синтаксис:

<select name="fieldname">
    <option value="val">Name</option>
    ....
</select>

Чтобы сгенерировать это с помощью PHP, вы просто выбираете все категории из своей таблицы, а затем просматриваете результаты, распечатывая их в вышеуказанном формате.

Простой пример:

<?php $results = mysql_query(/* select all categories */); ?>

<select name="category_id">
    <?php while ($row = mysql_fetch_assoc($results)) : ?>
        <option value="<?php echo $row['cat_id']; ?>">
            <?php echo htmlspecialchars($row['cat_name']); ?>
        </option>
    <?php endwhile; ?>
</select>
1 голос
/ 04 ноября 2010

Нет ограничений на выполнение запросов для одной таблицы, когда вы уже выполняете запрос для другой.Используйте простой SELECT * FROM category, возможно, с предложением ORDER BY.Я предполагаю, что вы используете mysql или mysqli, поэтому используйте цикл while для просмотра результатов:

// run the query
$result = $mysqli->query('SELECT * FROM category ORDER BY cat_name ASC');
// initialize the html string
$select = '';
// loop through all results
while ($row = $result->fetch_array()) {
  // escape any characters that would break the html
  $row['cat_id'] = htmlspecialchars($row['cat_id']);
  $row['cat_name'] = htmlspecialchars($row['cat_name']);
  // create this item's option element and append it to the html string
  $select .= "<option value=\"$row[cat_id]\">$row[cat_name]</option>";
}
// wrap the options in a select
$select = "<select name=\"category\">$select</select>";

В итоге вы получите строку html $select, которую сможете echoгде угодно, сколько угодно раз.

0 голосов
/ 04 ноября 2010
// PHP
$db = new PDO(...);
$stmt = $db->prepare('SELECT cat_id, cat_name FROM categories ORDER BY cat_name');
$stmt->execute();
$categories = $stmt->fetchAll(PDO::FETCH_ASSOC);

// HTML / PHP
<select name="category">
    <? foreach ($categories as $category) : ?>
        <option value="<?= htmlspecialchars($category['cat_id']) ?>">
            <?= htmlspecialchars($category['cat_name']) ?>
        </option>
    <? endforeach ?>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...