Enigma_man
Здравствуйте, я в php вроде как не «бум-бум», но слепил что то вроде того:
PHP:
<?php $file3d = »; // переменная для цикла с HTML $ext_3d=»; $title_3d=»; $dir3d = ‘3d’; $fileico = »; // переменная для цикла с HTML $ext_ico=»; $title_ico=»; $dirico=‘ico’; $i=1; $ii=0; $iter3d = new FilesystemIterator($dir3d, FilesystemIterator::KEY_AS_FILENAME); $iterico = new FilesystemIterator($dirico,FilesystemIterator::KEY_AS_FILENAME); //—————————————————————————————- //————цикл для картинок——————————————————- foreach($iterico as $filePathico): $infileico = $iterico; $ar_title_ico[] = $filePathico; endforeach; //———— массив картинов в строку ——————— //$fileico_ar = $ar_title_ico; echo «<br>»; echo «<br>»; //————цикл для 3d——————————————————- foreach($iter3d as $filePath3d): $infile3d = $iter3d; $ar_title_3d[] = $filePath3d; endforeach; //———— массив 3d в строку ——————— //————-тестовый вывод———— /* echo»$fileico»; echo»<br>»; echo»$file3d»; echo»<br>»; */ //—————————————————- $file3d = $newArr3d[$i]; $fileico = $newArrIco[$i]; echo ‘<div id=»div’.$title_3d.‘» class=»white-popup mfp-hide»> <canvas id=»‘.$title_3d.‘» class=»can3d» > </canvas> </div> <div class=»col-md-4 col-sm-6″> <div class=»box-work»> <div class=»work-preview»> <a href=»#div’.$title_3d.‘» title=»‘.$title_ico.‘» class=»open-popup-link»><img src=»‘.$dirico.«https://php.ru/».$fileico.‘» class=»imgsmall» alt=»»></a> <div class=»hover»> <div class=»link-btns»> <a href=»#div’.$title_3d.‘» title=»‘.$title_ico.‘» class=»open-popup-link»><i class=»fa fa-search-plus»></i></a> </div> </div> </div> </div> </div> ‘; $i++; $ii++; endwhile; ?>код работает отлично на win10 Open Server 5.3.8 и если грузит на хостинг с linux, то стоит поменять
PHP:
и
PHP:
на
PHP:
и
PHP:
соответственно.
Начал писать пост как раз таки по проблеме того что на хостинге почему-то не работает, но пока оформлял тему, сам заметил данную проблему.PS: вопрос к специалистам, по содержанию кода. Можно ли его как то упростить?
И как много косяков я допустил? Делал так чтобы код прежде всего работал.
Время потраченное на написание вместе с изучение заняло 3 недели!!!
Drunkenmunky
Попробуйте описать что делает ваш скрипт своими словами.
Если нужно вывести изображения из какой-то конкретной директории, то зачем вы там что-то разбиваете и т.д.
don.bidon
Пардон, анализировать код ломы, хардкодный прямой и обратный слэши замените на константу DIRECTORY_SEPARATOR
Хотя действительно непонятно, зачем там такие извращения.
Enigma_man
замена на константу — учтем, Спасибо
Мне нужно было сделать галерею со скриншотами 3d моделей, и уже последующий показ самой 3d модели в сплывающем окне, при размере скриншота 200кб и размер модели 15-25мб, логично не выпихивать все модели на странице, иначе пользователь не дождется загрузки.
Извращения в коде, из за того что я не знаю как токовой php, а explode в моем случае удаляет путь к файлу оставляя только его имя и расширение. Из примера обычной галереи из папки лепил. Сначала делал с использованием openDir, потом по мере ковыряний нашел SPL, как то он мне больше понравился.У меня применяется js с выводом в canvas 3D модели *.iv3d.
на примере этого же кода php в <head> образуется:Код (Javascript):
<script type=«text/javascript»> var view3d; function ivCommonInit3d() {var canvas=document.getElementById(«bark1»); canvas.width = window.innerWidth; canvas.height = window.innerHeight; view3d=new iv.window({canvas:canvas,file:«3d/bark1.iv3d»,color:0x777777}); var canvas=document.getElementById(«rol_boston2»); canvas.width = window.innerWidth; canvas.height = window.innerHeight; view3d=new iv.window({canvas:canvas,file:«3d/rol_boston2.iv3d»,color:0x777777}); } window.onresize = function(){view3d.setViewSize(window.innerWidth,window.innerHeight);} </script>а в <body> образуется:
HTML:
Drunkenmunky
Создайте список путей к директориям со скриншотами, например в текстовом файле или базе данных присвоив им уникальный ID.
И извлекайте их по ID передавая в GET в виде числа.
Так же можно поступить и с самими скринами. Хотя не обязательно — список файлов в директории можно получать с помощью glob() в массив, разбивая его на части для постраничной навигации.
Enigma_man
много страниц не требуется. Я планирую показывать только свои работы. По этому я решил изначально отказаться от идеи с базой данных, да и + ко всему, это еще недели 3 на изучение вопроса работы с базой данных!!!
зы: как я могу изменить тему чтобы добавить описание?
Drunkenmunky
Она вовсе не обязательна.
Текстовый файл, массив в переменной и т.д.
Enigma_man
А интересно при множественных запросах, как массив работает? Это динамический элемент для каждого запроса свой, или же он генерируется в структуре страницы на сервере?
И кстати собственно так и происходит. у меня генерируется массив с картинками, и массив с моделями, счетчик считает количество элементов массива и проводит итерации цикла while. Картинки выводятся в виде «превью» иконки, а модель открывается при вызове canvas хранящемся в скрытом div’е. Если конечно захотеть, можно сделать и генерацию отдельно страниц при превышении например 9 элементов. И добавить кнопку для пользователя — сколько элементов ему выводить. и т. д но это уже отдельный вопрос. если кому то надо — пусть делает. Я же выложил свой код на обзор и оценки, ну и соответственно идеи Ваши могут кого то навести на мысль.
Drunkenmunky
Ну, если работает, то оценка «удовлетворительно».
Слегка растянуто.
Поэтому кто-то вникать особо не будет. Так как эту задачу можно решить в несколько строк.
Enigma_man
Спасибо!!!
Хотелось бы увидеть по возможности эти несколько строк!!! Для самообразования!!!
Drunkenmunky
PHP:
miketomlin
https://gency.ru/g-drive-dbe-3
https://gency.ru/comment/127
https://gency.ru/comment/130P.S. Если работ не много, пагинация не нужна. Вместо всплывающих окон можно использовать отдельные страницы. Скрипт сам выберет данные из БД для них. Обращаетесь к полям, как показано тут: https://gency.ru/comment/125
Enigma_man
За это спасибо большое. почитаю, изучу!!!
— Добавлено —Для меня это будет вообще удобно. Так как я смогу сделать к примеру более подробное описание работы. Неже ли просто галерею.
Спасибо!!!
don.bidon
https://www.php.net/manual/ru/function.basename.php
Enigma_man
Для меня это будет вообще удобно. Так как я смогу сделать к примеру более подробное описание работы
Да так собственно и пытался сделать, но почему то при выходе из цикла var_damp выводил объект с лишней инфой.
Я ж говорю. я 3 недели как изучаю php, и только из за того что нужно было вот такое вот получить!!!