Станица в цикле

kosjak08

Новичок
На странице установлен поиск в БД по коду товара. Сейчас код берется из другой БД и происходит поиск. Как сделать так что бы поиск был по нескольким кодам? Наверно надо использовать цикл но незнаю как подскажите
 

kosjak08

Новичок
Код длинный показать? Что бы поиск был по нескольким кодам а результат на одной страние
 

evgeshonok

Новичок
Очень просто. Берешь код из БД, в которой находится код, добавляешь еще один код и ищешь в той БД, в которой нужно искать.
 

kosjak08

Новичок
PHP:
include('sphinxapi.php');
  $ar_id2=array();
  $cl = new SphinxClient();
  $cl->SetServer( "localhost", 111 );
  $cl->SetMatchMode( SPH_MATCH_EXTENDED2  );
    $cl->SetLimits(0,300);
  $result = $cl->Query( "$seek2", 'test1stemmed' );
  if ( $result === false ) {
      echo "Query failed: " . $cl->GetLastError() . ".\n";
  }
  else {
      if ( $cl->GetLastWarning() ) {
      }
      if ( ! empty($result["matches"]) ) {
     foreach ( $result["matches"] as $doc => $docinfo ) {
                $ar_id2[]=$doc;
          }
      }
  }
Вот это ищет как сделать что бы оно искало по нескольким кодам?
 

evgeshonok

Новичок
То есть Вы хотите из БД вытащить все записи, у которых, допустим, код товара может быть один из следующих: someFigures1, someFigures2, someFiguresN? На входе мы отдаем необходимые коды товаров, на выходе получаем все товары, соответствующие этим кодам? Так в чем сложность то?
 

kosjak08

Новичок
да но например в someFigures1, someFigures2, someFiguresN код FN45562 но мне надо еще оттаскать по коду например ME54564 и тоже вывести
 

evgeshonok

Новичок
Не буду предоставлять какой-либо код. Кодописателей здесь и так много, а мы попробуем разобраться с самой задачей. Составим простенький алгоритм, каким бы воспользовался я, но, конечно, в 100500 случаях можно поступить круче. Для начала читаем про оператор IN в MySQL: http://www.sql.ru/docs/sql/u_sql/ch5.shtml . Думается, что пользоваться будем PDO.
1.создаем функцию, которая принимает аргумент в виде массива кодов: array('FN45562', 'ME54564', ... 'nnnnnnn',);
2.в самом запросе добавляем нехитрую функцию, которая исходя от количества элементов входящего массива будет возвращать строку с таким же количеством плейсхолдером, что-то вроде:
PHP:
$query = 'SELECT * 
FROM `table`
WHERE code IN ('.returnPlaceholder($numberOfElements).')'
Кстати, вот тут я боюсь, что крупно ошибаюсь, но главное, суть Вы поняли.
3.ну и в сам execute() вставляем наш входящий массив: $db->execute($data);
Сразу попрошу прощения за неточности, просто в последнее время больше на фронтенде.
 
Сверху