READABLE フィードバックをエンド ユーザーに提供する場合、どの方法を使用するのが最適かわかりません。私はいくつかのフォーラムを読みましたが、実際には賢明ではありませんでした (または私はそれを理解していませんでした)
挿入/更新が失敗したとき、成功したとき、およびカスタム フィードバック (アイテムが既に存在するかどうかを確認するなど) を提供するときに、フィードバックを提供したいと思います。
INSERT、UPDATE、DELETE、DROP などでは、クエリは TRUE または FALSE を返します。したがって、私の結果プロパティ$this->query_resultは常に true または false のいずれかでなければなりません。
私の問題:
- フォームの送信後にユーザーにフィードバックを動的に表示 (同じページに送信)
- $this->query_result は、文字列を返す場合に true
自分が何をしているかを確認するためのコードを追加しました (間違っています)
これらは、DB の接続/クエリに使用する関数です。
public function connect()
{
if (!($this->conn = mysql_connect($this->host, $this->username, $this->pwd))) {
die("Error connecting to DB by user = " . $this->username);
}
$this->db = mysql_select_db($this->dbname,$this->conn)
or die("Unable to connect to database " . $this->dbname);
}
private function query($sql)
{
$this->query_result = mysql_query($sql, $this->conn)or die("Unable to query local database <b>". mysql_error()."</b><br>$sql");
if (!$this->query_result){
die("database query failed.");
} else {
return $this->query_result;
}
}
ここに私の問題があります: データ アクセス層 (DAL) に関するフィードバックを提供しています。たとえば、次を参照してください。
public function addNewPerson($formData)
{
$sql = "INSERT INTO my_table(`name`, `email`, `www`)";
$sql .= " VALUES('".
$formData['name']."','".
$formData['email']."','".
$formData['www']."','");
$this->query($sql);
return $this->query_result;
}
テキスト文字列を返すことにより、返される結果は常に true になります。私が読んだことから、おそらくエラー/フィードバックを処理する機能が必要です。
これは、テンプレートでフィードバックを使用して現在行っていることです。
if (isset($_POST['form_submit']))
{
if (isset($_POST['person_submit'])) {
$formData = $sl->getFormData();
$result = $myDB->addNewPerson($formData);
if ($result == true)
{
echo '<script type="text/javascript" language="JavaScript">
jQuery("#contentArea .messageWindow1").show(500);
jQuery("#contentArea :input").click(function(){ jQuery("#contentArea .messageWindow1").hide(500); });
</script>';
} else {
echo '<script type="text/javascript" language="JavaScript">
jQuery("#contentArea .messageWindow2").show(500);
jQuery("#contentArea :input").click(function(){ jQuery("#contentArea .messageWindow2").hide(500); });
</script>';
}
}
}
<div id="contentArea">
<div class="messageWindow1"> <span class="msg"><?php echo $labelResult ?></span></div>
<div class="messageWindow2"> <span class="msg"><?php echo $labelResult ?></span></div>
</div>