Сортировка товаров

Тема в разделе "PHP", создана пользователем rasandrey, 29 июл 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. rasandrey

    rasandrey

    Регистр.:
    2 апр 2009
    Сообщения:
    214
    Симпатии:
    6
    Подскажите, плиз, что не правильно делаю:
    Есть таблица в которой много полей и поле "slova". Есть адресная строка "http://zu/index.php?order=qwd"

    Обработка в php:
    PHP:
        if (isset($_GET['order']) && trim($_GET['order']) != '') {
        
    //делаем запрос и выбираем все товары
        
    $q mysql_query("SELECT * FROM ".PRODUCTS_TABLE." ORDER by productID DESC limit ".($count*$page).", {$count}");

        
        
    //обрабатываем sql запрос
        
    while ($row mysql_fetch_array($q)){
            
    $b2 = array() ;
            
    //уже найден товар или еще нет
            
    $m 1;
            
    //разбиваем значение поля slova с вида "слово1,слово2,слово3" на вид Array ( [0] => слово1 [1] =>слово2 [2] => слово3 )
            
    $b2 preg_split('~\s*,\s*~'$row['slova']);
            
    //перебираем полученый массив со словами
            
    foreach($b2 as $k) {
                
    //проверяем совпадает одно из слов записи с поля slova у данного товара, если совпадает, устанавливаем $m в 2 и уходим на 2-ой това
                
    if ($k == $_GET['order'] && $m == ) {
                    
    $m 2;
                    
    $b[] = $d;
                    
    $id[] = $row['productID'];
                    
    $name[] = $row['name'];
                    
    $desc[] = $row['description'];
                    
    $price[] = $row['Price'];
                    
    $image[] = $row['picture'];
                    
    $user_id_add[] = $row['user_id'];
                    
    $user_name_add[] = $row['user_name'];
                    
    $d ++;
                    }
        }
        }
        }
    Смысл такой: в таблице "pr" есть поле "slova", которое содержит строку вида "слово1,слово2,слово3" . Нужно перебирать каждую запись и сравнивать значение в запросе $_GET['order'] если одно из слов(черзе запятую) совпадает со словом в GET, значит поля записи уходит в массив

    Но почему-то получается неразбериха, то товары выводятся, то не выводятся. С русскими символами вообще не работает. Поправьте, плиз
     
  2. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    вообще проще было бы добавить в запрос

    WHERE slova =".$_GET['order']

    ( есно подумав про SQL иньекцию )

    на счет русских -- делай urldecode($_GET['order'])
     
  3. rasandrey

    rasandrey

    Регистр.:
    2 апр 2009
    Сообщения:
    214
    Симпатии:
    6
    а разве он найдет в поле со строкой "слово1,слово2,слово3" строку "слово2" ?
     
  4. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    почитай про LIKE

    SELECT * W?HERE slova LIKE ...
     
    rasandrey нравится это.
Статус темы:
Закрыта.