【问题标题】:Wordpress custom field select box search "at least" valueWordpress 自定义字段选择框搜索“至少”值
【发布时间】:2014-02-06 16:51:24
【问题描述】:

我有两种自定义帖子类型,adsbedrooms

我制作了一个带有选择框的自定义搜索表单,如下所示:

<select name="bedrooms" id="bedrooms>
    <option value="1" selected="selected">1 bed+</option>
    <option value="2">2 beds+</option>
    <option value="3">3 beds+</option>
</select>

如何链接它,以便当用户搜索2 beds+ 时,它会显示所有有 2 间卧室或更多卧室的广告?

【问题讨论】:

  • 您可以发布您的 php 代码以供搜索吗?并且,具体来说,包含床位数的字段名称是什么?
  • 嗨,胡言乱语,该字段名为“cp_bedrooms”,今晚我回家后将发布代码,奇怪的是如果我输入

标签: php wordpress search


【解决方案1】:

首先,您要提取用户选择的(最小)床位数。为此,您需要一些 javascript(或 jQuery, which is what I recommend)。

这里是监视选择元素值变化的代码。可能你不会使用那个事件,但是代码告诉你如何读取控件的值(以及如何正确使用selected 属性):

jsFiddle Demo

HTML:

<select name="bedrooms" id="bedrooms">
    <option value="0" selected>Choose One:</option>
    <option value="1">1 bed+</option>
    <option value="2">2 beds+</option>
    <option value="3">3 beds+</option>
</select>
<div id="resultsDiv"></div>

javascript/jQuery:

$('#bedrooms').change(function() {
    var beds = $(this).val();
    alert('Minimum beds: ' + beds);
});

一旦您将(最小)床位数保存到变量中,您就可以使用 AJAX 向服务器发送请求以执行搜索并返回结果:

$.ajax({
    type: "POST",
    url: "somephpfilename.php",
    data: 'num_beds=' + beds,
    success: function(recd){
        $('#resultsDiv').html(recd);
    }
});

上面会将变量beds的内容发送到PHP端,重新命名为num_beds。我更改了 var 名称,以便您可以看到名称是如何匹配的。在 PHP 端,检索床位数为:$_POST['num_beds']

然后您可以进行 mysql 搜索并在变量中构造一些 HTML 代码。完成后,只需回显该变量。 (请注意,我使用$out .= "more stuff"; 附加到变量内容,然后在完成时使用echo 变量。

PHP:somephpfilename.php

$min_beds = $_POST['num_beds'];
$query = "SELECT * IN `yourtablename` WHERE `cp_bedrooms` > '$min_beds' ORDER BY `cp_bedrooms`";
$results = mysql_query($query) or die(mysql_error());

$out = '
    <table id="foundApts">
        <tr>
            <th>Num Beds</th>
            <th>Address</th>
            <th>Contact Phone</th>
            <th>Rent</th>
        </tr>
    ';

while ($row = mysql_fetch_assoc($results){
    $out .= '
        <tr>
            <td>' .$row['cp_bedrooms']. '</td>
            <td>' .$row['address_field_name']. '</td>
            <td>' .$row['phonenum_field_name']. '</td>
            <td>' .$row['rentprice_field_name']. '</td>
        </tr>
    ';
}

$out .= '</table>';

echo $out;

PHP 回显的内容(即$out 变量的内容——在PHP 端构建的HTML)在AJAX 函数success: 的一个名为recd 的变量中接收。只需将该变量写入结果 div,您就会看到完整构建的结果表。 请注意,您必须success: 函数中执行此操作。你会发现recd这个变量在这个函数之外是不存在的。

这是一个 jsFiddle 的无效链接,所有内容都放在一起。请注意,它不起作用,因为 jsFiddles 无法执行 AJAX 并且没有放置 PHP 的地方(我只是在注释中添加了 PHP,但它应该保存到 PHP 文件系统上的文件中)。 看看代码是如何构造的。

jsFiddle Code Sample


以下是关于 AJAX/PHP 的一些附加说明:

How to use jQuery in your code(只需要包含jQuery库,如One:所示)

Simple intro to AJAX

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    相关资源
    最近更新 更多