私は物事をどのようにしているかについて多くのコメントを得るでしょう。私はこれをパートタイムで行い、MVCを使って新しいシステムを開発しようとしています。私の現在の問題は次のとおりです。フォーム(ビュー)をロードすると、コントローラがモデルファイルを呼び出し、ビューの新しいモデルを即座にインスタンス化し、MySQLデータベースから古いフォーム値を取得します。ビューには一連のドロップダウンがあります。ビューの名前と同じ名前のモデルのプライベート変数にdbから値をロードしますが、値はビューに渡されないので、ドロップダウンはすべてデフォルト値を示しています - 値を表示する必要がありますdbに格納されます。以下のコードが、ちょうど関連するスニペット:PHP:モデルから選択された値を取得しないでください
<?php
require_once("../controller/db_conn_ctlr.php");
class dom_leader_model {
// Variables
private $ldr1_rec; // leader 1 record
private $ldr1_role; // leader 1 role
private $ldr2_rec; // leader 2 record
private $ldr2_role; // leader 2 role
private $ldr3_rec; // leader 3 record
private $ldr3_role; // leader 3 role
private $ldr4_rec; // leader 3 record
private $ldr4_role; // leader 3 role
private $trail_no; // TRAIL # of plan
// constructor
public function __construct() {
$trail_no = $this->getTrailNumber();
$this->getOldLeaderInfo($trail_no);
}
// get TRAIL number
public function getTrailNumber() {
return $this->trail_no = $_SESSION['trail_no'];
}
// get leader info from database and put it on the form
public function getOldLeaderInfo($trail_no) {
$fiscal_yr = substr($trail_no, 0, 2);
$trip_id = substr ($trail_no, 2, 3);
$section_id = substr($trail_no, 5, 1);
$query20 = "
SELECT * FROM leader_info
WHERE fiscal_yr = '$fiscal_yr' AND trip_id = '$trip_id'
AND section_id = '$section_id'";
$connect = db_connection();
$result20 = mysqli_query($connect, $query20) or die("Query20 failed:
" . mysqli_error($connect));
$connect->close();
if($result20) {
$row = $result20->fetch_array(MYSQLI_ASSOC);
$this->ldr1_rec = $row['leader1_record'];
$this->ldr1_role = $row['leader1_role'];
$this->ldr2_rec = $row['leader2_record'];
$this->ldr2_role = $row['leader2_role'];
$this->ldr3_rec = $row['leader3_record'];
$this->ldr3_role = $row['leader3_role'];
$this->ldr4_rec = $row['leader4_record'];
$this->ldr4_role = $row['leader4_role'];
return 1;
} else {
return 0;
}
}
[from controller]
<?php
require_once '../model/dom_leader_model.php';
require_once '../utilities/check_info_saved.php';
$session_start = session_start();
$leaderInfoModel = new dom_leader_model();
$trail_no = $leaderInfoModel->getTrailNumber();
if (isset($_POST['save']) || isset($_POST['next'])) {
[from view]
<p>Leader 1 Information:</p>
<?php
if (empty($ldr1_rec)) {
$ldr1_switch = 'Select Leader';
echo '<select name="ldr1_rec"><option selected
value="">',$ldr1_switch,'</option>',
require("../../lists/leader_list.txt"),'</select>';
} else {
$ldr1_switch = leader_switch($ldr1_rec, 'dom');
echo '<select name="ldr1_rec"><option selected
value="',$ldr1_rec,'">',$ldr1_switch,'</option>',
require("../../lists/leader_list.txt"),'</select>';
}
if (empty($ldr1_role)) {
$role1 = "Select Role";
echo '<select name="ldr1_role"><option selected
value="">',$role1,'</option>',
require("../../lists/staff_role_list.txt"),'</select>';
} else {
$role1 = role_switch($ldr1_role);
echo '<select name="ldr1_role"><option selected
value="',$ldr1_role,'">',$role1,'</option>',
require("../../lists/staff_role_list.txt"), '</select> ';
}
?><p><hr>
私はこのパートタイムを行うと、私は確信してあなたの多くは、コードを書くのより良い方法が表示されますけど、私が本当に探していますがあり、言ったようになぜ私の値がデータベースから取り出されても、ロード時にフォームに到達していないという理由で答えてください。
ありがとうございます。 <option value="',$ldr1_role,'" selected="selected">',$role1,'</option>
select
がブラウザに正しいですが、時々(これはPHPで私にのカップルが起こっ拒否されることがあります:あなたはselected="selected"
だけではなくselect
すなわちを使用する必要があります
ジョンC.
すべてのコードをフェッチしませんでしたが、単に 'select' - >' '? – OldPadawan
私の間違い - > '選択された*だけではなく '選択' 'を選択 – OldPadawan