Как преобразовать некоторые строки PHP в функцию и вызов?

1

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

Код:

 <?php
    require 'PDOClasses/connection.php';
    error_reporting(E_ALL);
    ini_set('display_errors', 1);

    function ShowCategories() {
        $query = $db->query("SELECT id, name FROM categories ORDER BY name ASC");
        $option = '';
        while($row = $query->fetch(PDO::FETCH_ASSOC)) {
            $option .= '<option value = "'.$row['id'].'">'.$row['name'].'</option>';
        }
    }
?>

Так я называл:

<select id="category" name="category" tabindex="16" required>
   <?php echo $option; ?>
</select>

Вот как я сейчас звоню:

<select id="category" name="category" tabindex="16" required>
   <?php ShowCategories(); ?>
</select>
Теги:

4 ответа

3
Лучший ответ

Вы не возвращаете значение внутри функции или не эхом.

function ShowCategories() {
        $query = $db->query("SELECT id, name FROM categories ORDER BY name ASC");
        $option = '';
        while($row = $query->fetch(PDO::FETCH_ASSOC)) {
            $option .= '<option value = "'.$row['id'].'">'.$row['name'].'</option>';
        }
        return $option;
    }

Затем, вызывая

<select id="category" name="category" tabindex="16" required>
   <?php echo ShowCategories(); ?>
</select>

или вы можете непосредственно отбросить $option внутри самой функции. Подобно

echo $options;

вместо того, чтобы возвращать его.

  • 0
    В обоих случаях это не работает: /
  • 0
    @ user3310429 его решение работает для меня, вы получаете какие-либо ошибки?
Показать ещё 5 комментариев
2

$ db не определено в вашей функции. Либо передайте его в качестве аргумента, либо используйте "глобальный"

и добавьте echo $ option в конце

  • 0
    Да вы правы. Лучше сделать соединение глобальным или передать функцию в качестве аргумента, а не создавать соединение внутри функции. +1 для этого.
2

Проблема здесь заключается в том, что вы не печатаете содержимое на страницу HTML. Таким образом , после создания строки HTML вам нужно будет echo -строку.

ваш код будет выглядеть так.

<?php
function ShowCategories() {
        $query = $db->query("SELECT id, name FROM categories ORDER BY name ASC");
        $option = '<option value=''>--Please select--</option>';
        while($row = $query->fetch(PDO::FETCH_ASSOC)) {
            $option .= '<option value = "'.$row['id'].'">'.$row['name'].'</option>';
        }
        echo $option;
    }
?>

в HTML теперь вы можете использовать существующий синтаксис.

<select id="category" name="category" tabindex="16" required>
   <?php ShowCategories(); ?>
</select>
  • 0
    Та же ошибка помощника выше
  • 1
    Извините по ошибке, я использовал выражение эха в части HTML. Мои извинения.
Показать ещё 2 комментария
1

Он работает так

    <?php
    function ShowCategories() {
        require 'PDOClasses/connection.php';
        error_reporting(E_ALL);
        ini_set('display_errors', 1);
        $query = $db->query("SELECT id, name FROM categories ORDER BY name ASC");
        $option = '<option value="">Selecione uma categoria</option>';
        while($category = $query->fetch(PDO::FETCH_ASSOC)) {
            $option .= '<option value = "'.$category['id'].'">'.$category['name'].'</option>';
        }
        echo $option;
    }
<?php ShowCategories(); ?>
  • 0
    Да, это будет хорошо работать, но сделать небольшие изменения в этом.
  • 0
    какие изменения ??
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню