За последние 24 часа нас посетили 59943 программиста и 7131 робот. Сейчас ищет 1821 программист ...

Поиск строк в каталогах

Тема в разделе "Прочие вопросы по PHP", создана пользователем Lovelysop, 31 мар 2011.

  1. Lovelysop

    Lovelysop Активный пользователь

    С нами с:
    15 фев 2011
    Сообщения:
    40
    Симпатии:
    0
    PHP:
    1. foreach($m[1] as $roo){
    2.  
    3.  $query = "SELECT `Код товара` FROM `Соответсвие` WHERE `Код документа` in ($roo) order by `Код документа`"; /* выбираю из базы таблицу Соответствие и все записи в которых Код документа=2 */
    4.  
    5.  /*Записываем в переменную*/
    6. $result=mysql_query($query);
    7. /*Добавляем запись в начало строки*/
    8. var_dump ($result);
    9. /*Выводим все элеметы и добавляем запятую*/
    10.  
    11.  $arr=array();
    12.  while($r=mysql_fetch_array(
    13.                             $result
    14.                                     )) $arr[]=$r[0];
    15. {
    16. $docCodes=implode(',',$arr);
    17. $var='$id = Array('.$docCodes.');';
    18.  
    19.  
    20.  }
    21.  
    22.     }
    23. echo $var;
    24.  }
    вот так выводит - только результат от последнего элемента массива((( , как вывести все элементы? чет запутался)) прощу прощения - не обладаю достаточными знаниями, что бы сразу до всего самому доходить вот и постю здесь))
     
  2. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.639
    Симпатии:
    1
    Вопросы почти не изменились:
    0)Не понимаю почему мое предыдущее сообщение отразилось на коде частично и искаженно.
    1)Опишите что делает каждая строчка?
    2)Зачем foreach в первой строчке?
    3)Зачем открывающая скобка в 15 строчке
     
  3. Lovelysop

    Lovelysop Активный пользователь

    С нами с:
    15 фев 2011
    Сообщения:
    40
    Симпатии:
    0
    PHP:
    1. <?php
    2. foreach($m[1] as $roo){  //выводим из массива записи которые взяли со страниц после preg_match_all
    3.  
    4.   $query = "SELECT `Код товара` FROM `Соответсвие` WHERE `Код документа` in ($roo) order by `Код документа`"; /* выбираю из базы таблицу Соответствие и все записи в которых Код документа=2 */
    5.  
    6.  $result=mysql_query($query);
    7.  var_dump ($result);
    8.  
    9.   $arr=array();
    10.   while($r=mysql_fetch_array(
    11.                              $result
    12.                                      )) $arr[]=$r[0]; //выводим в цикле ассоциативный массив и получаем результат после запроса к Mysql
    13.  {
    14.  $docCodes=implode(',',$arr); // запятая)))
    15.  $var='$id = Array('.$docCodes.');'; // формирование строки
    16.  
    17.  
    18.   }
    19.  
    20.      }
    21.  echo $var;
    22.   }
    23. ?>
    Разве не так?))))
    0) - что именно отразилось искаженно?
    1) -
    2) - Для вывода элементов массива(я неправ?)
    3) - While {тело цикла}
    {
    $docCodes=implode(',',$arr); // запятая)))
    $var='$id = Array('.$docCodes.');'; // формирование строки


    }
     
  4. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.639
    Симпатии:
    1
    0, 2)Остался foreach
    Он там для того чтобы по каждому найденному числу получить результат. В моем варианте результат получается одним запросом по всем числам.
    3)Телом цикла является только
    Код (Text):
    1. $arr[]=$r[0];
    Попробуйте получше отформатировать код - станет заметнее.

    Что в итоге происходит?
    Берем первое число, формируем результат, записываем в переменную $var. Затем берем второе число, формируем результат, и записываем в переменную $var. Т.е. предыдущее значение $var потеряно. И т.д. Потому и выводится результат только от последнего элемента.

    Что надо?
    Вывести строчку по всем элементам или вывести по каждому элементу свою строчку?
     
  5. Lovelysop

    Lovelysop Активный пользователь

    С нами с:
    15 фев 2011
    Сообщения:
    40
    Симпатии:
    0
    Нужно вывести строчку со всеми элементами , то есть , чтобы все идентификаторы 'Соответствия' собранные с 1 страницы сформировались в строке вида
    PHP:
    1. $id = Array(1150001, 1150002, 1150003, 1150004, 1150005, 1150006, 1150007, 1150008, 1150009, 1150010, 1150011, 1150012, 1150013, 1150015, 1150016, 1150017);
    - данные цифры означают идентификаторы кодов товаров со всей страницы то есть в этой строке.
     
  6. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.639
    Симпатии:
    1
    Сделайте замену как я писал выше и уберите 3 лишние фигурные скобки.
     
  7. Lovelysop

    Lovelysop Активный пользователь

    С нами с:
    15 фев 2011
    Сообщения:
    40
    Симпатии:
    0
    PHP:
    1.  
    2. <?php
    3. foreach($files as $file)
    4.  {
    5.  
    6.      $konec=file_get_contents($file);
    7.      
    8.      echo '<br />';
    9.    
    10.      preg_match_all('#^\s{0,1}<\?php\s\$id=([0-9]+);\s\$ui=[0-9]+;\s\$yu=[0-9]+;\sinclude\'|"[^\'|"]+?:\'|";\s\?>\s{0,1}$#im', $konec, $m);
    11.  
    12.  
    13.      foreach($m[1] as $roo){  //выводим из массива записи которые взяли со страниц после preg_match_all
    14.  
    15.   $query = "SELECT `Код товара` FROM `Соответсвие` WHERE `Код документа` in ($roo) order by `Код документа`"; /* выбираю из базы таблицу Соответствие и все записи в которых Код документа=2 */
    16.  
    17.  $result=mysql_query($query);
    18.  
    19.  
    20.   $arr=array();
    21.   while ( $row = mysql_fetch_array($result)){ //выводим в цикле ассоциативный массив и получаем результат после запроса к Mysql
    22.  
    23.     $r[] = $row;
    24.  }
    25.      echo "<pre>";
    26.      print_r ($r);
    27.      echo "</pre>";
    28.  $docCodes=implode(',',$r); // запятая)))
    29.  $var='$id = Array('.$docCodes.');'; // формирование строки
    30.  
    31.  
    32.  
    33.   }
    34.  
    35.  echo $var;
    36.     }
    37. ?>

    выводит почти то что нужно только не могу понять почему возвращает вот такое:
    Код (Text):
    1.  
    2. Array
    3. (
    4.     [0] => Array
    5.         (
    6.             [0] => 28566
    7.             [Код товара] => 28566
    8.         )
    9.  
    10.     [1] => Array
    11.         (
    12.             [0] => 28567
    13.             [Код товара] => 28567
    14.         )
    15.  
    16.     [2] => Array
    17.         (
    18.             [0] => 28572
    19.             [Код товара] => 28572
    20.         )
    21.  
    22.     [3] => Array
    23.         (
    24.             [0] => 28573
    25.             [Код товара] => 28573
    26.         )
    27.  
    28.     [4] => Array
    29.         (
    30.             [0] => 28579
    31.             [Код товара] => 28579............
     
  8. Lovelysop

    Lovelysop Активный пользователь

    С нами с:
    15 фев 2011
    Сообщения:
    40
    Симпатии:
    0
    Бгг туплю))) $r[] = $row[0];
     
  9. Lovelysop

    Lovelysop Активный пользователь

    С нами с:
    15 фев 2011
    Сообщения:
    40
    Симпатии:
    0
    О хччет вааще не то получилось))теперь он наоборот дописывает в остальное из первого вывода $var и так далее))))
     
  10. Lovelysop

    Lovelysop Активный пользователь

    С нами с:
    15 фев 2011
    Сообщения:
    40
    Симпатии:
    0
    PHP:
    1.  
    2. <?php $docCodes=implode(',',$m[1]);
    3. $query = "SELECT `Код товара` FROM `Соответсвие` WHERE `Код документа` in ($roo) order by `Код документа`"; /* выбираю из базы таблицу Соответствие и все записи в которых Код документа=2 */
    4.  
    5.   /*Записываем в переменную*/
    6.  $result=mysql_query($query);
    7.  /*Добавляем запись в начало строки*/
    8.  
    9.  /*Выводим все элеметы и добавляем запятую*/
    10.  
    11.   $arr=array();
    12.   echo '<pre>';
    13. echo $r=mysql_fetch_array($result);
    14. echo '</pre>';
    15.  $var='$id = Array('.$docCodes.');';
    16.  
    17.  
    18.  
    19.  
    20.  echo '<br />'.$var;
    21.   }
    22. ?>
    23.  
    - ошибка Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
     
  11. Lovelysop

    Lovelysop Активный пользователь

    С нами с:
    15 фев 2011
    Сообщения:
    40
    Симпатии:
    0
    PHP:
    1. $files=glob('test/*.txt');// показываетм файлы с каким расширением забирать
    2.  
    3. foreach($files as $file)
    4.  {
    5.  
    6.      $konec=file_get_contents($file);
    7.      
    8.      echo '<br />';
    9.    
    10.      preg_match_all('#^\s{0,1}<\?php\s\$id=([0-9]+);\s\$ui=[0-9]+;\s\$yu=[0-9]+;\sinclude\'|"[^\'|"]+?:\'|";\s\?>\s{0,1}$#im', $konec, $m);
    11.  
    12.  $r = Array();
    13.      foreach($m[1] as $roo){  //выводим из массива записи которые взяли со страниц после preg_match_all
    14.  
    15.   $query = "SELECT `Код товара` FROM `Соответсвие` WHERE `Код документа` in ($roo) order by `Код документа`"; // выбираю из базы таблицу Соответствие и все записи в которых Код документа
    16.  
    17.  $result=mysql_query($query);
    18.  
    19.  
    20.  
    21.   while ( $row = mysql_fetch_array($result))
    22.     { //выводим в цикле ассоциативный массив и получаем результат после запроса к Mysql
    23.  
    24.     $r[] = $row[0];
    25.    
    26.     }
    27.  
    28.  
    29.  
    30.   $docCodes=implode(',',$r); // запятая)))
    31.  $var='$id = Array('.$docCodes.');'; // формирование строки
    32.  
    33.   }
    34.        echo $var.'<br />';
    35.  
    36.      }


    Наконец - мои извращения закончились))))!!!!

    Благодарю Volt(220) - за помощь!!!
     
  12. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.639
    Симпатии:
    1
    А forexch так и остался. Зачем тогда