web-dev-qa-db-ja.com

カスタムデータベーステーブルの検索フォームを作成する

私はWPデータベースにカスタムテーブルを持っていますが、これはページネーションで、以下のコードを使ってうまく表示できます。

<?php

global $wpdb;
$rows_per_page = 50;
$current = (intval(get_query_var('paged'))) ? intval(get_query_var('paged')) : 1;

$rows = $wpdb->get_results( "SELECT * FROM nc_rates_eng"); 
global $wp_rewrite;

$pagination_args = array(
'base' => @add_query_arg('paged','%#%'),
'format' => '',
'total' => ceil(sizeof($rows)/$rows_per_page),
'current' => $current,
'show_all' => false,
'type' => 'plain',
);

if( $wp_rewrite->using_permalinks() )
$pagination_args['base'] = user_trailingslashit( trailingslashit( remove_query_arg('s',get_pagenum_link(1) ) ) . 'page/%#%/', 'paged');

if( !empty($wp_query->query_vars['s']) )
$pagination_args['add_args'] = array('s'=>get_query_var('s'));

echo paginate_links($pagination_args);

$start = ($current - 1) * $rows_per_page;
$end = $start + $rows_per_page;
$end = (sizeof($rows) < $end) ? sizeof($rows) : $end;

echo "<table width='100%' align='center' border='3px solid grey'>";
echo "<tr>";
echo "<th style='background: #B9C9FE;'>Destination</th>";
echo "<th style='background: #B9C9FE;'>Dial Prefix</th>";
echo "<th style='background: #B9C9FE;'>Cost per Minute (euros)</th>";
echo "</tr>";
echo "<tbody>";


for ($i=$start;$i < $end ;++$i ) {
$row = $rows[$i];

echo "<tr>";
echo "<td>$row->r_dest</td>";
echo "<td>$row->r_prefix</td>";
echo "<td>$row->r_rate</td>";
echo "</tr>";
}
echo "</tbody>";
echo "</table>"; 

echo paginate_links($pagination_args);

?>

ただし、このテーブルを検索して結果を同じ形式で表示するために、ユーザーからの入力を受け取ることもできればと思います。これを行うための最良の方法は何ですか?

簡単なフォームをページ上部に追加し、その結果をSQLクエリーに挿入してみました。

<form method="get" id="searchform" action="">
<p>
<label>Destination:</label> <input type="text" name="destination" id="destination" value="" />
</p>
<input type="submit" id="searchsubmit" value="GO" />
</form>

.....

$dest=$_GET['destination'];
$rates_sql="SELECT * FROM nc_rates_eng WHERE r_dest LIKE " ."'%$dest%'";

…….

これは機能しますが、ページネーション機能は無効になります。

任意の助けは大歓迎です!

3
user37060

カスタムクエリを使用します

これは、カスタムテーブルでキーワードを検索する方法を説明しています。あなたはあなたのテーブルと必要な出力に要求されるようにこれを調整することができます。

2
Digitalchild

クエリ変数の名前は 'destination'なので、コード内の 's'を 'destination'に変更する必要があります。例えば。から:

if( !empty($wp_query->query_vars['s']) )
$pagination_args['add_args'] = array('s'=>get_query_var('s'));

に:

if( !empty($wp_query->query_vars['destination']) )
$pagination_args['add_args'] = array('destination'=>get_query_var('destination'));
0
Betty