wake-up-neo.net

Suchformular für benutzerdefinierte Datenbanktabelle erstellen

Ich habe eine benutzerdefinierte Tabelle in der WP -Datenbank, die ich mit dem folgenden Code mit Paginierung gut anzeigen kann:

<?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);

?>

Ich möchte jedoch auch in der Lage sein, Eingaben vom Benutzer zu übernehmen, um diese Tabelle zu durchsuchen und die Ergebnisse im gleichen Format anzuzeigen. Wie geht das am besten?

Ich habe versucht, ein einfaches Formular oben auf der Seite hinzuzufügen und das Ergebnis in die SQL-Abfrage einzufügen:

<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%'";

....

Und das funktioniert, unterbricht aber die Paginierungsfunktion.

Jede Hilfe wäre sehr dankbar!

3
user37060

Ich würde eine benutzerdefinierte Abfrage verwenden

Hier erfahren Sie, wie Sie in einer benutzerdefinierten Tabelle nach Schlüsselwörtern suchen. Sie können dies nach Bedarf an Ihre Tabelle und die erforderliche Ausgabe anpassen.

2
Digitalchild

Da der Name Ihrer Abfragevariable "Ziel" lautet, sollten Sie das "s" in Ihrem Code in "Ziel" ändern. Z.B. von:

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

in:

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