2016-07-01 7 views
-4

私は問題があります。私は、チェックボックスのクリックで製品をフィルタリングしています。しかし、2つの異なる録音をクリックすると、同じ製品が再び見えます。私はそれがクリックされた製品だけを見たいと思う。MySQLの特番が意図したとおりに動作しない

ありがとうございました。

$bcheck=trim(strip_tags($_POST['bcheck'])); 

$dizi = explode(',',$bcheck); 
foreach ($dizi as $diziyaz){  

$filtrele=mysql_query("SELECT DISTINCT * FROM urunler 
      INNER JOIN urunozellikler ON urunler.id = urunozellikler.urunid 
      WHERE urunozellikler.id='$diziyaz' AND urunler.dil='tr' 
      AND urunler.onay='1'"); 

while($filtreleyaz=mysql_fetch_array($filtrele)){ 

echo $filtreleyaz["urunad"]; 

} 

} 
+2

、あなたはその後、 ''とを持っているが、 '*' 'Everything'を意味します異なる値として – Martin

+0

[MySQLマニュアル](http://dev.mysql.com/doc/refman/5.7/en/distinct-optimization.html) – Martin

+0

を参照してください。group by句を使用してください。しかし私の知る限りでは、MySQLはグループのためのゆるい構文を許します。ほとんどのSQL実装では、非集約カラムをすべて指定する必要があります。このsytaxルールを有効にするオプションがあるので、MSQLでもこの練習に従うべきです –

答えて

1

私は問題がbcheck値を反復していると思います。それは$ bcheckサイズと同じ回数だけ製品を表示するようにデータベースのカップル時間を照会します。

$bcheck=trim(strip_tags($_POST['bcheck'])); 

$dizi = explode(',',$bcheck); 

$where = ''; 
foreach ($dizi as $diziyaz){  
    $where .= " OR urunozellikler.id='$diziyaz'"; 
} 
$where = substr($where, 3); 

$filtrele=mysql_query("SELECT DISTINCT * FROM urunler 
      INNER JOIN urunozellikler ON urunler.id = urunozellikler.urunid 
      WHERE ($where) AND urunler.dil='tr' 
      AND urunler.onay='1'"); 

while($filtreleyaz=mysql_fetch_array($filtrele)){ 

echo $filtreleyaz["urunad"]; 

} 

これは問題を解決するはずですが、このコードで作業する必要があります。

+0

ありがとうございます。しかし、このコードは動作しません。私が試してみると、 すべての製品が表示されます。フィルタリングしなかった。 –

+0

はい、私は論理を間違えました。修正されました。今すぐ試してください。 –

0

変更あなたのクエリをして、あなたの明確な列を指定EX:あなたにもすべてを選択しているので、

はあなたの個別の何もしていません
SELECT DISTINCT PRODUCT FROM urunler 
      INNER JOIN urunozellikler ON urunler.id = urunozellikler.urunid 
      WHERE urunozellikler.id='$diziyaz' AND urunler.dil='tr' 
      AND urunler.onay='1' 
+0

申し訳ありませんが、カラム名を使用しています。しかし、働いていない。 2つの異なる録音をクリックすると、同じ製品が再び見えます。 –

+0

それらはあなたのSQLで問題ありません –

関連する問題