PHP: несколько параметров раскрывающегося списка, связанных с несколькими функциями - PullRequest
1 голос
/ 13 апреля 2011

Это больше вопрос дизайна PHP. По сути, у меня будет форма с выпадающим меню и кнопка отправки. У меня будет бесконечное количество выпадающих опций; очевидно, не бесконечное, но в основном будет выпадающее меню со множеством опций. Эти «параметры» являются отдельными отчетами, которые я хочу запустить.

Итак, пользователь выбирает из выпадающего меню, например, «Статьи без одобрения», которые я хочу связать с функцией в моем файле functions.php, которая запускает для этого SQL-запрос и все выводит в виде таблицы. .

Моя проблема в том, как мне сделать это без большого оператора if / else в моем основном документе, который в основном говорит: «Если кнопка отправки равна« Статьи без одобрения », сделайте это» и т. Д. Для каждого выпадающий вариант. Мне нужно что-то динамическое, без кучки операторов if / else.

Я обдумываю это?

Ответы [ 2 ]

2 голосов
/ 13 апреля 2011

Есть отображение параметров для функций, таких как ...

$reportsToFunctions = array(
   'without_approval' => 'withoutApproval',
   ...
);

Который вы можете затем найти и запустить функцию.

1 голос
/ 13 апреля 2011

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

Предположим, у вас есть функции, называемые articlesWithoutApproval() и articlesWithApproval().Затем вы можете сделать что-то вроде этого:

<form action="handler.php" method="post">
    <select name="reportName">
        ...
        <option value="articlesWithoutApproval">Articles without approval</option>
        <option value="articlesWithApproval">Articles with approval</option>
        ...
    </select>
</form>

Затем в handler.php выполните:

<?php
function articlesWithoutApproval(){ ... }
function articlesWithApproval(){ ... }

// clean variables, etc

if( isset( $_POST['submit'] ) && $_POST['submit'] ) ) {

    $func_name = $_POST['reportName']; // equal to "articlesWithoutApproval"
    echo $func_name(); // call the function dynamically
    // above evaluates to `echo articlesWithoutApproval();` etc
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...