2016-08-15 5 views
0

私は価格が低から高になるように製品を分類するajaxスクリプトを手に入れました。これは私が動的ページを持っていなかったときに機能しましたが、ページエイリアス(urlname)に従ってデータが返されるようになりました。変数が設定されている場所以外のスクリプトで変数を使用する(ajax)

だから、次のクエリ:

$product = "SELECT * FROM `snm_content` 
      WHERE `catid` = 15 AND state = 1 order by introtext ASC"; 

はする必要があります

$produc = "SELECT * FROM `snm_content` 
      WHERE `catid` = '".$conn->real_escape_string($productcatcr[0]['id'])."' 
      AND state = 1 order by introtext ASC"; 

しかし、問題は、それが別のページで使用されているため、他のファイルが$conn->real_escape_string($productcatcr[0]['id'])を認識しない、です。

投稿する必要がありますか?選択されているオプションによって

ここでは、正しいスクリプトがロードされます。

<div class="form-group"> 
    <label class="grey" for="orderby">Sorteer op:</label> 
    <select class="form-control orderby" name="orderby" id="orderby"> 
     <option value="default" data-post-url="default.php">Standaard</option> 
     <option value="popularity" data-post-url="populairst.php">Meest bekeken</option> 
     <option value="highlow" data-post-url="prijshooglaag.php">Prijs: Hoog naar laag</option> 
     <option value="lowhigh" data-post-url="prijslaaghoog.php">Prijs: Laag naar hoog</option> 
    </select> 
</div> 

アヤックス:

$("#orderby").on('change', function() { 

    var option = $('#orderby > option').filter(':selected'); 

    $.post("ajax/" + option.data("post-url"), { 
     filter: option.val() 
    }, function(result){ 
     $("#productviewajax").html(result); 
    }); 

}); 

prijslaaghoog.phpは、$ productcatcrです[0] [ 'ID']は、する必要があります認識された。私のクエリで

$pid = $productcatcr[0]['id']; 

<option value="lowhigh" data-post-url="prijslaaghoog.php?id='.$pid.'">Prijs: Laag naar hoog</option> 

そして:

+0

いただきました$ productcactr? –

+0

@Jonaswスクリプトをロードする必要があるページのID。 – twan

+0

リファクタリングする必要があります。私はコードベースを見ることはできませんが、ドロップダウンに応じて異なるエンドポイントにajaxリクエストを送信しています。私はこれらの4つのPHPファイルのコードを画像化することはほぼ同じで、orderby sqlの違いだけで同じです。 1つのエンドポイントにリクエストを送信して、ポスト・データにsortパラメータとpageパラメータの両方を渡す方がはるかに意味があります。 – Steve

答えて

0

私はそうのようなURLを介して可変を掲載することにより、それを修正

$product = "SELECT * FROM `web_content` WHERE `catid` = '".$_GET['id']."' AND state = 1 order by introtext ASC"; 
+0

ここでバインド変数を使用して、SQLインジェクションを回避します。 –

関連する問題