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

  • Автор темы Автор темы kosjak08
  • Дата начала Дата начала

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;
          }
      }
  }
Вот это ищет как сделать что бы оно искало по нескольким кодам?
 
То есть Вы хотите из БД вытащить все записи, у которых, допустим, код товара может быть один из следующих: someFigures1, someFigures2, someFiguresN? На входе мы отдаем необходимые коды товаров, на выходе получаем все товары, соответствующие этим кодам? Так в чем сложность то?
 
да но например в someFigures1, someFigures2, someFiguresN код FN45562 но мне надо еще оттаскать по коду например ME54564 и тоже вывести
 
Не буду предоставлять какой-либо код. Кодописателей здесь и так много, а мы попробуем разобраться с самой задачей. Составим простенький алгоритм, каким бы воспользовался я, но, конечно, в 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);
Сразу попрошу прощения за неточности, просто в последнее время больше на фронтенде.
 
Сверху