まずはコードを表示します。これは 2 ページで、最初のページを「form.php」、2 番目のページを「display.php」と呼びます。
FORM.PHP
class display {
var $host;
var $username;
var $password;
var $table;
public function display_public() {
$q = "SELECT * FROM agend_items ORDER BY created DESC LIMIT 3";
$r = mysql_query($q);
if ( $r !== false && mysql_num_rows($r) > 0 ) {
while ( $a = mysql_fetch_assoc($r) ) {
$date = stripslashes($a['date']);
$bodytext = stripslashes($a['bodytext']);
$time = stripslashes($a['time']);
$entry_display .= <<<ENTRY_DISPLAY
<h1>00:59</h1>
<div class="post" name="post" >
<h2 name="date">
$date
</h2>
<h3 class="time">
$time
</h3>
<p id="agenda">
$bodytext
</p>
</div>
ENTRY_DISPLAY;
}
} else {
$entry_display = <<<ENTRY_DISPLAY
<h2> This Page Is Under Construction </h2>
<p>
No entries have been made on this page.
Please check back soon, or click the
link below to add an entry!
</p>
ENTRY_DISPLAY;
}
$entry_display .= <<<ADMIN_OPTION
<p class="admin_link">
<a href="{$_SERVER['PHP_SELF']}?admin=1">Add a New Entry</a>
</p>
ADMIN_OPTION;
return $entry_display;
}
public function display_admin() {
return <<<ADMIN_FORM
<form action="{$_SERVER['PHP_SELF']}" method="post">
<label for="date">Date:</label><br />
<input name="date" id="date" type="date" maxlength="8" />
<div class="clear"></div>
<label for="time">Time:</label><br />
<input name="time" id="time" type="time" maxlength="8" />
<div class="clear"></div>
<label for="bodytext">Body Text:</label><br />
<textarea name="bodytext" id="bodytext"></textarea>
<div class="clear"></div>
<input type="submit" value="Input Agenda Item" />
</form>
<br />
<a href="display.php">Back to Home</a>
ADMIN_FORM;
}
public function write($p) {
if ( $_POST['date'] )
$date = mysql_real_escape_string($_POST['date']);
if ( $_POST['time'] )
$time = mysql_real_escape_string($_POST['time']);
if ( $_POST['bodytext'])
$bodytext = mysql_real_escape_string($_POST['bodytext']);
if ( $date && $bodytext && $time ) {
$created = time();
$sql = "INSERT INTO agend_items VALUES('$date','$bodytext','$created','$time')";
return mysql_query($sql);
} else {
return false;
}
}
public function connect() {
mysql_connect($this->host,$this->username,$this->password) or die("Could not connect. " . mysql_error());
mysql_select_db($this->table) or die("Could not select database. " . mysql_error());
return $this->buildDB();
}
private function buildDB() {
$sql = <<<MySQL_QUERY
CREATE TABLE IF NOT EXISTS agend_items (
date VARCHAR(12),
bodytext TEXT,
created VARCHAR(100),
time VARCHAR(8)
)
MySQL_QUERY;
return mysql_query($sql);
}
}
?>
表示.PHP
$(document).ready(function(){
$('button').mousedown(function(){
if ($('h3').text() == "00:59") {
alert("Yup"); return true;}
else { alert("Nope");return false;};
});
});
</script>
</head>
<body>
<?php
include_once('_class/form.php');
$obj = new form();
$obj->host = 'localhost';
$obj->username = '*****';
$obj->password = '*****';
$obj->table = 'agend_items';
$obj->connect();
if ( $_POST )
$obj->write($_POST);
echo ( $_GET['admin'] == 1 ) ? $obj->display_admin() : $obj->display_public();
?>
<?php
setlocale(LC_ALL,"hu_HU.UTF8");
echo(strftime("%Y. %B %d. %A. %X %Z"));
?>
<button>Check Work</button>
出力は次のとおりです: 00:59 (h1) 2013-05-24 (h2) 00:59 (h3) これはテキストです (p)
私が直面している問題は、jquery スクリプトを実行すると、$time、$date、$bodytext で作成された h2、h3、p で常に false が返されることです。
h1 で、h1 が「00:59」であることを単に php に伝えれば、コードは完全に実行されます。
h3 で出力された時刻が 00:59 の場合、jquery を使用して検索すると、毎回 false が返されます。日付または本文を検索する場合も同様です。
PHP 変数 $time、$date、$bodytext のいずれかによって出力されたテキストを検索している場合、コードは毎回失敗するようです。なぜこれが見つからないのかわかりません。DOM要素はすべてそこにあるはずです..
h1 は無視できます。これは、jquery スクリプトが最も単純な形式で動作しているかどうかを確認するためにのみ挿入されました。データベースから取得した情報を使用して作成された要素テキストを対象とする場合のみです。