2012-02-02 10 views
-1

簡単な質問私はフィルタの面から離れて、完全に機能するデータベースのウェブサイトを持っています。私はjavascriptフィルタを持っていましたが、それはliクラスを介してフィルタリングされ、li class = 'にすることでデータベースと正しく動作しませんでした。名前。 ' 動作しませんでした。php if文を使用したフィルタリング

とにかくこの方法を使用してフィルタの問題を回避しようとしました。

しかし、どこにエラーが発生するのかわからないので、なぜコメントアウトされているのかわかりません。誰も助けたり、これについてもっと良い方法を提案することはできますか?

$result = mysql_query("SELECT * FROM ddcompanies"); 

/* 
while($row = mysql_fetch_array($result)) { 
    $cname = $row["company"]; //runs through the company column and populates the array varcompany with those names 
    $csect = $row["sector"]; //runs through the website column and populates the array varwebsite with those names 
    $cslog = $row["slogan"]; //runs through the story column and populates the array varstory with the text 
*/ 

echo "<ul id='portfolio'>"; 

if($_GET['link']=='design'){ 

    echo "design";// TEST 
    $result .= "AND sector = 'design'"; 

echo "<li> 
    <a href='single.php?link=" . $cname . "'><img src='images/companies/" . $cname . ".png' alt='' height='115' width='200' />$cname</a> 
    <div id='sector'>$csect</div> 
    <div id='details'>$cslog</div> 
</li>"; 

}else{ 
    echo "no way";// TEST 
}; 

あなたが助けてくれ、もっと良い方法を教えてください。

ありがとうございます!私のインデックスページ

* EDIT **

私は(すべてがデータベースから引き出さ画像といくつかの情報を持っている)リンクのグリッドやギャラリーを持っています。

各データベースエントリには、セクタというフィールドがあります。

グリッドの項目を表示(フィルタ)できるようにするには、たとえば、デジタル(セクター名)または非デジタル(セクター名)。

したがって、フィルタは各データベースエントリのセクタフィールド値を使用します。

フィルタリングのインデックスページのリンクは、次のようになります。設計または開発

これは十分明確です。

* EDIT * *

//QUERY IN EACH 

$query = "SELECT * FROM ddcompanies "; 
if($_GET['link']=='design') { 
    $query .= "WHERE sector = 'design'"; 
$result = mysql_query($query); 
}elseif($_GET['link']=='development') { 
    $query .= "WHERE sector = 'development'"; 
$result = mysql_query($query); 
}; 

//OR 

$query = "SELECT * FROM ddcompanies "; 
if($_GET['link']=='design') { 
    $query .= "WHERE sector = 'design'"; 
}elseif($_GET['link']=='development') { 
    $query .= "WHERE sector = 'development'"; 
}; 
$result = mysql_query($query); 
+1

何をしようとしていますか?あなたの質問は明確ではありません。 –

+0

私は混乱しています、何をしようとしていますか? –

+0

あなたは何をしようとしていますか? – Joe

答えて

2

あなたは上記の投稿の場合にはURLパラメータ(リンク)に基づいて、クエリ文字列に追加しようとしているように見えます。 $ resultはリソースであり、文字列ではないので、あなたはリソースに別の文字列を追加することはできません。

クエリの文字列変数を作成してから、mysql_query()関数にプラグインする必要があります。

また、クエリを修正する方法を確認する文字列宣言の上にロジックを移動する必要があります。

最後に、WHERE句をとし、ANDセクタ= 'デザイン'を使用すると、今すぐクエリが中断されます。

EDIT(いくつかの擬似コードを追加しました):

$query = "SELECT * FROM ddcompanies "; 
if(isset($_GET['link']))  
     $query .= "WHERE sector = '".mysql_real_escape_string($_GET['link'])."'"; 
    $result = mysql_query($query); 
+0

おかげさまで、仲間の助けとなりました。私がもっと多くを加えるつもりならば。毎回クエリを実行するのか、最後にクエリを1回だけ実行するのですか?上記のオリジナルを編集します。 ^^^ – Nils

+1

はいくつかのことに依存します。つまり、データベースからの検索が同じであるか異なる場合のフィールドです。それに応じてクエリを構築するだけです。同じフィールドの場合はIN()を使用できますが、ORを使用して各値を別々に追加することもできます。別のフィールドの場合は、ANDを使用してフィールド名/値の組み合わせを追加する必要があります。重要なことは、mysql_query()関数に渡す前にクエリを構築することです。 –

+1

ok私はあなたの編集を参照してください...私は私の応答を編集します –

関連する問題