PHP.SU

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

Страниц (15): В начало « ... 4 5 6 7 [8] 9 10 11 12 ... » В конец

> Найдено сообщений: 224
Invert Отправлено: 14 Декабря, 2013 - 02:54:11 • Тема: кодировка выводимого файла • Форум: Вопросы новичков

Ответов: 10
Просмотров: 483
cherkas пишет:
почему не работает так:

Потому, что путь ошибочный. Других причин быть не может.
Invert Отправлено: 14 Декабря, 2013 - 02:50:31 • Тема: Уведомление на сторонний сайт • Форум: Вопросы новичков

Ответов: 19
Просмотров: 709
Не очень понимаю, почему нельзя просто дернуть урл скрипта и передать данные get-ом, всего раз, при установке. Какие-то формы, айфреймы )
Invert Отправлено: 13 Декабря, 2013 - 18:35:26 • Тема: Один материал, несколько категорий. • Форум: Вопросы новичков

Ответов: 8
Просмотров: 836
UPDATE вам поможет, это не сложно. Нужно прочитать, понять как использовать, попрактиковаться. Читайте о MySQL
Invert Отправлено: 13 Декабря, 2013 - 18:28:55 • Тема: Замучился уже, хелп • Форум: Вопросы новичков

Ответов: 4
Просмотров: 178
Магия!
Invert Отправлено: 13 Декабря, 2013 - 18:25:56 • Тема: file_exists • Форум: Вопросы новичков

Ответов: 10
Просмотров: 348
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $brand_name = $arResult[ 'PROPERTIES' ][ 'BRAND' ][ 'VALUE' ];
  4. if ( is_file( "/upload/brands/{$brand_name}.jpg" ) ) {
  5.     echo '<a href="#"><img src="/upload/brands/' . $brand_name . '.jpg"/></a>';
  6. } else {
  7.     echo $brand_name;
  8. }
  9. ?>
  10.  
Invert Отправлено: 13 Декабря, 2013 - 17:52:10 • Тема: Последовательный вывод пар button • Форум: Вопросы новичков

Ответов: 3
Просмотров: 176
Dardrin, делайте код проще, понятнее. У вас три вложенных цикла с кучей непонятных переменных, черт ногу сломит. Пусть будет в пять раз длиннее, но так, чтобы окинув строку глазом было сразу понятно, что в ней происходит. Сами себя запутываете.
А ошибка скорее всего в том, что вы запутались в переменных.
Invert Отправлено: 13 Декабря, 2013 - 15:50:15 • Тема: Скрипт генерации миниатюры с сохранением пропорции • Форум: Графика в PHP

Ответов: 2
Просмотров: 2361
На сайте, для которого писался скрипт, отключена возможность загрузки GIF-ок, да и прозрачные PNG там не используются.


(Добавление)

Обновленный, с учетом прозрачности.
Проверено на GIF и PNG.



PHP:
скопировать код в буфер обмена
  1.  
  2. function create_preview_image ( $original_path, $thumbnail_path, $x_thumbnail, $y_thumbnail ) {
  3.     $result = FALSE;
  4.     if ( is_file( $original_path ) && is_readable( $original_path )  ) {
  5.         // Определяем тип изображения
  6.         $image_data = getimagesize( $original_path );
  7.         if ( $image_data && isset( $image_data[ 'mime' ] ) ) {
  8.             $mime = strtolower(
  9.                 array_pop(
  10.                     explode( '/', $image_data[ 'mime' ] )
  11.                 )
  12.             );
  13.         } else {
  14.             $mime = 'jpeg';
  15.         }
  16.         // Открываем изображение
  17.         switch ( $mime ) {
  18.             case 'jpg':
  19.             case 'jpe':
  20.             case 'jpeg':
  21.                 $image_original = imagecreatefromjpeg( $original_path );
  22.                 break;
  23.             case 'png':
  24.                 $image_original = imagecreatefrompng( $original_path );
  25.                 break;
  26.             case 'gif':
  27.                 $image_original = imagecreatefromgif( $original_path );
  28.                 break;
  29.             case 'wbmp':
  30.                 $image_original = imagecreatefromwbmp( $original_path );
  31.                 break;
  32.             default:
  33.                 return FALSE;
  34.         }
  35.         // Получаем размеры оригинала
  36.         list( $x_original, $y_original ) = $image_data;
  37.         // Создаем миниатюру
  38.         $image_thumbnail = imagecreatetruecolor( $x_thumbnail, $y_thumbnail );
  39.         if ( $mime == 'png' ) {
  40.             // Сохраняем альфа-канал
  41.             imagealphablending( $image_thumbnail, FALSE );
  42.             imagesavealpha( $image_thumbnail, TRUE );
  43.         } elseif ( $mime == 'gif'  ) {
  44.             if ( ( $transparent_index_original = imagecolortransparent( $image_original ) ) ) {
  45.                 // Определяем прозрачный цвет и передаем его в миниатюру
  46.                 $transparent_color_original = imagecolorsforindex( $image_original, $transparent_index_original );
  47.                 $transparent_index_thumbnail = imagecolorallocate(
  48.                     $image_thumbnail,
  49.                     $transparent_color_original[ 'red' ],
  50.                     $transparent_color_original[ 'green' ],
  51.                     $transparent_color_original[ 'blue' ]
  52.                 );
  53.                 imagecolortransparent( $image_thumbnail, $transparent_index_thumbnail );
  54.                 imagefill( $image_thumbnail, 0, 0, $transparent_index_thumbnail );
  55.             }
  56.         }
  57.         // Вычисляем размер по ширине
  58.         $x_original_new = (integer) ( $x_thumbnail * ( $y_original / $y_thumbnail ) );
  59.         // Проверяем, не вышли ли за пределы изображения
  60.         if ( $x_original_new > $x_original ) {
  61.             // Вышли. Тогда вычисляем размер по высоте
  62.             $y_original_new = (integer) ( $y_original * ( $x_original / $x_original_new ) );
  63.             $x_original_new = $x_original;
  64.         } else {
  65.             $y_original_new = $y_original;
  66.         }
  67.         // Вычисляем срезы сторон
  68.         $x_indent = $x_original_new - $x_original;
  69.         $y_indent = $y_original_new - $y_original;
  70.         // Вычисляем смещение
  71.         $x_original_offset = ( $x_indent !== 0 ) ? -(integer) ( $x_indent / 2 ) : 0;
  72.         $y_original_offset = ( $y_indent !== 0 ) ? -(integer) ( $y_indent / 2 ) : 0;
  73.  
  74.         echo <<<HTML
  75.             <!-- Отладка, вывод данных и миниатюры -->
  76.             <span style="display: inline-block; float: left; border: 1px solid #eee; margin: 5px; padding: 5px; background: #eee;">
  77.  
  78.                 Thumbnail: {$x_thumbnail} x {$y_thumbnail}<br />
  79.                 Original: {$x_original} x {$y_original}                Cropped: {$x_original_new} x {$y_original_new}<br />
  80.                 Indent: {$x_indent} x {$y_indent}                Offset: {$x_original_offset} x {$y_original_offset}<br />
  81.                 <img src="/___/{$thumbnail_path}" />
  82.             </span>
  83. HTML;
  84.  
  85.         // Копируем изображение в миниатюру
  86.         imagecopyresampled( $image_thumbnail, $image_original, 0, 0, $x_original_offset, $y_original_offset, $x_thumbnail, $y_thumbnail, $x_original_new, $y_original_new );
  87.         // Сохраняем миниатюру
  88.         switch ( $mime ) {
  89.             case 'jpg':
  90.             case 'jpe':
  91.             case 'jpeg':
  92.                 $result = imagejpeg( $image_thumbnail, $thumbnail_path, 100 );
  93.                 break;
  94.             case 'png':
  95.                 $result = imagepng( $image_thumbnail, $thumbnail_path );
  96.                 break;
  97.             case 'gif':
  98.                 $result = imagegif( $image_thumbnail, $thumbnail_path );
  99.                 break;
  100.             case 'wbmp':
  101.                 $result = imagewbmp( $image_thumbnail, $thumbnail_path );
  102.                 break;
  103.         }
  104.         // Очищаем память
  105.         imagedestroy( $image_original );
  106.         imagedestroy( $image_thumbnail );
  107.     }
  108.     return $result;
  109. }
  110.  


PHP:
скопировать код в буфер обмена
  1.  
  2. create_preview_image( 'path/to/original.jpg', 'path/to/new/thumb.jpg', $x_thumb, $y_thumb );
  3.  
Invert Отправлено: 13 Декабря, 2013 - 14:14:01 • Тема: Скрипт генерации миниатюры с сохранением пропорции • Форум: Графика в PHP

Ответов: 2
Просмотров: 2361
Оставлю его здесь, а то с годами, возможно, потеряется.
Возможно кому-то будет полезен.

Скрипт создания миниатюр с центровкой и сохранением пропорции (отношением сторон).

Скриншот:


PHP:
скопировать код в буфер обмена
  1.  
  2. function create_image ( $filepath ) {
  3.     if ( is_file( $filepath ) && is_readable( $filepath ) ) {
  4.         $imagedata = getimagesize( $filepath );
  5.         if ( $imagedata && isset( $imagedata[ 'mime' ] ) ) {
  6.             $mime = array_pop(
  7.                 explode( '/', $imagedata[ 'mime' ] )
  8.             );
  9.         } else {
  10.             $mime = 'jpeg';
  11.         }
  12.         switch ( strtolower( $mime ) ) {
  13.             case 'jpg':
  14.             case 'jpe':
  15.             case 'jpeg':
  16.                 return imagecreatefromjpeg( $filepath );
  17.             case 'png':
  18.                 return imagecreatefrompng( $filepath );
  19.             case 'gif':
  20.                 return imagecreatefromgif( $filepath );
  21.             case 'wbmp':
  22.                 return imagecreatefromwbmp( $filepath );
  23.         }
  24.     }
  25.     return FALSE;
  26. }
  27.  
  28. function create_preview_image ( $original_path, $thumbnail_path, $x_thumbnail, $y_thumbnail ) {
  29.     $result = FALSE;
  30.     if ( is_file( $original_path ) && $image_original = create_image( $original_path ) ) {
  31.         // Получаем размеры оригинала
  32.         $x_original = imagesx( $image_original );
  33.         $y_original = imagesy( $image_original );
  34.         // Создаем миниатюру
  35.         $image_thumbnail = imagecreatetruecolor( $x_thumbnail, $y_thumbnail );
  36.         // Вычисляем размер по ширине
  37.         $x_original_new = (integer) ( $x_thumbnail * ( $y_original / $y_thumbnail ) );
  38.         // Проверяем, не вышли ли за пределы изображения
  39.         if ( $x_original_new > $x_original ) {
  40.             // Вышли. Тогда вычисляем размер по высоте
  41.             $y_original_new = (integer) ( $y_original * ( $x_original / $x_original_new ) );
  42.             $x_original_new = $x_original;
  43.         } else {
  44.             $y_original_new = $y_original;
  45.         }
  46.         // Вычисляем срезы сторон
  47.         $x_indent = $x_original_new - $x_original;
  48.         $y_indent = $y_original_new - $y_original;
  49.         // Вычисляем смещение
  50.         $x_original_offset = ( $x_indent !== 0 ) ? -(integer) ( $x_indent / 2 ) : 0;
  51.         $y_original_offset = ( $y_indent !== 0 ) ? -(integer) ( $y_indent / 2 ) : 0;
  52.  
  53.         echo <<<HTML
  54.             <!-- Отладка, вывод данных и миниатюры -->
  55.             <span style="display: inline-block; float: left; border: 1px solid #eee; margin: 5px; padding: 5px;">
  56.  
  57.                 Thumbnail: {$x_thumbnail} x {$y_thumbnail}<br />
  58.                 Original: {$x_original} x {$y_original}                Cropped: {$x_original_new} x {$y_original_new}<br />
  59.                 Indent: {$x_indent} x {$y_indent}                Offset: {$x_original_offset} x {$y_original_offset}<br />
  60.                 <img src="/___/{$thumbnail_path}" />
  61.             </span>
  62. HTML;
  63.  
  64.  
  65.         // Копируем изображение в миниатюру
  66.         imagecopyresampled( $image_thumbnail, $image_original, 0, 0, $x_original_offset, $y_original_offset, $x_thumbnail, $y_thumbnail, $x_original_new, $y_original_new );
  67.  
  68.         if ( imagejpeg( $image_thumbnail, $thumbnail_path, 100 ) ) {
  69.             $result = TRUE;
  70.         }
  71.         imagedestroy( $image_original );
  72.         imagedestroy( $image_thumbnail );
  73.     }
  74.     return $result;
  75. }
  76.  


PHP:
скопировать код в буфер обмена
  1.  
  2. $image_0 = '0.jpeg';
  3. $thumb_0 = '_' . $image_0;
  4.  
  5. $x_0 = 420;
  6. $y_0 = 146;
  7. $x_1 = 220;
  8. $y_1 = 146;
  9. $x_2 = 146;
  10. $y_2 = 146;
  11.  
  12. create_preview_image( $image_0, 1 . $thumb_0, $x_0, $y_0 );
  13. create_preview_image( $image_0, 3 . $thumb_0, $x_1, $y_1 );
  14. create_preview_image( $image_0, 5 . $thumb_0, $x_2, $y_2 );
  15. create_preview_image( $image_0, 4 . $thumb_0, $y_1, $x_1 );
  16. create_preview_image( $image_0, 2 . $thumb_0, $y_0, $x_0 );
Invert Отправлено: 04 Сентября, 2011 - 04:31:41 • Тема: Преобразование десятичного чила • Форум: Хранение данных, их вывод и обработка

Ответов: 5
Просмотров: 2029
И в обратную сторону:

PHP:
скопировать код в буфер обмена
  1. $symbols = array (
  2. '0' =>  1, '1' =>  2, '2' =>  3, '3' =>  4, '4' =>  5, '5' =>  6, '6' =>  7, '7' =>  8, '8' =>  9, '9' => 10, 'a' => 11, 'b' => 12, 'c' => 13, 'd' => 14, 'e' => 15, 'f' => 16, 'g' => 17, 'h' => 18, 'i' => 19, 'j' => 20, 'k' => 21, 'l' => 22, 'm' => 23, 'n' => 24, 'o' => 25, 'p' => 26, 'q' => 27, 'r' => 28, 's' => 29, 't' => 30, 'u' => 31, 'v' => 32, 'w' => 33, 'x' => 34, 'y' => 35, 'z' => 36, 'A' => 37, 'B' => 38, 'C' => 39, 'D' => 40, 'E' => 41, 'F' => 42, 'G' => 43, 'H' => 44, 'I' => 45, 'J' => 46, 'K' => 47, 'L' => 48, 'M' => 49, 'N' => 50, 'O' => 51, 'P' => 52, 'Q' => 53, 'R' => 54, 'S' => 55, 'T' => 56, 'U' => 57, 'V' => 58, 'W' => 59, 'X' => 60, 'Y' => 61, 'Z' => 62 );
  3.  
  4. $string = 'aB8';
  5. $symbols_count = count ( $symbols );
  6. $symbol_array = str_split ( $string );
  7. $symbol_array = array_reverse ( $symbol_array );
  8.  
  9. foreach ( $symbol_array as $exponent => $code ) {
  10.    $number = ( int ) ( $symbols [ $code ] );
  11.    $result += $number * pow ( $symbols_count, $exponent );
  12. }
  13.  
  14. echo $result;
Invert Отправлено: 03 Сентября, 2011 - 03:09:53 • Тема: Преобразование десятичного чила • Форум: Хранение данных, их вывод и обработка

Ответов: 5
Просмотров: 2029
Все, сделал.
Я еще никогда не наступал на такое кол-во граблей в настолько маленьком кусочке кода.

Протестировано на гигантских цифрах (10^15), можно использовать. Числа более 10^15 уже не обрабатываются, PHP "чихает".

Результат:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. 60 : X
  3. 61 : Y
  4. 62 : Z
  5. 63 : 00
  6. 64 : 01
  7. 65 : 02
  8. ...
  9. 3521681 : dL8i
  10. 3521682 : dL8j
  11. 3521683 : dL8k
  12. ...
  13. 3521614606208 : YYYYYYZ
  14. 3521614606209 : YYYYYZ0
  15. 3521614606210 : YYYYYZ1
  16. ...
  17. 1000000000000000 : 3yWxKD0Fv
  18. 1000000000000001 : 3yWxKD0Fw
  19. 1000000000000002 : 3yWxKD0Fx
  20.  


Код:
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $symbols = array ( 1 => '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' );
  4.  
  5. $symbols_count = count ( $symbols );
  6.  
  7. for ( $i = 55; $i <= 88; $i++ ) {
  8.  
  9.    $number = $i;
  10.    $result = '';
  11.  
  12.    while ( $number > 0 ) {
  13.  
  14.       $number = $number / $symbols_count;
  15.  
  16.       $integer = ( integer ) $number;
  17.  
  18.       $fraction = $number - $integer;
  19.  
  20.       $number = $integer;
  21.  
  22.       if ( $fraction !== 0 ) {
  23.  
  24.          $code = ( string ) ( round ( $fraction * $symbols_count ) );
  25.  
  26.       } else {
  27.  
  28.          $code = ( string ) $symbols_count;
  29.  
  30.          $number--;
  31.  
  32.       }
  33.  
  34.       $result .= $symbols[  $code ];
  35.  
  36.    }
  37.  
  38.    $result = strrev ( $result );
  39.  
  40.    echo $i . ' : ' . $result . '<br>';
  41.  
  42. }
  43.  
  44.  
Invert Отправлено: 01 Сентября, 2011 - 21:02:00 • Тема: Преобразование десятичного чила • Форум: Хранение данных, их вывод и обработка

Ответов: 5
Просмотров: 2029
Champion пишет:
Это ж обычный перевод из одной с.с. в другую.

Спасибо, именно так. В метро сидел и все сразу стало понятно.
С утра что-то голова не могла думать, в трех строчках кода путался.
Invert Отправлено: 01 Сентября, 2011 - 17:21:21 • Тема: Преобразование десятичного чила • Форум: Хранение данных, их вывод и обработка

Ответов: 5
Просмотров: 2029
Здравствуйте.
Не могли бы вы мне помочь в преобразовании десятичного числа?

Задача: Уменьшить кол-во знаков в числе используя символы для использования в строке УРЛ.
Ка пример преобразование DEC -> HEX, только в моем случае "цифр" не 16, а 62.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $symbols = array ( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' );
  3.  


Для сравнения, пятизначное число имеет кол-во комбинаций:
В десятичной - 10^5 = 100.000 с нулевым значением ( от 0 до 99.999 )
В хексе - 16^5 = 1.048.576
В нашей системе - 916.132.832

Как видите преимущество на лицо, только с реализацией уже запутался.

Могли бы вы помочь мне в решении задачи или скинуть ссылку на материал, способный мне помочь?
Invert Отправлено: 26 Июня, 2011 - 13:46:09 • Тема: PHP • Форум: Прочее

Ответов: 21
Просмотров: 141
Мне кажется, что ТС должен сперва понять, для чего нужно PHP и какие задачи он решает.
Вторым нужно понять, с помощью каких инструментов и как именно это делается.



Потом: Ставите себе задачу - реализовать нечто. Строите схему или структуру этого скрипта, и создаете по блокам.
Все просто, никаких сверхмозгов не требуется. Нужно просто понять, что нужно сделать.
Invert Отправлено: 26 Июня, 2011 - 13:42:10 • Тема: PHP скрипт: "Последний раз вы были тут..." • Форум: Напишите за меня, пожалуйста

Ответов: 16
Просмотров: 169
Половину работы будет готово, когда вы составите правильную блок-схему, т.е. механизм работы скрипта.
Invert Отправлено: 26 Июня, 2011 - 13:38:42 • Тема: помогите решить задачку пожалуйста в условиях if else • Форум: Напишите за меня, пожалуйста

Ответов: 6
Просмотров: 57
Дабы не мудрить можно использовать switch-case

Страниц (15): В начало « ... 4 5 6 7 [8] 9 10 11 12 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB