1

私はこれにほぼ1日立ち往生していて、ここで何が問題なのか理解できません。ここの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']なことに価値を得ています。助けてください。brand =''SQLステートメントに表示されるSQLをエコーすると、

実行される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"
}
4

1 に答える 1

2

そのコメントスレッドは長くなりすぎています。

["ajax"] => string(1) "1"

ajaxを使用して投稿しているようです。送信ボタンに接続しているJavaScriptを確認する必要があります。

選択をシリアル化するようにjQuery(または使用している関数)に指示するのを忘れた可能性がありbrandます。

于 2012-11-20T04:09:06.187 に答える