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 :: Как записать картинки из переменной в phpQuery? [2]

 PHP.SU

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


 Страниц (4): « 1 [2] 3 4 »   

> Без описания
Строитель Модератор
Отправлено: 05 Июня, 2017 - 22:34:52
Post Id



Участник


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


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




webdeveloperrr пишет:
да, ссылка в базу идет но нельзя коментить file = file_get_contents($url);
Не понимаю, о каких комментах идёт речь?
webdeveloperrr пишет:
как мне прописать localhost/img? вариант $file = ++$i .'img/_img.jpg'; не проходит
Вы файлы в папку /img сохраняете? Тогда попробуйте так:

$file = '/img/'. ++$i .'_img.jpg';
 
 Top
webdeveloperrr
Отправлено: 05 Июня, 2017 - 22:34:55
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июнь 2017  


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




webdeveloperrr пишет:
Строитель пишет:
webdeveloperrr пишет:
Строитель пишет:
webdeveloperrr пишет:
надо чтобы в базу летело из localhost/img/
Предполагаю, что нужно заменить первый аргумент в строке запроса:

$result = mysql_query ("INSERT INTO page (img,name) VALUES ('$file', '$text')");

А что на счёт второго аргумента $text ? Этой переменной нет в предоставленном коде.

Я не внимателен Радость Пост отредактировал )


Заменил на VALUES ('$file', '$text')"); не помогает ссылка в базу летит старая.Думаю надо в file_put_content надо прописать путь localhost/img но не соображу как
А куда сохраняются изображения? В какую-то папку? Или рядом с этим php-скриптом, код которого его запускает?

По идее, если вы ничего не меняли в коде, то в переменной $file как раз и содержится ссылка на реальный файл (если не ошибаюсь, конечно)


да, ссылка в базу идет но нельзя коментить file = file_get_contents($url);

как мне прописать localhost/img? вариант $file = ++$i .'img/_img.jpg'; не проходит


cейчас в корень со скриптом пока и в базу соответственно без адреса летит типа 15_img.jpg

(Отредактировано автором: 05 Июня, 2017 - 22:35:49)

 
 Top
Строитель Модератор
Отправлено: 05 Июня, 2017 - 22:36:55
Post Id



Участник


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


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




 
 Top
webdeveloperrr
Отправлено: 05 Июня, 2017 - 22:39:52
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июнь 2017  


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




webdeveloperrr пишет:
webdeveloperrr пишет:
Строитель пишет:
webdeveloperrr пишет:
Строитель пишет:
webdeveloperrr пишет:
надо чтобы в базу летело из localhost/img/
Предполагаю, что нужно заменить первый аргумент в строке запроса:

$result = mysql_query ("INSERT INTO page (img,name) VALUES ('$file', '$text')");

А что на счёт второго аргумента $text ? Этой переменной нет в предоставленном коде.

Я не внимателен Радость Пост отредактировал )


Заменил на VALUES ('$file', '$text')"); не помогает ссылка в базу летит старая.Думаю надо в file_put_content надо прописать путь localhost/img но не соображу как
А куда сохраняются изображения? В какую-то папку? Или рядом с этим php-скриптом, код которого его запускает?

По идее, если вы ничего не меняли в коде, то в переменной $file как раз и содержится ссылка на реальный файл (если не ошибаюсь, конечно)


да, ссылка в базу идет но нельзя коментить file = file_get_contents($url);

как мне прописать localhost/img? вариант $file = ++$i .'img/_img.jpg'; не проходит


cейчас в корень со скриптом пока и в базу соответственно без адреса летит типа 15_img.jpg



Cупер спасибо! Все получилось!
 
 Top
Строитель Модератор
Отправлено: 05 Июня, 2017 - 22:52:27
Post Id



Участник


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


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




webdeveloperrr пишет:
Cупер спасибо!
Не за что )
 
 Top
webdeveloperrr
Отправлено: 05 Июня, 2017 - 23:11:07
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июнь 2017  


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




Строитель пишет:
webdeveloperrr пишет:
Cупер спасибо!
Не за что )



А если у меня далее вопрос как все еще сохранить в csv? Мне надо новую тему создавать?
 
 Top
Строитель Модератор
Отправлено: 05 Июня, 2017 - 23:41:05
Post Id



Участник


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


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




webdeveloperrr пишет:
Мне надо новую тему создавать?
Думаю, не обязательно. На счёт записи в CSV-файл почитайте этот материал: http://php.net/manual/ru/function.fputcsv.php
 
 Top
webdeveloperrr
Отправлено: 05 Июня, 2017 - 23:53:15
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июнь 2017  


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




Строитель пишет:
webdeveloperrr пишет:
Мне надо новую тему создавать?
Думаю, не обязательно. На счёт записи в CSV-файл почитайте этот материал: http://php.net/manual/ru/function.fputcsv.php

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  $file = 'img/'. ++$i .'_img.jpg';
  3.  
  4.     $fp = fopen('file.csv', 'w');
  5.  
  6.     foreach ($file,$img as $fields) {
  7.     fputcsv($fp, $fields);
  8.     }
  9.  
  10.     fclose($fp);
  11.  
  12.  
  13.  


Для меня здесь сложность в том как две переменные $img и $text cохранить в csv
 
 Top
Строитель Модератор
Отправлено: 06 Июня, 2017 - 00:13:04
Post Id



Участник


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


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




webdeveloperrr пишет:
две переменные $img и $text cохранить в csv
Сохранить их в массив, а потом этот массив в цикле записать в файл. Пример написать?
(Добавление)
Пример:
Спойлер (Отобразить)
 
 Top
webdeveloperrr
Отправлено: 06 Июня, 2017 - 01:09:12
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июнь 2017  


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




Строитель пишет:
webdeveloperrr пишет:
две переменные $img и $text cохранить в csv
Сохранить их в массив, а потом этот массив в цикле записать в файл. Пример написать?
(Добавление)
Пример:
Спойлер (Отобразить)



$texts = [];
Parse error: syntax error, unexpected '[' in Y:\home\localhost\www\pars\index.php on line 18
(Добавление)
webdeveloperrr пишет:
Строитель пишет:
webdeveloperrr пишет:
две переменные $img и $text cохранить в csv
Сохранить их в массив, а потом этот массив в цикле записать в файл. Пример написать?
(Добавление)
Пример:
Спойлер (Отобразить)



$texts = [];
Parse error: syntax error, unexpected '[' in Y:\home\localhost\www\pars\index.php on line 18



и еще проблема...после обновления url записывается поверх старых данных и заменяются все картинки снова с такими же именами
 
 Top
Строитель Модератор
Отправлено: 06 Июня, 2017 - 08:37:38
Post Id



Участник


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


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




Parse error: syntax error, unexpected '[' - Это говорит о том, что версия пхп на вашем хосте не поддерживает сокращённый синтаксис объявления массивов. Надо или поднять версию пхп до 5.4, или записать объявления массивов по старому:

$text = array();

На счёт перезаписи - нужно пооперировать флагами в аргументе функции fopen(), вместо 'w' установите 'a', но кроме этого ещё понадобится проверка на одинаковые записи.
 
 Top
webdeveloperrr
Отправлено: 06 Июня, 2017 - 11:59:32
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июнь 2017  


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




Строитель пишет:
Parse error: syntax error, unexpected '[' - Это говорит о том, что версия пхп на вашем хосте не поддерживает сокращённый синтаксис объявления массивов. Надо или поднять версию пхп до 5.4, или записать объявления массивов по старому:

$text = array();

На счёт перезаписи - нужно пооперировать флагами в аргументе функции fopen(), вместо 'w' установите 'a', но кроме этого ещё понадобится проверка на одинаковые записи.



php version 5.3.13
(Добавление)
webdeveloperrr пишет:
Строитель пишет:
Parse error: syntax error, unexpected '[' - Это говорит о том, что версия пхп на вашем хосте не поддерживает сокращённый синтаксис объявления массивов. Надо или поднять версию пхп до 5.4, или записать объявления массивов по старому:

$text = array();

На счёт перезаписи - нужно пооперировать флагами в аргументе функции fopen(), вместо 'w' установите 'a', но кроме этого ещё понадобится проверка на одинаковые записи.



php version 5.3.13
флаги менял, результата нет
 
 Top
Строитель Модератор
Отправлено: 06 Июня, 2017 - 17:04:20
Post Id



Участник


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


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




webdeveloperrr, как теперь выглядит ваш код?
 
 Top
webdeveloperrr
Отправлено: 06 Июня, 2017 - 20:39:58
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Июнь 2017  


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




Строитель пишет:
webdeveloperrr, как теперь выглядит ваш код?

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. <?php
  4. header('Content-type: text/html; charset=utf8');
  5. //header('Content-type: image/jpeg');
  6. require_once "curl/curl.php";
  7. require_once "phpquery/phpQuery/phpQuery.php";
  8. include('db.php');
  9.  
  10.  
  11. function print_arr($arr){
  12.  
  13.      echo '<pre>' . print_r($arr, true) . '</pre>';
  14.  
  15. }
  16.  
  17. $url = 'http://www.site.ru/news';
  18. $file = file_get_contents($url);
  19. $csv = 'file.csv'; // Название вашего CSV-файла
  20. $i = 0;            // Переменная-счётчик
  21. $texts = [];
  22. $files = [];
  23.  
  24. $doc = phpQuery::newDocument($file);
  25.  
  26. foreach ($doc->find('.articles-container .post-excerpt') as $article) {
  27.    $article = pq($article);
  28.  
  29.    $img = $article->find('.img-cont img')->attr('src');
  30.    $text = $article->find('.pd-cont')->html();
  31.  
  32.    $file = 'img/'. ++$i .'_img.jpg';
  33.  
  34.    $texts[] = $text;
  35.    $files[] = $file;
  36.    
  37.    $result = mysql_query ("INSERT INTO pars (img,name) VALUES ('$file', '$text')");
  38.    
  39.    if ($result == 'true') {
  40.        echo "<p>succes!</p>";
  41.    } else {
  42.        echo "<p>fall!</p>";
  43.    }
  44. }
  45.  
  46. $list = [
  47.    $texts,
  48.    $files
  49. ];
  50.  
  51. $fp = fopen($csv, 'a');
  52.  
  53. foreach ($list as $fields) {
  54.    fputcsv($fp, $fields, ';', '"');
  55. }
  56.  
  57. fclose($fp);
  58.        
  59.  
  60.  
  61.  
  62.  

(Добавление)
webdeveloperrr пишет:
Строитель пишет:
webdeveloperrr, как теперь выглядит ваш код?

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. <?php
  4. header('Content-type: text/html; charset=utf8');
  5. //header('Content-type: image/jpeg');
  6. require_once "curl/curl.php";
  7. require_once "phpquery/phpQuery/phpQuery.php";
  8. include('db.php');
  9.  
  10.  
  11. function print_arr($arr){
  12.  
  13.      echo '<pre>' . print_r($arr, true) . '</pre>';
  14.  
  15. }
  16.  
  17. $url = 'http://www.site.ru/news';
  18. $file = file_get_contents($url);
  19. $csv = 'file.csv'; // Название вашего CSV-файла
  20. $i = 0;            // Переменная-счётчик
  21. $texts = [];
  22. $files = [];
  23.  
  24. $doc = phpQuery::newDocument($file);
  25.  
  26. foreach ($doc->find('.articles-container .post-excerpt') as $article) {
  27.    $article = pq($article);
  28.  
  29.    $img = $article->find('.img-cont img')->attr('src');
  30.    $text = $article->find('.pd-cont')->html();
  31.  
  32.    $file = 'img/'. ++$i .'_img.jpg';
  33.  
  34.    $texts[] = $text;
  35.    $files[] = $file;
  36.    
  37.    $result = mysql_query ("INSERT INTO pars (img,name) VALUES ('$file', '$text')");
  38.    
  39.    if ($result == 'true') {
  40.        echo "<p>succes!</p>";
  41.    } else {
  42.        echo "<p>fall!</p>";
  43.    }
  44. }
  45.  
  46. $list = [
  47.    $texts,
  48.    $files
  49. ];
  50.  
  51. $fp = fopen($csv, 'a');
  52.  
  53. foreach ($list as $fields) {
  54.    fputcsv($fp, $fields, ';', '"');
  55. }
  56.  
  57. fclose($fp);
  58.        
  59.  
  60.  
  61.  
  62.  


Установил xampp php5.6
(Добавление)
в СSV запись пошла все нормально. а картинки заменяют друг друга

(Отредактировано автором: 06 Июня, 2017 - 20:40:39)

 
 Top
Строитель Модератор
Отправлено: 06 Июня, 2017 - 21:01:57
Post Id



Участник


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


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




webdeveloperrr пишет:
в СSV запись пошла все нормально. а картинки заменяют друг друга
Для картинок нужно изменить алгоритм определения имени. Счётчик, который я написал вчера, при каждом запуске скрипта стартует сначала, и так как картинка с именем 1_img.png уже была создана ранее, то при повторном запуске она перезаписывается.

Названия для картинок можно использовать "родные", можно генерировать какую-то уникальную строку, выбор за вами.
 
 Top
Страниц (4): « 1 [2] 3 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB