$ _POST没有从选择字段的表单发布中获取值

时间:2012-11-20 03:20:24

标签: php sql forms

我已经被困在这一天差不多一天了,我无法弄清楚这里的问题是什么。我在这里的SQL语句中需要$_POST['brand'],我得到一个空白。

// sql for getting nearby stores
$sql = "SELECT *, ( 3959 * ACOS( COS( RADIANS(".$_POST['lat'].") ) * COS( RADIANS( latitude ) ) * COS( RADIANS( longitude ) - RADIANS(".$_POST['lng'].") ) + SIN( RADIANS(".$_POST['lat'].") ) * SIN( RADIANS( latitude ) ) ) ) AS distance
FROM stores
WHERE brand='".$_POST['brand']."'
HAVING distance <= ".$_POST['distance']."
ORDER BY distance";

这是PHP文件中的表单。

<form method="post" action="./index.php" id="store_locator">
    <fieldset>
        <legend>Store Locator</legend>
        <div class="input">
            <label>Address/Postcode: <span class="required">*</span></label>
            <input type="text" class="texta" name="address" id="address" value="<?php if(isset($_POST['address'])){ echo $_POST['address'];} ?>" />
            <span>e.g: "Sydney", "Magill Road"</span>
        </div>
        <div class="input">
            <label>Brand: <span class="required">*</span></label>
            <select name="brand" id="brand">
                <option selected="selected" value="bmw">BMW</option>
                <option value="fiat">Fiat</option>
                <option value="ford">Ford</option> 
            </select>

            <label>Distance: <span class="required">*</span></label>
            <select name="distance" id="distance">
                <?php
                // populate selected option
                $selected = 1;
                if(isset($_POST['distance'])) {
                        $selected = $_POST['distance'];
                }
                ?>
                <?php foreach($distances as $k=>$v): ?>
                <option value="<?php echo $k; ?>" <?php if($selected == $k){ echo 'selected="selected"';} ?>><?php echo $v; ?></option>
                <?php endforeach; ?>
            </select>
        </div>
        <div class="input buttons">
            <button type="submit" name="find" id="find">Find</button>
        </div>
        </br>
        <input type="button" value="Reset Map" onclick="reset2();" />
    </fieldset>
</form>

我在这里缺少什么?奇怪的是$_POST['distance']正在获得价值。请帮忙。 如果我回显SQL,我在SQL语句中看到brand =''

这是执行的SQL代码:

SELECT *, ( 3959 * ACOS( COS( RADIANS(-31.9530044) ) * COS( RADIANS( latitude ) ) * COS( RADIANS( longitude ) - RADIANS(115.85746930000005) ) + SIN( RADIANS(-31.9530044) ) * SIN( RADIANS( latitude ) ) ) ) AS distance FROM stores WHERE brand='' HAVING distance <= 30 ORDER BY distance

$ _POST的内容

array(5) {
    ["ajax"]=> string(1) "1"
    ["action"]=> string(17) "get_nearby_stores"
    ["distance"]=> string(1) "5"
    ["lat"]=> string(11) "-31.9530044"
    ["lng"]=> string(18) "115.85746930000005"
}

1 个答案:

答案 0 :(得分:2)

评论帖子太长了。

  

[&#34; AJAX&#34;] =&GT; string(1)&#34; 1&#34;

您似乎是使用ajax发布的。我们需要查看您要连接到提交按钮的JavaScript。

您可能忘记告诉jQuery(或您使用的任何函数)序列化brand选择。