0

私は自分のphpページでmysqlデータのインライン編集を機能させようとしています。私は見つけたサンプルスクリプトを利用しています:ここに

私のすべてのコードは、この質問の下に表示されます。

ajaxtest.phpを参照すると、テーブルデータが正しく表示されます。テーブルデータをクリックすると、編集が許可されます。しかし、クリックしてデータを保存すると、「false」に変更されます

なぜこれが起こっているのか、何か考えはありますか?update.phpのヘッダーと関係がありますか?

mysqlテーブルのコードは次のとおりです。

以下のようにテーブルを作成しました。

CREATE TABLE IF NOT EXISTS `tblInLineEdit` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `descr` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

--
-- Dumping data for table `tblInLineEdit`
--

INSERT INTO `tblInLineEdit` (`id`, `name`, `descr`) VALUES
(1, 'carl', 'developer'),
(2, 'angela', 'administration');

次に、ajaxtest.phpとupdate.phpの2つのページを作成しました。コードは以下のとおりです。

ajaxtest.php

<? 
$db_user = "username";
$db_pass = "password"; // password here
$db = "database";
$host = "localhost";
$link = mysql_connect($host,$db_user,$db_pass) or die("Database connection broken");
mysql_select_db($db,$link) or die("Database connection unavailable – ".mysql_error() );
$result = mysql_query("SELECT * FROM tblInLineEdit");
//$row = mysql_fetch_assoc($result); 
?>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="instantedit.js"></script>
<table>
<? while ($row = mysql_fetch_assoc($result)) { ?>
<tr>
<td><span id="name-|||-<?php echo $row['id']; ?>" class="editText"><? echo $row['name']; ?></span></td> 
<td><span id="descr-|||-<?php echo $row['id']; ?>" class="editText"><? echo $row['descr']; ?></span></td> 
</tr>
<?php } ?>
</table>

update.php

<? 
header("Expires: Mon, 26 Jul 2014 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0

$db_user = "user";
$db_pass = "password"; // password here
$db = "database";
$host = "localhost";
$link = mysql_connect($host,$db_user,$db_pass) or die("Database connection broken");
mysql_select_db($db,$link) or die("Database connection unavailable – ".mysql_error() );
$content = $_GET['content'];
list($fieldname, $id) = explode("-|||-",$_GET['fieldname']);
mysql_query("UPDATE tblInLineEdit SET $fieldname = ‘$content’ WHERE id = $id ") or die("blah failure – ".mysql_error() );
$result = mysql_query("SELECT * FROM tblInLineEdit WHERE id = $id");
$row = mysql_fetch_assoc($result);
echo $row["{$fieldname}"]; 
?>

なぜそれがfalseを返すのかについてのアイデアはありますか?

よろしくお願いします。

あるいは、誰もが簡単に実装できるmysql用の軽量インラインエディタを推奨できますか?

いつもありがとう。

4

1 に答える 1

2

クライアント側のスクリプトをデバッグしてみてください。Firebug または Chrome の開発者ツールを使用して、生成されたバグを確認します。あなたのリンクは、私のブラウザでのページ読み込み時に次のエラーを生成します:

ページが存在しないようです。

あなたが何を達成しようとしているのかわかりません。ただし、これが実際のプロジェクトの初期段階である場合は、もう少し調査を検討することをお勧めします。おそらく、サービス指向アーキテクチャに関する研究が大いに役立つでしょう。思いつくベスト プラクティスの 1 つは、Zend Framework の JSON サーバーを使用することです。私自身、プロジェクトの規模が大きくなった場合に役立つフレームワークに取り組んできました。それはザクロと呼ばれています。

于 2012-07-17T06:28:54.647 に答える