Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: помогите создать запрос

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Вездеход
Отправлено: 09 Июня, 2008 - 12:52:59
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




есть база с инфой в текстовом файле...

вида:
189 09.06.2008 13:22
189 09.06.2008 13:22
341 09.06.2008 13:21
26 09.06.2008 13:20
341 09.06.2008 13:19

выглядит так: (пробелы)(номер)(1пробел)(день создания)(1пробел)(часы:минуты создания)
подскажите как можно такую строку разбить на 3 части - номер дата время - чтобы можно было нормально обрабатывать как массив с инфой


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
valenok
Отправлено: 09 Июня, 2008 - 12:54:52
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




file() + trim() + explode()


-----
Truly yours, Sasha.
 
My status
 Top
EuGen Администратор
Отправлено: 09 Июня, 2008 - 12:59:36
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ну, зачем же так делать, если MySQL любезно предоставляет нам:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. LOAD DATA INFILE 'Ваш_файл'
  3. INTO TABLE Ваша_таблица
  4. CHARACTER SET Кодировка_файла
  5. FIELDS TERMINATED BY ' '
  6.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Вездеход
Отправлено: 09 Июня, 2008 - 13:17:42
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




2 valenok
я так и сделал собсна...
не катит =(
всего строк в файле - 456876
а выводит только 483
это если через file() + trim() + explode()

проблема в том, что в начале строки разное колличество пробелов...
от 1 до 4

потому все и осложняется =(

2 EuGen
а как база отнесется к пробелам в начале строки?
(Добавление)
попробовал вот это сделать:

LOAD DATA INFILE 'Ваш_файл'
INTO TABLE Ваша_таблица
CHARACTER SET Кодировка_файла
FIELDS TERMINATED BY ' '

как я и думал - загрузилась пустота...


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
valenok
Отправлено: 09 Июня, 2008 - 14:54:58
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Я вообще понял что данные в файле записаны..
ну и что что количество разное ? trim()

всего строк в файле - 456876
а выводит только 483

Это интересно..
А что касается 456876..
То это не мало..
Скорее всего file() съест много оперативки которой сервер не выделяет
так что придётся файл читать построчно в ручную.


-----
Truly yours, Sasha.
 
My status
 Top
Вездеход
Отправлено: 10 Июня, 2008 - 15:32:26
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




trim я и сам думал что уберет пробелы...
но как то не понятно дальше получается...

valenok пишет:
всего строк в файле - 456876
а выводит только 483

тут и я не понимаю как такое возможно...
да, там есть условие вывода - если значение = NULL - то не выводить. но строк с таким значением меньше 100...

valenok пишет:
А что касается 456876..

а вот это уже не важно. скрипт для работы на локальном хосте для личных целей =)
так что оперативы хватит


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
valenok
Отправлено: 10 Июня, 2008 - 16:59:54
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Что там дальше както непонятно ?


-----
Truly yours, Sasha.
 
My status
 Top
Вездеход
Отправлено: 11 Июня, 2008 - 14:33:52
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




ну вот и не понятно почему пачти в 1000 раз уменьшается количество записей...


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
IOpeH
Отправлено: 11 Июня, 2008 - 15:34:27
Post Id



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




дак а показываются записи подряд от начала, или 2,5,65,442 и тд

если подряд дак наверно действительно оперативы не хватает
 
 Top
valenok
Отправлено: 11 Июня, 2008 - 17:49:24
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




исходный код покажите


-----
Truly yours, Sasha.
 
My status
 Top
IOpeH
Отправлено: 11 Июня, 2008 - 21:07:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




Вездеход, попробуй такой код
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP require_once('../before_html.php')?>
  3. <html>
  4. <head>
  5. <title>Untitled Document</title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  7. </head>
  8. <body>
  9. <?PHP
  10. //(пробелы)(номер)(1пробел)(день создания)(1пробел)(часы:минуты создания)
  11. $log='test.txt';
  12. $log_stream=fopen($log,'a');
  13. flock($log_stream,2);
  14. //for($i=0;$i<500000;$i++)fwrite($log_stream,'   '.rand(1,999).' '.date("d.m.Y H:i")."\n");
  15. $log_array=file($log);
  16. echo'<table align="center" cellpadding="5" cellspacing="5"><col style="background:#F5F5F5; width:100px;"><col style="background:#F5F5F5; width:200px;"><col style="background:#F5F5F5; width:100px;">';
  17. $i=1;
  18. foreach($log_array as $k=>$v){
  19.         $v=trim($v);
  20.         $v_array=explode(' ',$v);
  21.         echo'<tr><td>',$i++,' ',$v_array[0],'</td><td>',$v_array[1],'</td><td>',$v_array[2],'</td></tr>';
  22. }
  23. echo'</table>';
  24. flock($log_stream,3);
  25. fclose($log_stream);
  26. ?>
  27. </body>
  28. </html>
  29.  

у меня работает прекрасно (до 56044 строки дошол, дальше время вышло Радость )
 
 Top
Вездеход
Отправлено: 12 Июня, 2008 - 17:26:53
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




попробую. и код покажу - но только в понедельник (
на работе все осталось...

зы.
ваш код красивше. но принцип тот же )

зы2.
массив я перебирал через foreach а не через for


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Champion Супермодератор
Отправлено: 28 Августа, 2008 - 15:51:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




до конца файла
$line_elements =explode(' ', trim( fgets(....) ) );
$line_elements[0], [1], [2] - три поля
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB