Вот код для получения проектов. Но как-то он не работает. Когда я нажимаю на «option2», он возвращается к «option1».
include("pfbc3.1-php5.3/PFBC/Form.php");
include("pfbc3.1-php5.3/header.php");
if (isset($_POST['project'])) {
$project = $_POST['project'];
} else {
$project = 0;
}
if (isset($_POST['new_project'])) {
$new_project = $_POST['new_project'];
} else {
$new_project = "";
}
if (isset($_POST['edit'])) {
$edit = $_POST['edit'];
} else {
$edit = 0;
}
if (isset($_POST['submit_reset']) && $_POST['submit_reset'] == "Reset") {
$project = 0;
$projects = get_projects();
$options = [];
$options[0] = "please select";
foreach ($projects as $project) {
$options[$project[0]] = $project[1];
}
$form = new Form("project-form");
$form->configure([
"prevent" => ["bootstrap", "jQuery"],
"action" => "right.php?target=management/project"]);
$form->addElement(new Element\HTML('<legend>Projects</legend>'));
$form->addElement(new Element\Select("Existing projects:", "project", $options,
["onchange" => "this.form.submit()", "value" => $project]));
$form->addElement(new Element\Textbox("New Project:", "New_Project",
["placeholder" => "new project", "shortDesc" => "Add new project", "value" => get_project($project)]));
$form->addElement(new Element\Button);
Функция get_projects имеет следующий код:
function get_projects(){
global $db;
$sql="SELECT ID, project, description FROM [Typematrix].[dbo].[Project] ";
$arr = $db->GetArray($sql);
//print_r($arr);
return $arr;
Что случилось?
Вот как вы заполняете $project
:
if (isset($_POST['project'])) {
$project = $_POST['project'];
} else {
$project = 0;
}
Но позже в коде вы делаете:
foreach ($projects as $project) {
$options[$project[0]] = $project[1];
}
Это перезаписывает ваш $project
значение в цикле.
Если вы переименуете значение в foreach()
это не должно переписывать больше.
Например:
foreach ($projects as $p) {
$options[$p[0]] = $p[1];
}
Других решений пока нет …