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
Форумы портала PHP.SU :: Версия для печати :: Проблема с добавлением записи в базу
Форумы портала PHP.SU » » Вопросы новичков » Проблема с добавлением записи в базу

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

1. lola_lola - 27 Августа, 2015 - 14:18:04 - перейти к сообщению
Добрый день. Пытаюсь делать тестовое задание, чтобы устроиться на работу. Второй день не могу понять и решить проблему. В базу строка добавляется только до знака тире, а потом обрывается. Есть делать запрос в phpmyadmin , то добавляется идеально. Что не так в коде? Я новичок и прошу быть помягче в критике

<?php

include_once ('simple_html_dom.php');

require_once('connectvars.php');

$page = file_get_html ('http://tcpulse.zpao.com/news');

foreach ($page->find ('table.page-box tbody tr td table tbody tr td[align=left] p a[class=headline]') as $href){
$article[] = $href -> href;
}

/*print_r($article);*/

for ($i=0; $i<=count($article); $i++) {

$text = file_get_html('http://tcpulse.zpao.com'.$article[$i]);


$title = $text->find('table.page-box tbody tr td table tbody tr td[align=left] span[class=article-headline]');
$date = $text->find ('table.page-box tbody tr td table tbody tr td[align=left] span[class=article-date-author]');
$description = $text->find ('table.page-box tbody tr td table tbody tr td[align=left] span[class=article-body]');


foreach ($title as $temp) {
$out['title'][]=$temp->innertext;
}

foreach ($date as $temp) {
$temp =str_replace(",",'', $temp->innertext);
$dates = explode(" ", $temp);
$string = "$dates[2]-$dates[0]-$dates[1]";
$temp = date("Y-m-d", strtotime($string));

$out['date'][]=$temp;
}


foreach($text->find('table.page-box tbody tr td table tbody tr td[align=left]') as $temp2){ $temp2->outertext = '';}
foreach($text->find('table.page-box tbody tr td table tbody tr td[align=left] div[class=postbox-header]') as $temp3){ $temp3->outertext = ''; }
foreach($text->find('table.page-box tbody tr td table tbody tr td[align=left] div[class=postbox-post]') as $temp4){ $temp4->outertext = ''; }
foreach ($text->find('table.page-box tbody tr td table tbody tr td[align=left] div[class=postbox-blurb]') as $temp5){ $temp5->outertext = ''; }
foreach ($text->find('table.page-box tbody tr td table tbody') as $temp6){ $temp6->outertext = ''; }
foreach ($description as $temp) {
$out['description'][]=strip_tags_deep($temp->innertext);
}
}

function strip_tags_deep($value)
{
return is_array($value) ?
array_map('strip_tags_deep', $value) :
strip_tags($value);
}

$imageName ='logo.gif';
$imageContent = file_get_contents('http://tcpulse.zpao.com/assets/pulse.gif');
file_put_contents('./'.$imageName, $imageContent);

$mysql=mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die('ERROR CONNECTION');
$db_selected = mysql_select_db(DB_NAME, $mysql);

for($i=0;$i<count($out['title']);$i++)
{

$out['title'][$i]=mysql_real_escape_string($out['title'][$i]);
$out['date'][$i]=mysql_real_escape_string($out['date'][$i]);
$out['description'][$i]=mysql_real_escape_string($out['description'][$i]);

$sql=("INSERT INTO `tablename` (`title`,`date`,`description`)VALUES('{$out['title'][$i]}','{$out['date'][$i]}','{$out['description'][$i]}');");

mysql_query($sql);

}
/* print_r($out);*/

?>
2. andrewkard - 27 Августа, 2015 - 15:41:22 - перейти к сообщению
lola_lola
Возможно проблема с кодировкой, проверьте перед вставкой, что передается:
PHP:
скопировать код в буфер обмена
  1.  
  2. echo ("INSERT INTO `tablename` (`title`,`date`,`description`)VALUES('{$out['title'][$i]}','{$out['date'][$i]}','{$out['description'][$i]}');")
  3.  

Кодировка таблиц, БД и полей лучше в utf8 что бы была. После соединения к БД передайте устанавливаемую кодировку
3. lola_lola - 27 Августа, 2015 - 15:54:01 - перейти к сообщению
andrewkard пишет:
lola_lola
Возможно проблема с кодировкой, проверьте перед вставкой, что передается:
PHP:
скопировать код в буфер обмена
  1.  
  2. echo ("INSERT INTO `tablename` (`title`,`date`,`description`)VALUES('{$out['title'][$i]}','{$out['date'][$i]}','{$out['description'][$i]}');")
  3.  

Кодировка таблиц, БД и полей лучше в utf8 что бы была. После соединения к БД передайте устанавливаемую кодировку


Установила изначально utf8 для базы и таблиц
4. andrewkard - 27 Августа, 2015 - 16:17:31 - перейти к сообщению
Что выводит? Все то что нужно:
PHP:
скопировать код в буфер обмена
  1.  
  2. echo ("INSERT INTO `tablename`...
  3.  
5. lola_lola - 27 Августа, 2015 - 16:59:11 - перейти к сообщению
Да, в echo отображает, что все парсится, но на деле в базе строка только до тире! Что странно.
6. Sail - 27 Августа, 2015 - 17:03:57 - перейти к сообщению
lola_lola пишет:
Да, в echo отображает все выводит, но в самой базе, как результат строки до тире!

Для начала возьмите то, что выводит и попробуйте выполнить в phpmyadmin.
7. lola_lola - 27 Августа, 2015 - 17:07:53 - перейти к сообщению
Я уже пробовала несколько раз! в phpmyadmin добавляет полную строку без проблем
8. andrewkard - 27 Августа, 2015 - 17:12:38 - перейти к сообщению
lola_lola пишет:
но на деле в базе строка только до тире!

в какой то конкретной колонке? или во всех
9. lola_lola - 27 Августа, 2015 - 17:22:30 - перейти к сообщению
ну с колонками title и date проблем нет, проблема возникает в description в строках, где символ тире)) и я не понимаю почему он так на него реагирует
(Добавление)
Всем спасибо, проблема решена
10. andrewkard - 27 Августа, 2015 - 17:37:59 - перейти к сообщению
lola_lola
Замените его или поставьте перед \

 

Powered by ExBB FM 1.0 RC1