同じphpページのボタンをクリックしたときにデータテーブルを表示したい。ボタンは、テキストなどの他の入力を含むフォームで使用されます。データテーブルはデフォルトで非表示になっています。そして、フォームから値を取得し、データベースでクエリを実行して表示します。
表示/非表示の機能をどのように実現できますか?
解決策はありますか?
ありがとう。
これは単純な ajax の問題です。一般的な Java スクリプト ライブラリを使用してこの機能を実現し、ajax 呼び出しとテーブルの表示/非表示を実行できます。たとえば、jquery の ajax 機能を使用してサーバーからデータを取得し、jquery の組み込みエフェクトを使用して div で囲まれたテーブルを表示できます。たとえば、div 'mydiv' のコンテンツを表示するには、次の
$("#mydiv").show();
ように記述します。コンテンツを非表示にするには、次のように記述します。$("#mydiv").hide();
JavaScript を使用しても問題ない場合は、table
タグにid
属性を指定してください。次に、onclick
の CSS を に変更するイベントをボタンにtable
設定しますdisplay:none
。ボタンの Javascript を変更して、次回クリックしたときにtable
CSS を に切り替えるようにしますdisplay:table
。これを行うには、 Prototypeなどの Javascript ライブラリを使用することもできます。
<table id="myTable">
</table>
<input id="toggleButton" type="button" onclick="hideTable(true);" value="Toggle Table" />
Javascript は次のようになります。
function toggleDisplay(var hide) {
if (hide) {
document.getElementById('myTable').style.display = "none";
document.getElementById('toggleButton').onclick = hideTable(false);
} else {
document.getElementById('myTable').style.display = "table";
document.getElementById('toggleButton').onclick = hideTable(true);
}
}
そのJavascriptを一粒の塩で取ります。しばらく何も書いていません。
Javascript を使用したくない場合は、ボタンで通常の HTML フォームを送信します。hide_table
の値などの入力名をフォームで渡しますtrue
。サーバー上で$_POST['hide_table'] == "true"
、テーブルが HTML としてページに出力されることを許可しない場合。また、ボタンをクリックするhide_table
と の値で送信されるようにフォームを切り替えますfalse
。
<form method="post" action="the_same_page.php">
<input type="hidden" name="hide_table" value="<?php echo $_POST['hide_table'] == "true" ?>" />
<input type="button" value="Toggle Table" />
</form>
<?php if ($_POST['hide_table'] != "true") { ?>
<table>
</table>
<?php } ?>
AJAX を使用して、ユーザーが表示することを決定したときにのみテーブル コンテンツをロードする場合は、これを適切に低下させるとよいでしょう。ユーザーが Javascript を有効にしていない場合、フォームは実際にサーバーに送信され、ページがリロードされ、表の表示が切り替えられます。ただし、ユーザーが Javascript を有効にしている場合は、AJAX 呼び出しを行い、テーブルをロードして、その場で表示することができます。
このクライアント側を実行したい(つまり、すべてのデータがページの読み込み時にクライアントに送信される)と仮定すると、必要なのは次のようになります:(簡潔にするためにプロトタイプで実行)
...
<input type="button" id="showTableBtn" value="Show Table">
<table id="dataTable">
...
</table>
<script type="text/javascript">
<!--
Event.observe($("showTableBtn"), "click", toggleTable);
function toggleTable() {
if ($("showTableBtn").value == "Show Table") {
$("dataTable").show();
$("showTableBtn").value = "Hide Table";
} else {
$("dataTable").hide();
$("showTableBtn").value = "Show Table");
}
}
//-->
</script>
...