1

ユーザーがさまざまな選択フィールドで表示および配置できるmysqlデータテーブルを出力しようとしています。データを自動的に日付順 (新しい順) に並べ、1 ページあたり 10 件の結果に制限したい。

次のスクリプトの抜粋があります(必要に応じてさらに投稿できるように、簡潔にするために切り捨てました)...

<!-- **** THIS CODE CREATES THE FORM ****-->
<form id="form1" name="form1" method="post" action="deals.php">

<!-- **** THIS CODE IS FOR THE "FROM" DATE ****-->
<label for="from">From</label>
<input name="from" type="text" id="from" size="10" value="<?php echo $_REQUEST["from"]; ?>" />
Results will only show offers that have been listed since this date. Leave blank for all offers.

<!-- **** THIS CODE IS FOR THE "TO" DATE ****-->
</p>
<label for="to">To</label>
<input name="to" type="text" id="to" size="10" value="<?php echo $_REQUEST["to"]; ?>"/>
Results will only show offers that run until this date. Leave blank for all offers.

<label>Country</label>
<select name="country">
<option value="">--Any--</option>
<?php
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." GROUP BY country ORDER BY country";
    $sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
    while ($row = mysql_fetch_assoc($sql_result)) {
        echo "<option value='".$row["country"]."'".($row["country"]==$_REQUEST["country"] ? " selected" : "").">".$row["country"]."</option>";
    }
?>
</select>
Only shows offers from the selected country.

// ***************************************** // ***** ** 変数ごとに繰り返します (本当に配列として設定する必要がありました ******************************** // ********************************************

if ($_REQUEST["from"]<>'' and $_REQUEST["to"]<>'') 
{
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE from_date >= ' ORDER BY from_date DESC LIMIT 0, 10 ".mysql_real_escape_string($_REQUEST["from"])."' AND to_date <= '".mysql_real_escape_string($_REQUEST["to"])."'".$search_Seller.$search_country.$search_id.$search_Offer.$search_Item.$search_Description.$search_Brand.$search_Was.$search_Now;
}


else if ($_REQUEST["from"]<>'') 
{$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE from_date  >= ' ORDER BY from_date DESC LIMIT 0, 10".mysql_real_escape_string($_REQUEST["from"])."'".$search_Seller.$search_country.$search_id.$search_Offer.$search_Item.$search_Description.$search_Brand;
}


else if ($_REQUEST["to"]<>'') 
{$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE to_date <= ' ORDER BY date_time DESC LIMIT 0, 10".mysql_real_escape_string($_REQUEST["to"])."'".$search_Seller.$search_country.$search_id.$search_Offer.$search_Item.$search_Description.$search_Brand.$search_Was.$search_Now;}

else {$sql = "SELECT * FROM ".$SETTINGS["data_table"]." ORDER BY from_date DESC LIMIT 0, 10  ".$search_Seller.$search_country.$search_id.$search_Offer.$search_Item.$search_Description.$search_Brand.$search_Was.$search_Now;
}

これは、最初のテーブルを出力するときに完全に機能しますが、ユーザーがデータを入力するとエラーが発生します

"request "Could not execute SQL query" SELECT * FROM newoffers ORDER BY from_date DESC LIMIT 0, 10 AND country='UK'"

構文に問題があると思いますか?最後の部分を次のように再配置してみました。

else {$sql = "SELECT * FROM ".$SETTINGS["data_table"].  .$search_Seller.$search_country.$search_id.$search_Offer.$search_Item.$search_Description.$search_Brand.$search_Was.$search_Now; "ORDER BY from_date DESC LIMIT 0, 10";
}

結果: 解析エラー: 構文エラー、予期しない'"ORDER BY from_date DESC LIMIT' (T_CONSTANT_ENCAPSED_STRING) in /home/iratebjj/public_html/dealstest.php on line 267

スクリプトの動作を確認するには、 http://www.iratebjj.com/dealstest.phpをチェックしてください。誰か提案があれば、本当に感謝しています!

ありがとう!

この投稿が大丈夫であることを願っています。私はすべてのガイドラインに従っていると思います!

4

2 に答える 2

0

クエリの構成が間違っています。条件は、句の後ではなくAND country='UK'、条件内にある必要がありますWHEREORDER BY

SELECT * 
FROM newoffers 
WHERE country='UK'
ORDER BY from_date DESC 
LIMIT 0, 10;
于 2014-11-13T09:20:27.827 に答える
0

これがあなたの間違いです

$search_Now; "ORDER BY from_date DESC LIMIT 0, 10";

"ORDER BY from_date DESC LIMIT 0, 10"後に連結し$search_Nowてスペースを追加する必要があります

$search_Now." ORDER BY from_date DESC LIMIT 0, 10"

次の変数は, , , , , ,で始まるように見えるため、後にWHERE 1 = 1条件を追加する必要もあります。$SETTINGS["data_table"]AND$search_Seller$search_country$search_id$search_Offer$search_Item$search_De‌​scription$search_Brand$search_Was$search_Now

最後のelseブロックは次のようになります

else {
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE 1 = 1 ";
    $sql .= $search_Seller.$search_country.$search_id.$search_Offer.$search_Item.$search_Description.$search_Brand.$search_Was.$search_Now." ORDER BY from_date DESC LIMIT 0, 10";
}
于 2014-11-13T09:22:28.660 に答える