привет! Проблема: Имеется скрипт "карусели" изображений. Изображения вызываются следующий кодом HTML: <a href="img/shots/1.jpg"><img src="img/shots/1.jpg" width="100" height="100"></A> Т.к. на сайте не имеется cms, то нужно вручную редактировать код, чтобы добавить изображение, а добавляем мы тот же код, меняя только имя скриншота. (неудобно, особенно человеку, который не знаком с html, да и знакомому с ним хотелось бы облегчить работу) Этим то и возможно воспользоваться для решения задачи. Цель: Упростить вывод изображений на сервер, не используя громоздкие коды Решение: Для того, чтобы добавлять один и тот же код, меняя всего одно значение воспользуемся циклом while на php Но, как узнать сколько раз вставлять этот один и тот же код, т.е. сколько картинок загружено в папку img? Воспользуемся следующим кодом, который опять же использует while: PHP: $dir = opendir('img/shots');/*Открываем директорию с изображениям*/$count = 0;/*Изначально значение кол-ва - 0 (для цикла while)*/while($file = readdir($dir)){/*Условие для цикла*/ if($file == '.' || $file == '..' || $file == 'watermark.png' || $file == 'watermark.php' ||$file == 'original.jpg' || is_dir('img/shots' . $file)){/*Исключаем из счёта те файлы, которые нам не нужны*/ continue; } $count++;/*Прибавляем к нулю один, и так пока цикл не выполнится то кол-во раз, сколько файлов обнаружено*/ Теперь мы имеем кол-во файлов в директории, исключая ненужные. Переменная count, выводит это кол-во. Используем эту переменную для следующего цикла, который будет вставлять на страницу код вывода изображения столько раз, сколько потребуется(это число определит переменная count) PHP: $i = 1; while($i <= $count) {/*Условие цикла, выполнять до тех пор, пока переменная i не будет меньше или равна переменной count*/ echo "<li> <A href=\"img/shots/$i.jpg\"><img src=\"img/shots/$i.jpg\" width=\"100\" height=\"100\"></A> </li>";/*Вывести код, обратите внимание на название изображения*/ $i++; /*Увеличить переменную i на один (была 1 стала 2, и цикл дальше повторяется, пока выполняется условие i <=count)*/ } $i - это название изображения, если в директории изображений будет 6, то цикл будет выводить этот код, пока $i не станет равным 6, таким образом цикл выведет 6 кодов с разным значением имени изображения. В связи с таким решением потребовалось ввести правило для загрузки изображения на сервер в директорию: При загрузке изображения, посмотрите какое имя имеет последнее загруженное изображение, имя должно соответствовать порядковому номеру, если изображений 6, то последнее загруженное изображение имеет имя 6.jpg, поэтому требуется присвоить имя 7.jpg изображению, которое Вы собираетесь загрузить на сервер в директорию. Тогда первый цикл проверит кол-во изображений в директории, поймёт, что их уже 7, и даст знать второму циклу, что нужно вывести код уже не 6 раз, а 7, с соответственным именем. Полный код: P.S. За помощью в настройке обращаться в скайп - beilec Скрипт не грамотен, но работает на ура. пока.
Блять ты уже достал свой говнокод лепить PHP: $dir = opendir('img/shots');$count = 0;while($file = readdir($dir)){ if($file == '.' || $file == '..' || $file == 'watermark.png' || $file == 'watermark.php' ||$file == 'original.jpg' || is_dir('img/shots' . $file)){ continue; } $count++;} $i = 1; while($i <= $count) { echo "<li> <A href=\"img/shots/$i.jpg\"><img src=\"img/shots/$i.jpg\" width=\"100\" height=\"100\"></A> </li>"; $i++; } Все конечно заебись - у тебя тут пара файлов и норм PHP: if($file == '.' || $file == '..' || $file == 'watermark.png' || $file == 'watermark.php' ||$file == 'original.jpg' || is_dir('img/shots' . $file)) А если у меня их 70? Не нужных? Ты про регулярки не слышал? PHP: while($i <= $count) Про цикл for тоже нет? вес. твой код можно было сократить до PHP: <?php$dir = opendir('img/shots');while($file = readdir($dir)){if(preg_match("([0-9]+\.jpg)",$file && !is_dir("img/shots/$file")) echo<<<HTML<li> <A href="img/shots/$file"><img src="img/shots/$file" width="100" height="100"></A></li>HTML;}
Чем так - пусть лучше в шару пока ничего не пишет. Те, кто учатся, будут думать, что это правильно и заранее привыкать к такому говнокоду
Ты не видел говнокод. 代码: if ( strlen( $string ) > 3 ) echo "Имя должно содержать не больше 3-х символов"; elseif ( strlen( $string ) < 3 ) echo "Имя должно содержать не менее 3-х символов"; else echo "Вы корректно ввели имя"
Пусть пишет, может найдутся более адекватные и менее озлобленные на жизнь критики. За мат в посте #2 - неделя воздержания. Не на долго у тебя хватило выдержки не оскорблять людей.
Все мои темы осмотрел, вот говнюк, и не поленился же. Хорошо, объясни мне, пожалуйста, почему мой код не будет работать? Как я понял из твоих сообщений мой код категорически не верен. И об этом тоже ссылка. А так же посмотри вот эту тему и расскажи об ошибках в ней ссылка
Кто сказал, что он не будет работать? Просто написан через жопу. Неудобен, не оптимизирован и не функционален. Я кажется все разжевал - если у меня в директории 100 лишних файлов, то сколько мне условий надо вписать?! Да и юзать while, когда можно for тоже смысла нет. Я тебе пример написал - там условие (Если не папка и принадлежит регулярному выражению Число.jpg то выводим) Вот тебе код, который выглядит намного лучше PHP: date_default_timezone_set('Europe/Moscow');$day= date(w);switch($day){ case 1: echo "Самый ужасный день"; break; case 5: echo "Лучший день на неделе"; break; default: echo "Не хороший день";} Ты доволен?
И еще - никогда не делай вот так c кучей \" PHP: echo "<li> <A href=\"img/shots/$i.jpg\"><img src=\"img/shots/$i.jpg\" width=\"100\" height=\"100\"></A> </li>";/*Вывести код, обратите внимание на название изображения*/ Для этого есть PHP: echo<<<HTML<li><a href="img/shots/$i.jpg"><img src="img/shots/$i.jpg" width="100" height="100"></a>/li>HTML;
Вы оба не правы) ' Одного за двойные ковычки отправить искать алмазы в горы на север, второго вообще отправить подметать ломом пол в армии. Алмазы на север искать, так как в любой строке с двойными ковычками пхп ищет спецсимволы и переменные, и я не про конкат посредине строки. И это также ресурсоёмко как искать алмазы в горах на сервере. Ломом подметать так как использовать хёр это ЕЩЁ Б.Ь хуже чем предыдущее. $a = 'Виталик'; echo 'Пишите правильно '.$a.'!)'; Еслиж у вас что-то большое то юзайте нативку или шаблонизатор
Впринципе строки $str = 'abc'; $str1 = "abc"; Практически одинаковые, но при интерпритации скрипта переменная $str это просто байты и всё, пхп записывает в переменную и всё. А вот в "abc" пхп будет проверять на наличие 1) \r \n \r \t \s итп. 2) на $[a-z0-9] 3) { и } так как это по синтаксису пхп возможные вставки в строку переменных, делается это функцией проверки вхождения в строку, и не важно на чём написан пхп, это всёравно цикл по байтам в строке как минимум. Так вот если строка не большая, то не беда, но если у вас строчка более нескольких десятков букв всётаки советаю одинарные ковычки.