Автор Тема: Этот забавный поиск  (Прочитано 7069 раз)

Оффлайн wut

  • Старший
  • ****
  • Сообщений: 531
  • Карма: +0/-0
Этот забавный поиск
« : 19-03-2009 16:23:40 »
Ничего расписывать не буду:
<?
  /* Подключаем свои модули и соединяемся с бд  */
 # Получаем список таблиц
 $table_list=mysql_query("show tables");
 if($_POST[wts]){
  $wts=mysql_escape_string($_POST[wts]);
  /* Тут можно сделать много проверок исходя из поставленной задачи */
 # И сам процесс
 while($t_l=mysql_fetch_array($table_list)){
    # Получаем список полей текущей таблицы
    $field_list=mysql_query("desc $t_l[0]");
    while($f_l=mysql_fetch_array($field_list)){
     # Делаем запрос на выборку нужных данных ( в тестовой базе у всех таблиц есть поле id )
     /*
      $f_l[0] - текущее поле поиска
      $t_l[0] - текущая таблица
      $wts   - критерий запроса
      */
     $querry="select id,".$f_l[0]." from ".$t_l[0]." where ".$f_l[0]." regexp '".$wts."'";
     $qu=mysql_query($querry);
     # Если что-то нашли
     if(@mysql_num_rows($qu)>0){
     if($fl==0){
      # Метка 1
      echo "<div><u>Found In <font class=\"red\">$t_l[0]</font></u>
            <table border=1 style=\"border:solid 1px;\">
             <tr><td>id</td><td>$f_l[0]</td></tr>";
      while($r_l=mysql_fetch_row($qu)){
        echo "<tr><td>$r_l[0]</td><td>$r_l[1]</td></tr>";
      # Метка 2
                                         };
      echo "</table>
            </div>";
                };
                                };
                                              };
                                            };
                };
?>
Идея в том, что поиск прогоняется по всем полям всех таблиц выбранной БД.
 Вы можете составлять списки полей как угодно.
 Между "# Метка 1" и "# Метка 2" целесообразно запихать switch структуру, т.е.
# В зависимости от выбранной таблицы мы можем выводить нужные для неё результаты
 switch($t_l[0]){
  case 'table_1':
   # Результаты в виде для таблицы 1
  break;
  case 'table_2':
   # Результаты в виде для таблицы 2
  break;
                      }
Вот, вроде, и все. Если есть замечания по улучшению этой конструкции - буду рад попробовать. Лучшего пока что моя голова не придумала.
 Здесь вся проблема в специфике поиска и времени выполнения скрипта.
 Т.е. 0.0480041503906 секунд понадобилось для поиска в 2 таблицах 6 записей.
« Последнее редактирование: 19-03-2009 16:26:06 от wut »
mb986