【发布时间】:2020-04-23 14:41:00
【问题描述】:
我需要帮助我已经在我的代码中添加了过滤器,它们都工作正常,但只有月和年过滤器会产生冲突,尽管当我在 PHPMyAdmin 中打印 SQL 时,我得到了想要的结果,但不是 HTML 形式。
请检查我下面的代码
global $wpdb;
if(isset($_GET['datepickervalue']) && !empty($_GET['datepickervalue'])){
$quotecreateddate = $_GET['datepickervalue'];
}else{
$quotecreateddate = '';
}
if(isset($_GET['quotes_vehicle']) && !empty($_GET['quotes_vehicle'])){
$quotes_vehicle = $_GET['quotes_vehicle'];
}else{
$quotes_vehicle = '';
}
if(isset($_GET['quotes_departure']) && !empty($_GET['quotes_departure'])){
$quotes_departure = $_GET['quotes_departure'];
}else{
$quotes_departure = '';
}
if(isset($_GET['quotes_destination']) && !empty($_GET['quotes_destination'])){
$quotes_destination = $_GET['quotes_destination'];
}else{
$quotes_destination = '';
}
if(isset($_GET['quote_number']) && !empty($_GET['quote_number'])){
$quote_number = $_GET['quote_number'];
}else{
$quote_number = '';
}
if(isset($_GET['quotes_length']) && !empty($_GET['quotes_length'])){
$quotes_length = $_GET['quotes_length'];
}else{
$quotes_length = 10;
}
$sql = "SELECT * FROM ". $wpdb->prefix ."quotes AS q LEFT JOIN ". $wpdb->prefix ."vehicles AS v ON q.vehicle = v.vehicle_id LEFT JOIN ". $wpdb->prefix ."departure AS dep ON q.departure_port = dep.departure_id LEFT JOIN ". $wpdb->prefix ."destination AS des ON q.destination_port = des.destination_id " ;
$sql .= " WHERE form_id = 1 ";
$total_query = "SELECT COUNT(id) FROM ". $wpdb->prefix ."quotes AS q LEFT JOIN ". $wpdb->prefix ."vehicles AS v ON q.vehicle = v.vehicle_id LEFT JOIN ". $wpdb->prefix ."departure AS dep ON q.departure_port = dep.departure_id LEFT JOIN ". $wpdb->prefix ."destination AS des ON q.destination_port = des.destination_id ";
$total_query .= " WHERE form_id = 1 ";
if(isset($quotes_vehicle) && !empty($quotes_vehicle)){
$sql .= " AND q.vehicle = '".$_GET['quotes_vehicle']."' ";
$total_query .= " AND q.vehicle = '".$_GET['quotes_vehicle']."' ";
}
if(isset($quotes_departure) && !empty($quotes_departure)){
$sql .= " AND q.departure_port = '".$_GET['quotes_departure']."' ";
$total_query .= " AND q.departure_port = '".$_GET['quotes_departure']."' ";
}
if(isset($quotes_destination) && !empty($quotes_destination)){
$sql .= " AND q.destination_port = '".$_GET['quotes_destination']."' ";
$total_query .= " AND q.destination_port = '".$_GET['quotes_destination']."' ";
}
if(isset($quote_number) && !empty($quote_number)){
$sql .= " AND q.id LIKE '%".$_GET['quote_number']."%' ";
$total_query .= " AND q.id LIKE '%".$_GET['quote_number']."%' ";
}
if(isset($quotecreateddate) && !empty($quotecreateddate)){
$sql .= "AND DATE_FORMAT(q.created_at , '%Y-%m-%d' ) = '".$quotecreateddate."' ";
$total_query .= "AND DATE_FORMAT(q.created_at , '%Y-%m-%d' ) = '".$quotecreateddate."' ";
}
if(isset($quotes_length) && !empty($quotes_length)){
$sql .= " ORDER BY `id` DESC ";
$total_query .= " ORDER BY `id` DESC ";
}
echo $sql;
if(isset($_GET['paged']) && !empty($_GET['paged'])){
$paged = $_GET['paged'];
}else{
$paged = 1;
}
$total = $wpdb->get_var( $total_query );
$items_per_page = $quotes_length;
$offset = ( $paged * $items_per_page ) - $items_per_page;
$sql .= " LIMIT ${offset}, ${items_per_page}";
$getallquotes = $wpdb->get_results( $sql);
我得到的结果对于我使用 foreach 循环获取的 HTML 中的所有日期都是相同的,total_query 中的分页计数也显示正确,但 SQL 查询仅显示每个日期的最后添加条目
提前感谢您的帮助
【问题讨论】:
-
欢迎来到 Stack Overflow!为什么在第二组
if语句中使用$_GET['quotes_vehicle']?通过检查变量 isset 是否为空,您已经声明了保存该信息的变量。您可以考虑将第二组 if 语句缩短为仅( ! empty( variable ) ),因为您知道它已经在您为它们分配值的第一组if中设置。 -
好的,现在我已经从第二个 if 语句中删除了它们
标签: php mysql database wordpress