Фильтрация с использованием оператора php if - PullRequest
0 голосов
/ 03 февраля 2012

Быстрый вопрос У меня есть полнофункциональный веб-сайт базы данных, кроме аспекта фильтра.У меня был фильтр javascript, но он не будет работать с базой данных должным образом, так как он фильтруется через класс li и делает его li class = '.название .'не сработало.

В любом случае я пытался использовать этот метод, чтобы обойти проблему с фильтром.

Однако я не знаю, где выполнить запрос, который не вызовет ошибку, и поэтомузакомментировано.Кто-нибудь может помочь или даже предложить лучший способ сделать это?

$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
};

Надеюсь, что вы можете помочь или даже сказать мне лучший способ сделать это, пожалуйста.

Заранее спасибо!

* РЕДАКТИРОВАТЬ **

На моей странице указателя у меня есть сетка или галерея ссылок (которые имеют изображение и некоторую информацию, все избаза данных).

Каждая запись базы данных имеет поле, называемое сектором.

Я хочу иметь возможность отображать (фильтровать) только элементы сетки, которые относятся, например, к цифровым (имя сектора) или не-Digital (имя сектора).

Таким образом, фильтр будет использовать значение поля сектора в каждой записи базы данных.

В настоящий момент мои ссылки на странице индекса для фильтрации похожи на следующие, например:Дизайн или разработка

Надеюсь, это достаточно понятно.

* РЕДАКТИРОВАТЬ **

//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 Ответ

2 голосов
/ 03 февраля 2012

похоже, что вы пытаетесь добавить к строке запроса на основе параметра URL (ссылка) в случае, который вы опубликовали выше.То, как вы это делаете, не будет работать, хотя $ result является ресурсом, а не строкой, поэтому вы не можете просто добавить еще одну строку к ресурсу.

Вам нужно создать строковую переменнуюдля вашего запроса, затем вставьте это в функцию mysql_query ().

Вам также нужно переместить логику вверх над объявлением строки, которое проверяет, как отредактировать запрос.вам нужно вставить предложение WHERE, поскольку использование AND sector = 'design' разорвет запрос, как сейчас.

EDIT (добавлен некоторый псевдокод):

$query = "SELECT * FROM ddcompanies ";
if(isset($_GET['link']))    
        $query .= "WHERE sector = '".mysql_real_escape_string($_GET['link'])."'";
    $result = mysql_query($query);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...