<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414758&amp;view=findpost&amp;p=3797958</guid>
        <pubDate>Sat, 04 May 2019 18:14:54 +0000</pubDate>
        <title>Не передаются значения из одной функции в другую</title>
        <link>https://forum.sources.ru/index.php?showtopic=414758&amp;view=findpost&amp;p=3797958</link>
        <description><![CDATA[D-G: Частично решил вопрос. Добавил перебор после сбора картинок в массив и добавил две переменные. Счетчик работает от любой из них. Вот что добавил:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">foreach ($matchV as $key=&#62;$MMM)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $parth_on[]=$MMM;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $pic_on[] =&#39;&#60;img src=&quot;&#39;.$MMM.&#39;&quot; width=&quot;100%&quot; height=&quot;100%&quot; &#62;&#39;; &nbsp;// echo $matchV;echo &#39;&#60;br&#62;&#39;; // делаем превью &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
Ну а в форме сделал так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;echo &quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;&#60;input type=\&quot;radio\&quot; name=\&quot;b[]\&quot; value=\&quot;$parth_on[$i]\&quot; /&#62;</div><div class="code_line">&#60;div style=\&quot;display:grid; grid-template-columns:80% 20%; \&quot;&#62;</div><div class="code_line">&#60;div style=\&quot; grid-column: 1 / 1;\&quot;&#62;$parth_on[$i]&#60;/div&#62;</div><div class="code_line">&#60;div style=\&quot;grid-column: 2 / 2;\&quot;&#62;$pic_on[$i]&#60;/div&#62;&#60;/div&#62;&#60;br&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;&quot;;</div></ol></div></div></div></div><br>
Но остался вопрос о том, как убрать предупреждение, пока не вызвана функция сканирования. Ну и хотелось бы оценки оформления, да и вообще критики кода. Может где-то ещё можно упростить. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-05-04T21:46:58+03:00">04.05.19, 18:46</time></span></span><br>
))))<br>
Решил и проблему с предупреждением, может не правильно и не красиво, но работает ))) Просто поставил вызов функции в зависимость от нажатия кнопки. Боялся, что будет конфликтовать или не успевать, но все хорошо. 9Гб отсканировало меньше чем за секунду, вроде бы моментально. Теперь код выглядит вот так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&#60;head&#62;</div><div class="code_line">&#60;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&#62;</div><div class="code_line">&#60;/head&#62;</div><div class="code_line">&#60;?php </div><div class="code_line">// Вызов функции обработки результатов сканирования</div><div class="code_line">if (isset($_POST[&#39;find_all_pic&#39;]))</div><div class="code_line">{find_all_pic(&#39;.&#39;);}</div><div class="code_line">?&#62;</div><div class="code_line">&#60;!--- Кнопка для сканирования ---&#62;</div><div class="code_line">&#60;form method=&quot;post&quot;&#62;</div><div class="code_line">&#60;input name=&quot;find_all_pic&quot; type=&quot;submit&quot; value=&quot;Сканировать картинки в корневой папке&quot;&#62;</div><div class="code_line">&#60;/form&#62;</div><div class="code_line">&#60;!--- Форма списка,куда должны передаваться результаты для дальнейшего выбора &nbsp;---&#62;</div><div class="code_line">&#60;form action=&quot;scan.php&quot; method=&quot;post&quot;&#62;</div><div class="code_line">&#60;div style=&quot;width:50%; height:100px; overflow:auto; border:solid 1px #C3E4FE;&quot;&#62;</div><div class="code_line">&#60;?php if (isset($_POST[&#39;find_all_pic&#39;]))</div><div class="code_line">{add_fields();} ?&#62; &nbsp;&#60;!--- Вызов функции для добавления строк с проверкой нажатия кнопки ---&#62;</div><div class="code_line">&#60;/div&#62;</div><div class="code_line">&nbsp;&#60;input type=&quot;submit&quot; name=&quot;formSubmit&quot; value=&quot;Выполнить&quot;&#62;</div><div class="code_line">&#60;/form&#62;</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&#60;?php</div><div class="code_line">// Функция добавления строк в список</div><div class="code_line">function add_fields()</div><div class="code_line">&nbsp;&nbsp; {</div><div class="code_line">global $matchV; global $pic_on; global $parth_on;</div><div class="code_line">&nbsp;&nbsp; for ($i=0; $i&#60;count($parth_on); $i++) &nbsp;// по идее доолжна была проверять количество строк (элементов массива и быть счетчиком)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;echo &quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;&#60;input type=\&quot;radio\&quot; name=\&quot;b[]\&quot; value=\&quot;$parth_on[$i]\&quot; /&#62;</div><div class="code_line">&#60;div style=\&quot;display:grid; grid-template-columns:80% 20%; \&quot;&#62;</div><div class="code_line">&#60;div style=\&quot; grid-column: 1 / 1;\&quot;&#62;$parth_on[$i]&#60;/div&#62;</div><div class="code_line">&#60;div style=\&quot;grid-column: 2 / 2;\&quot;&#62;$pic_on[$i]&#60;/div&#62;&#60;/div&#62;&#60;br&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;} </div><div class="code_line">&nbsp;&nbsp; }</div><div class="code_line">// Функция сканирования картинок</div><div class="code_line">function find_all_pic($dir)</div><div class="code_line">&nbsp;&nbsp; {</div><div class="code_line">global $matchV; global $pic_on; global $parth_on;</div><div class="code_line">&nbsp;&nbsp; &nbsp;$root = scandir($dir);</div><div class="code_line">&nbsp;&nbsp; &nbsp;foreach($root as $value) // перебираем</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if($value === &#39;.&#39; || $value === &#39;..&#39;) {continue;} // пропускаем</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if(is_dir($dir.&#39;/&#39;.$value)) &nbsp;find_all_pic($dir.&#39;/&#39;.$value); // если директория, то продолжаем сканировать</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if(is_dir($dir.&#39;/&#39;.$value)) {continue;} // пропускаем</div><div class="code_line">&nbsp;else if (preg_match_all(&quot;/^.*\.(jpg|jpeg|png|gif)$/i&quot;,$dir.&#39;/&#39;.$value,$match, PREG_PATTERN_ORDER )) // выбираем все картинки </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $matchV=array_values($match[0]); // собираем картинки в массив</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach ($matchV as $key=&#62;$MMM) </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $parth_on[]=$MMM; &nbsp;// делаю пути</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $pic_on[] =&#39;&#60;img src=&quot;&#39;.$MMM.&#39;&quot; width=&quot;100%&quot; height=&quot;100%&quot; &#62;&#39;; // делаем превью</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; } &nbsp;</div><div class="code_line">?&#62;</div></ol></div></div></div></div><br>
Остался вопрос критики и замечаний.]]></description>
        <author>D-G</author>
        <category>PHP</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414758&amp;view=findpost&amp;p=3797949</guid>
        <pubDate>Sat, 04 May 2019 16:20:36 +0000</pubDate>
        <title>Не передаются значения из одной функции в другую</title>
        <link>https://forum.sources.ru/index.php?showtopic=414758&amp;view=findpost&amp;p=3797949</link>
        <description><![CDATA[D-G: Написал функцию сканирования каталогов и выбора только картинок с превью. Сама по себе работает хорошо, для её вызова написал кнопку. Написал форму списка, куда хотел передавать результаты сканирования вместе с превью. Но строки не добавляются, пишет, что число строк не должно быть пустым. Когда кнопка не нажата, такое предупреждение понятно, хотя пока не придумал как с ним бороться, но это второй вопрос. В первую очередь хочется передать результаты сканирования. Причем пока не делал выборку картинок, все результаты передавались, строки добавлялись, естественно превью работало только на картинках, на других файлах был пустой квадратик, который по идее можно заменить типичной картинкой под формат файла. Но хочется не валить все в кучу, а делать выборку по типам файлов. Вот код (называется scan.php он же прописан в форме, чтоб не мудрствовать):<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&#60;head&#62;</div><div class="code_line">&#60;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&#62;</div><div class="code_line">&#60;/head&#62;</div><div class="code_line">&#60;?php </div><div class="code_line">// Вызов функции обработки результатов сканирования</div><div class="code_line">if (isset($_POST[&#39;find_all_pic&#39;]))</div><div class="code_line">{find_all_pic(&#39;.&#39;);}</div><div class="code_line">?&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">&#60;!--- Кнопка для сканирования ---&#62;</div><div class="code_line">&#60;form method=&quot;post&quot;&#62;</div><div class="code_line">&#60;input name=&quot;find_all_pic&quot; type=&quot;submit&quot; value=&quot;Сканировать картинки в корневой папке&quot;&#62;</div><div class="code_line">&#60;/form&#62;</div><div class="code_line">&#60;!--- Форма списка,куда должны передаваться результаты для дальнейшего выбора &nbsp;---&#62;</div><div class="code_line">&#60;form action=&quot;scan.php&quot; method=&quot;post&quot;&#62;</div><div class="code_line">&#60;div style=&quot;width:50%; height:100px; overflow:auto; border:solid 1px #C3E4FE;&quot;&#62;</div><div class="code_line">&#60;?php add_fields(); ?&#62; &nbsp;&#60;!--- Вызов функции для добавления строк ---&#62;</div><div class="code_line">&#60;/div&#62;</div><div class="code_line">&nbsp;&#60;input type=&quot;submit&quot; name=&quot;formSubmit&quot; value=&quot;Выполнить&quot;&#62;</div><div class="code_line">&#60;/form&#62;</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&#60;?php</div><div class="code_line">// Функция добавления строк в список</div><div class="code_line">function add_fields()</div><div class="code_line">&nbsp;&nbsp; {</div><div class="code_line">global $matchV;</div><div class="code_line">&nbsp;&nbsp; for ($i=0; $i&#60;count($matchV); $i++) &nbsp;// по идее должна была проверять количество строк (єелементов массива и быть счетчиком)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;echo &quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;&#60;input type=\&quot;radio\&quot; name=\&quot;b[]\&quot; value=\&quot;$matchV[$i]\&quot; /&#62;</div><div class="code_line">&#60;div style=\&quot;display:grid; grid-template-columns:90% 10%; \&quot;&#62;</div><div class="code_line">&#60;div style=\&quot; grid-column: 1 / 1;\&quot;&#62;$matchV[$i]&#60;/div&#62;</div><div class="code_line">&#60;div style=\&quot;grid-column: 2 / 2;\&quot;&#62;$matchV[$i]&#60;/div&#62;&#60;/div&#62;&#60;br&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;} </div><div class="code_line">&nbsp;&nbsp; }</div><div class="code_line">// Функция сканирования картинок</div><div class="code_line">function find_all_pic($dir)</div><div class="code_line">&nbsp;&nbsp; {</div><div class="code_line">global $matchV;</div><div class="code_line">&nbsp;&nbsp; &nbsp;$root = scandir($dir);</div><div class="code_line">&nbsp;&nbsp; &nbsp;foreach($root as $value) // перебираем</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if($value === &#39;.&#39; || $value === &#39;..&#39;) {continue;} // пропускаем</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if(is_dir($dir.&#39;/&#39;.$value)) &nbsp;find_all_pic($dir.&#39;/&#39;.$value); // если директория, то продолжаем сканировать</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if(is_dir($dir.&#39;/&#39;.$value)) {continue;} // пропускаем</div><div class="code_line">&nbsp;else if (preg_match_all(&quot;/^.*\.(jpg|jpeg|png|gif)$/i&quot;,$dir.&#39;/&#39;.$value,$match, PREG_PATTERN_ORDER )) // выбираем все картинки </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $matchV=array_values($match[0]); // собираем картинки в массив</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // print_r($matchV[0]); echo &#39;&#60;br&#62;&#39;; // это можно раскоментировать и проверить массив</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo $matchV[0];echo &#39;&#60;br&#62;&#39;; // чисто проверяем результат, можно закоментировать</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$matchV =&#39;&#60;img src=&quot;&#39;.$matchV[0].&#39;&quot; width=&quot;10%&quot; height=&quot;10%&quot; &#62;&#39;; &nbsp;echo $matchV;echo &#39;&#60;br&#62;&#39;; // делаем превью</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; } &nbsp;</div><div class="code_line">?&#62;</div></ol></div></div></div></div><br>
Тут сразу весь файл с включенной поддержкой ютф-8. Ещё просьба высказаться по поводу оформления: правильно ли разбил на блоки php и html? Может ещё какие-то замечания по оформлению будут. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-05-04T16:25:15+00:00">04.05.19, 16:25</time></span></span><br>
Да, при передаче значений выдает вот такое предупреждение:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Warning: count(): Parameter must be an array or an object that implements Countable</div></ol></div></div></div></div>]]></description>
        <author>D-G</author>
        <category>PHP</category>
      </item>
	
      </channel>
      </rss>
	