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 :: Версия для печати :: Как записать картинки из переменной в phpQuery? [2]
Форумы портала PHP.SU » » Вопросы новичков » Как записать картинки из переменной в phpQuery?

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

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

$file = '/img/'. ++$i .'_img.jpg';
17. webdeveloperrr - 05 Июня, 2017 - 22:34:55 - перейти к сообщению
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
18. Строитель - 05 Июня, 2017 - 22:36:55 - перейти к сообщению
19. webdeveloperrr - 05 Июня, 2017 - 22:39:52 - перейти к сообщению
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упер спасибо! Все получилось!
20. Строитель - 05 Июня, 2017 - 22:52:27 - перейти к сообщению
webdeveloperrr пишет:
Cупер спасибо!
Не за что )
21. webdeveloperrr - 05 Июня, 2017 - 23:11:07 - перейти к сообщению
Строитель пишет:
webdeveloperrr пишет:
Cупер спасибо!
Не за что )



А если у меня далее вопрос как все еще сохранить в csv? Мне надо новую тему создавать?
22. Строитель - 05 Июня, 2017 - 23:41:05 - перейти к сообщению
webdeveloperrr пишет:
Мне надо новую тему создавать?
Думаю, не обязательно. На счёт записи в CSV-файл почитайте этот материал: http://php.net/manual/ru/function.fputcsv.php
23. webdeveloperrr - 05 Июня, 2017 - 23:53:15 - перейти к сообщению
Строитель пишет:
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
24. Строитель - 06 Июня, 2017 - 00:13:04 - перейти к сообщению
webdeveloperrr пишет:
две переменные $img и $text cохранить в csv
Сохранить их в массив, а потом этот массив в цикле записать в файл. Пример написать?
(Добавление)
Пример:
Спойлер (Отобразить)
25. webdeveloperrr - 06 Июня, 2017 - 01:09:12 - перейти к сообщению
Строитель пишет:
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 записывается поверх старых данных и заменяются все картинки снова с такими же именами
26. Строитель - 06 Июня, 2017 - 08:37:38 - перейти к сообщению
Parse error: syntax error, unexpected '[' - Это говорит о том, что версия пхп на вашем хосте не поддерживает сокращённый синтаксис объявления массивов. Надо или поднять версию пхп до 5.4, или записать объявления массивов по старому:

$text = array();

На счёт перезаписи - нужно пооперировать флагами в аргументе функции fopen(), вместо 'w' установите 'a', но кроме этого ещё понадобится проверка на одинаковые записи.
27. webdeveloperrr - 06 Июня, 2017 - 11:59:32 - перейти к сообщению
Строитель пишет:
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
флаги менял, результата нет
28. Строитель - 06 Июня, 2017 - 17:04:20 - перейти к сообщению
webdeveloperrr, как теперь выглядит ваш код?
29. webdeveloperrr - 06 Июня, 2017 - 20:39:58 - перейти к сообщению
Строитель пишет:
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 запись пошла все нормально. а картинки заменяют друг друга
30. Строитель - 06 Июня, 2017 - 21:01:57 - перейти к сообщению
webdeveloperrr пишет:
в СSV запись пошла все нормально. а картинки заменяют друг друга
Для картинок нужно изменить алгоритм определения имени. Счётчик, который я написал вчера, при каждом запуске скрипта стартует сначала, и так как картинка с именем 1_img.png уже была создана ранее, то при повторном запуске она перезаписывается.

Названия для картинок можно использовать "родные", можно генерировать какую-то уникальную строку, выбор за вами.

 

Powered by ExBB FM 1.0 RC1