Проблемы с выборкой из файла

Статус
Закрыто для дальнейших ответов.

volon

Новичок
Регистрация
15.11.2010
Сообщения
3
Здравствуйте!

Сразу скажу,что я не программист, а администратор.. Но партия сказала модифицировать программку, которая написана на php.. и вот возникли проблемы..

Помогите-подскажите, пожалуйста...

Проблема: есть файл формата: [название приложения] [версия приложения]

я пишу: $qwe=shell_exec("cat /tmp/123 | awk {'print $1'}"); - выбирается первый столбец как единое целое...

Такой столбец нельзя занести в БД - заносится как одно.... Как мне обработать запрос, какими функциями, чтоб в БД можно было занести [название приложения] в первый столбец, [версия приложения] - второй столбец, и так по всем строчкам в файле....

Я прочитал и интернет, и книги - но никак не получается сделать этого....

Помогите, кто чем может)))
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Здравствуйте!

Сразу скажу,что я не программист, а администратор.. Но партия сказала модифицировать программку, которая написана на php.. и вот возникли проблемы..

Помогите-подскажите, пожалуйста...

Проблема: есть файл формата: [название приложения] [версия приложения]

я пишу: $qwe=shell_exec("cat /tmp/123 | awk {'print $1'}"); - выбирается первый столбец как единое целое...

Такой столбец нельзя занести в БД - заносится как одно.... Как мне обработать запрос, какими функциями, чтоб в БД можно было занести [название приложения] в первый столбец, [версия приложения] - второй столбец, и так по всем строчкам в файле....

Я прочитал и интернет, и книги - но никак не получается сделать этого....

Помогите, кто чем может)))
1) $array_files = glob("директория/маска"); получить массив файлов
2) foreach($array_files as $file){ цикл перебора всех файлов
3) $strings = file($file); получаем массив строк из файла
4) foreach($strings as $string) { $res_arr = explode("разделитель между именем и версией");}
} как то так, дальше смотрите, если версии и названия как то по другому надо парсить то preg_match или preg_replace нужно делать.

для дебага массива используйте print_r($array);
 

volon

Новичок
Регистрация
15.11.2010
Сообщения
3
Спасибо))) разобрался))) но возникла другая проблема((((

Смысл в том, чтоб скрипт подключался к БД, смотрел,сколько туда занесено активных серверов, а потом лез в директорию и считывал файлы по этим серверам

//выполняем sql-запрос
$ath = mysql_query("SELECT IP FROM servers");

//считаем количество записей в таблице (количество активных серверов)
$numIP = mysql_num_rows($ath);

//так как запрос возвращает несколько строк, применяем цикл
for ($i = 0; $i <= $numIP-1; $i++)
{
list($number) = mysql_fetch_array($ath);
}

//открываем в цикле на чтение файл со списком приложений
for ($i = 0; $i <= $numIP-1; $i++)
{
$filename = "/tmp/$number"; //указываем путь к файлу
...... и т.д. и т.п.

Моя логика - занести айпи адреса в массив, а затем брать одно значение из массива и открывать на чтение файл, имя которого = айпи адресу

так вот - в приведённом коде в переменной $number остаётся только последний IP-адрес.. где я ошибся?
 

Serg@NT

Well-Known Member
Регистрация
20.02.2010
Сообщения
506
Код:
//выполняем sql-запрос
$ath = mysql_query("SELECT ip FROM servers");

//так как запрос возвращает несколько строк, применяем цикл
while ($number = mysql_fetch_array($ath)) {
 $filename = "/tmp/".$number['ip'];
 //...... и т.д. и т.п. то, что должно быть в цикле
}
Обратите внимание, что всё, что вам нужно с файлом делать (открывать на чтение и т.п.) должно быть внутри цикла
 

volon

Новичок
Регистрация
15.11.2010
Сообщения
3
что-то всё-равно не хочет работать(((

код:

//выполняем sql-запрос
$ath = mysql_query("SELECT IP FROM servers");

//считаем количество записей в таблице (количество активных серверов)
$numIP = mysql_num_rows($ath);

//так как запрос возвращает несколько строк, применяем цикл (цикл for, так как дальше нужно и количество серверов)
for ($i = 0; $i <= $numIP-1; $i++)
{
//возвращение результата запроса, выполненного функцией mysql_query, в виде массива
list($number) = mysql_fetch_array($ath);

//считывание файла и возвращение содержимого в массив
$apps = file('/tmp/$number', FILE_IGNORE_NEW_LINES);

//обработка данных

}

В папке tmp лежат файлы, мена которых IP адреса машин. Моя логика - считываем IP-адреса из БД, далее в цикле по очереди подставляем эти адреса в переменную apps и обрабатываем данные... возникает две проблемы - 1) в значение $number входит не все адреса, а как-то рамдомно - зависимость не определил; 2) именя файлов в $apps не подставляются

с первой проблемой разобрался - в number входят все адреса... а вот вторая осталась - где я в синтаксесе ошибся?
 
Статус
Закрыто для дальнейших ответов.
Верх Низ