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]   

> Описание: Не записывается контент в базу
splish
Отправлено: 02 Июня, 2011 - 19:44:04
Post Id


Новичок


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


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




Добрый день, разъясните пожалуйста ситуацию.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require_once 'connect.php';
  3. $result = mysql_query("SELECT url FROM ur");
  4. $myrow = mysql_fetch_array($result);
  5.  
  6. while ($myrow = mysql_fetch_array($result)) {
  7. $content = file_get_contents($myrow['url']);
  8.  
  9.         preg_match_all('/ottom:3px;">(.*?)</is', $content, $tit);
  10.         echo strip_tags(substr($tit[0][0],12,-1))."<br>";
  11.        
  12.        
  13.         preg_match_all('/class="eBlock">(.*?)<\/td>/is', $content, $con);
  14.         echo strip_tags(nl2br(substr($con[0][0],15)),"<br><img>");
  15.        
  16.        
  17.         mysql_query("set collation_connection = 'utf8_general_ci'");
  18.         mysql_query("set character_set_client='utf8'");
  19.         mysql_query("set character_set_results='utf8'");
  20.         mysql_query("set character_set_system='utf8'");
  21.         mysql_query('SET names=utf8');
  22.  
  23.         $query = "INSERT INTO data (title,text,cat)
  24.                                         VALUES ('".strip_tags(substr($tit[0][0],12,-1))."',
  25.                                          '".strip_tags(nl2br(substr($con[0][0],15)),"<br><img>")."',
  26.                                           '".rand(29, 44)."')";
  27.         $insert = mysql_query($query) or die(mysql_error());
  28. }
  29. ?>


Цикл не проходит по всем URL которые есть в базе (примерно 1600 урлов).
Цикл проходит 1 раз, выводит на экран первую спарсеную статью, НО не записывает её в базу.

Если убрать while, в базу нормально записывается напарсеный контент с 1 страницы.

Помогите плиз, голова не варит уже, не могу найти ошибку или же как то по другому нужно сделать.

(Отредактировано автором: 02 Июня, 2011 - 19:44:29)

 
 Top
altermann
Отправлено: 02 Июня, 2011 - 23:44:35
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


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




Уберите первый mysql_fetch_array, оставте тот что в цикле.



Вынесите это из цикла, достаточно одного раза:
PHP:
скопировать код в буфер обмена
  1. mysql_query("set collation_connection = 'utf8_general_ci'");
  2. mysql_query("set character_set_client='utf8'");
  3. mysql_query("set character_set_results='utf8'");
  4. mysql_query("set character_set_system='utf8'");
  5. mysql_query('SET names=utf8');


Используйте функцию mysql_real_escape_string или addslashes для экранирования данных при вставке в БД, может в статье присутствуют кавычки.

Ну примерно так:
PHP:
скопировать код в буфер обмена
  1. require_once 'connect.php';
  2. mysql_query("set collation_connection = 'utf8_general_ci'");
  3. mysql_query("set character_set_client='utf8'");
  4. mysql_query("set character_set_results='utf8'");
  5. mysql_query("set character_set_system='utf8'");
  6. mysql_query('SET names=utf8');
  7. $result = mysql_query("SELECT `url` FROM `ur`");
  8.  
  9. while ($myrow = mysql_fetch_array($result)) {
  10.     $content = file_get_contents($myrow['url']);
  11.     preg_match_all('/ottom:3px;">(.*?)</is', $content, $tit);
  12.     $sTitle = strip_tags(substr($tit[0][0], 12, -1));
  13.     echo $sTitle . "<br>";
  14.  
  15.     preg_match_all('/class="eBlock">(.*?)<\/td>/is', $content, $con);
  16.     $sData = strip_tags(nl2br(substr($con[0][0], 15)), "<br><img>");
  17.     echo $sData;
  18.  
  19.     $query = "INSERT INTO `data` (
  20.            `title`, `text`, `cat`
  21.            ) VALUES (
  22.                '" . mysql_real_escape_string($sTitle) . "',
  23.                '" . mysql_real_escape_string($sData) . "',
  24.                '" . rand(29, 44) . "'
  25.            )";
  26.     $insert = mysql_query($query) or die(mysql_error());
  27. }

(Отредактировано автором: 02 Июня, 2011 - 23:54:13)



-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
splish
Отправлено: 03 Июня, 2011 - 17:42:54
Post Id


Новичок


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


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




altermann, огромное спасибо, всё работает!
 
 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