web-dev-qa-db-fra.com

Création d'un formulaire de recherche pour la table de base de données personnalisée

J'ai un tableau personnalisé dans la base de données WP que je peux bien afficher, avec la pagination, à l'aide du code suivant:

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

?>

Cependant, j'aimerais aussi pouvoir saisir les entrées de l'utilisateur pour effectuer des recherches dans ce tableau et afficher les résultats dans le même format. Quelle est la meilleure façon de faire cela?

J'ai essayé d'ajouter un formulaire simple en haut de la page et de brancher le résultat dans la requête 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%'";

....

Et cela fonctionne, mais casse la fonction de pagination.

Toute aide serait grandement appréciée!

3
user37060

Je voudrais utiliser un requête personnalisée

Cela explique comment rechercher des mots-clés dans un tableau personnalisé. Vous pouvez ajuster cela en fonction de votre table et de la sortie requise.

2
Digitalchild

Puisque le nom de votre requête est "destination", vous devez remplacer "s" dans votre code par "destination". Par exemple. de:

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

dans:

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