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]   

> Без описания
lola_lola
Отправлено: 27 Августа, 2015 - 14:18:04
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2015  


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




Добрый день. Пытаюсь делать тестовое задание, чтобы устроиться на работу. Второй день не могу понять и решить проблему. В базу строка добавляется только до знака тире, а потом обрывается. Есть делать запрос в 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);*/

?>
 
 Top
andrewkard
Отправлено: 27 Августа, 2015 - 15:41:22
Post Id


Участник


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


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




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

Кодировка таблиц, БД и полей лучше в utf8 что бы была. После соединения к БД передайте устанавливаемую кодировку
 
 Top
lola_lola
Отправлено: 27 Августа, 2015 - 15:54:01
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2015  


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




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 для базы и таблиц
 
 Top
andrewkard
Отправлено: 27 Августа, 2015 - 16:17:31
Post Id


Участник


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


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




Что выводит? Все то что нужно:
PHP:
скопировать код в буфер обмена
  1.  
  2. echo ("INSERT INTO `tablename`...
  3.  
 
 Top
lola_lola
Отправлено: 27 Августа, 2015 - 16:59:11
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2015  


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




Да, в echo отображает, что все парсится, но на деле в базе строка только до тире! Что странно.

(Отредактировано автором: 27 Августа, 2015 - 17:02:44)

 
 Top
Sail
Отправлено: 27 Августа, 2015 - 17:03:57
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


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




lola_lola пишет:
Да, в echo отображает все выводит, но в самой базе, как результат строки до тире!

Для начала возьмите то, что выводит и попробуйте выполнить в phpmyadmin.
 
 Top
lola_lola
Отправлено: 27 Августа, 2015 - 17:07:53
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2015  


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




Я уже пробовала несколько раз! в phpmyadmin добавляет полную строку без проблем
 
 Top
andrewkard
Отправлено: 27 Августа, 2015 - 17:12:38
Post Id


Участник


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


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




lola_lola пишет:
но на деле в базе строка только до тире!

в какой то конкретной колонке? или во всех
 
 Top
lola_lola
Отправлено: 27 Августа, 2015 - 17:22:30
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2015  


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




ну с колонками title и date проблем нет, проблема возникает в description в строках, где символ тире)) и я не понимаю почему он так на него реагирует
(Добавление)
Всем спасибо, проблема решена
 
 Top
andrewkard
Отправлено: 27 Августа, 2015 - 17:37:59
Post Id


Участник


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


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




lola_lola
Замените его или поставьте перед \
 
 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