Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 23.05.2013
Сообщений: 5

Выбор миниатюры при создании публикации

28.05.2013, 02:31. Показов 1229. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Имеется форма для добавления публикации:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<form name="add-prog" method="post" action="addo.php" enctype="multipart/form-data">
<p> 
    <label>Категория:<br>
        <select name="cat" id="cat" size="0">
            <option value='7'>Статьи | Интересное</option>
            <option value='8'>Статьи | Юмор</option>
            <option value='9'>Статьи | Жесть</option>
            <option value='1'>Программы | Безопасность</option>
            <option value='2'>Программы | Графика/Дизайн</option>
            <option value='3'>Программы | Мультимедия</option>
            <option value='4'>Программы | Интернет</option>
            <option value='5'>Программы | Оптимизация</option>
            <option value='6'>Программы | Другие</option>
        </select> 
    </label>
</p>
    <p>
    <label>Миниатюра:<br>
        <input type="FILE" name="fupload"> 
    </label>
    </p>
    <p>
    <label>Заголовок:<br>
        <input type="text" name="title" id="title"> 
    </label>
    </p>
    <p>
    <label>
        <input type="hidden" name="meta_d" id="meta_d">
    </label>
    </p>
    <p>
    <label>Ключевые слова:<br>
        <input type="text" name="meta_k" id="meta_k" cols="40" rows="5">
    </label>
    </p>
    <p>
    <label>Краткое описание:<br>
        <textarea name="description" id="description" cols="40" rows="5"></textarea>
    </label>
    </p>
         <p>
           <label>Полный текст:<br>
           <textarea name="text" id="text" cols="84" rows="40"></textarea>
           </label>
         </p>
         <p>
           <label>
           <input type="hidden" name="date" id="date" value="$date"></textarea>
           </label>
         </p>
           <input type="hidden" name="author" id="author" value="$myrow[login]">
         <p>
           <label>
           <input type="submit" name="submit" id="submit" value="Добавить">
           </label>
         </p>
</form>

Обработчик:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php session_start(); include ("blocks/db.php");
 
//Проверяем, отправил ли пользователь изображение
if (!empty($_POST['fupload'])) $fupload = trim($_POST['fupload']);
//Если не отправлена изображение, ставин стандартную.
if (!isset($fupload) || empty($fupload) || $fupload == '') $avatar = "avatars/net-avatara.jpg";
//Иначе - загружаем изображение пользователя
else {
    //Папка, куда будет загружаться начальная картинка и ее сжатая копия.
    $path_to_90_directory = 'avatars/';
    //Проверка формата исходного изображения 
    if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name'])) {
    $filename = $_FILES['fupload']['name'];
    $source = $_FILES['fupload']['tmp_name'];   
    $target = $path_to_90_directory . $filename;
    move_uploaded_file($source, $target);//загрузка оригинала в папку $path_to_90_directory
 
    if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
    $im = imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    }
    if(preg_match('/[.](PNG)|(png)$/', $filename)) {
    $im = imagecreatefrompng($path_to_90_directory.$filename) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    }
    
    if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
        $im = imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    }
    
//СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ ВЗЯТО С САЙТА www.codenet.ru
 
// Создание квадрата 90x90
// dest - результирующее изображение 
// w - ширина изображения 
// ratio - коэффициент пропорциональности 
 
$w = 75;  // квадратная 90x90. Можно поставить и другой размер.
 
// создаём исходное изображение на основе 
// исходного файла и определяем его размеры 
$w_src = imagesx($im); //вычисляем ширину
$h_src = imagesy($im); //вычисляем высоту изображения
 
         // создаём пустую квадратную картинку 
         // важно именно truecolor!, иначе будем иметь 8-битный результат 
         $dest = imagecreatetruecolor($w,$w); 
 
         // вырезаем квадратную серединку по x, если фото горизонтальное 
         if ($w_src>$h_src) 
         imagecopyresampled($dest, $im, 0, 0,
                          round((max($w_src,$h_src)-min($w_src,$h_src))/2),
                          0, $w, $w, min($w_src,$h_src), min($w_src,$h_src)); 
 
         // вырезаем квадратную верхушку по y, 
         // если фото вертикальное (хотя можно тоже серединку) 
         if ($w_src<$h_src) 
         imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
                          min($w_src,$h_src), min($w_src,$h_src)); 
 
         // квадратная картинка масштабируется без вырезок 
         if ($w_src==$h_src) 
         imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src); 
         
 
$date = time(); //вычисляем время в настоящий момент.
imagejpeg($dest, $path_to_90_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.
 
//почему именно jpg? Он занимает очень мало места + уничтожается анимирование gif изображения
 
$avatar = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.
 
$delfull = $path_to_90_directory.$filename; 
unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
}
else 
         {
         //в случае несоответствия формата, выдаем соответствующее сообщение
         exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>");
         }
//конец процесса загрузки и присвоения переменной $avatar адреса загруженной авы
}
 
 
if (isset($_POST['cat']))      {$cat = $_POST['cat']; if ($cat == '') {unset($cat);}}
if (isset($_POST['date']))      {$date = $_POST['date']; if ($date == '') {unset($date);}}
if (isset($_POST['title']))      {$title = $_POST['title']; if ($title == '') {unset($title);}}
if (isset($_POST['meta_k']))      {$meta_k = $_POST['meta_k']; if ($meta_k == '') {unset($meta_k);}}
if (isset($_POST['description'])) {$description = $_POST['description']; if ($description == '') {unset($description);}}
if (isset($_POST['text']))        {$text = $_POST['text']; if ($text == '') {unset($text);}}
$meta_d = $description;
 
if (isset($cat) && isset($avatar) && isset($title) && isset($meta_d) && isset($meta_k) && isset($description) && isset($text))
{
$result = mysql_query ("INSERT INTO data (cat,mini_img,title,meta_d,meta_k,description,date,text,author) VALUES ('$cat', '$avatar', '$title', '$description','$meta_k','$description','$date','$text','$author')");
 
if ($result == 'true') {echo "<p>Заметка успешно добавлена на сайт!</p>";}
else {exit ("<p>ОШИБКА! Заметка не добавлена.</p>");}
 
 
}        
else 
 
{
exit ("<p>Вы ввели не всю информацию, поэтому урок в базу не может быть добален.</p>");
} ?>
И так все данные создаются все работает кроме миниатюры. Хоть пользователь и выбирает картинку, вставляется стандартная:
PHP
1
$avatar = "avatars/net-avatara.jpg";
Помогите найти ошибку, чтоб пользователь когда выбирал картинку, вставлялась миниатюра выбранной картинки. Раньше так и было, чтото изменил теперь не могу найти, где че редактировал. Потом буду разбираться во всем коде. Спасибо.

Добавлено через 2 часа 14 минут
please help me

Добавлено через 2 часа 43 минуты
Ну че никто не поможет чтоле?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.05.2013, 02:31
Ответы с готовыми решениями:

Выдает ошибку при публикации записи
cms wordrpess Когда жму &quot;Опубликовать запись&quot;, выдает ошибку: Warning: Cannot modify header information - headers already sent by...

Стала возникать "Ошибка при создании формы" после публикации
Накануне вечером запускал нормально. После полез в свойства проекта, воспользовался функцией публикация. Большое ничего не трогал. ...

Выбор платформы при создании приложения в NetBeans
Здравствуйте. Можете помочь с созданием проекта Java ME Embedded в среде NetBeans? Проблема в том, что в пункте &quot;Платформа Java...

3
60 / 57 / 22
Регистрация: 15.12.2009
Сообщений: 231
Записей в блоге: 1
28.05.2013, 08:53
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Проверяем, отправил ли пользователь изображение
if (!empty($_POST['fupload'])) $fupload = trim($_POST['fupload']);
//Если не отправлена изображение, ставин стандартную.
if (!isset($fupload) || empty($fupload) || $fupload == '') $avatar = "avatars/net-avatara.jpg";
   # ошибка здесь. В этих двух строчках. $_POST['fupload']===NULL будет всегда,
   # потому что тип поля file.
   # В ветку else ниже не попадете.
 
//Иначе - загружаем изображение пользователя
else { /*...*/ }
 
#Делайте так:
if(empty($_FILES['fupload']['name']))
    $avatar = "avatars/net-avatara.jpg";
else { /*...*/ }
Добавлено через 1 минуту
Цитата Сообщение от dnozz Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
10
//Проверяем, отправил ли пользователь изображение
if (!empty($_POST['fupload'])) $fupload = trim($_POST['fupload']);
//Если не отправлена изображение, ставин стандартную.
if (!isset($fupload) || empty($fupload) || $fupload == '') $avatar = "avatars/net-avatara.jpg";
   # ошибка здесь. В этих двух строчках. $_POST['fupload']===NULL будет всегда,
   # потому что тип поля file.
   # В ветку else ниже не попадете.
 
//Иначе - загружаем изображение пользователя
else { /*...*/ }
Делайте так:
PHP
1
2
3
if(empty($_FILES['fupload']['name']))
    $avatar = "avatars/net-avatara.jpg";
else { /*...*/ }
1
9 / 9 / 0
Регистрация: 08.04.2013
Сообщений: 124
28.05.2013, 10:13
Подобное делал
вставляешь это в форму файла index
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div >Вы можете выбрать заранее подготовленный постер:
 
<div id="photos1">
<input type="radio" name="standart" value="1"><img src="posters/net-avatarki1.jpg" alt="" width="212" height="63,5"><br>
</div>
<div id="photos2">
<input type="radio" name="standart" value="2"><img src="posters/net-avatarki2.jpg" alt="" width="212" height="63,5"><br>
</div>
<div id="photos3">
<input type="radio" name="standart" value="3"><img src="posters/net-avatarki3.jpg" alt="" width="212" height="63,5"><br>
</div>
<div id="photos4">
<input type="radio" name="standart" value="4"><img src="posters/net-avatarki4.jpg" alt="" width="212" height="63,5"><br>
</div>
 
</div>
это в php
PHP
1
2
3
4
5
6
7
8
9
10
    if (empty($_FILES['fupload1']['name']) || empty($_FILES['fupload1']['size']) || !empty($_FILES['fupload1']['error']) )
    {
        $n = isset($_POST['standart']) ? (int) $_POST['standart'] : NULL;
        $avatar = (NULL!==$n && file_exists('avatar/net-avatarki'.$n.'.jpg')) ? 'avatar/net-avatarki'.$n.'.jpg' : 'avatar/net-avatarki.jpg';
    }
    else 
    {
        $poster = upload($_FILES['fupload1'], 'avatar/', 298, 146);
        false !== strpos($poster, 'image') || exit($poster);
    }
вроде вот так, есди что название папок и файла исправь

Добавлено через 8 минут
в самом начале где написанно "posters/net-avatarki.jpg" должна быть папка avatar а не posters
1
0 / 0 / 0
Регистрация: 23.05.2013
Сообщений: 5
28.05.2013, 10:57  [ТС]
chesar, Мега спасибо за помощь и объяснение, все получилось.

romanoid, Спасибо за варианты.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.05.2013, 10:57
Помогаю со студенческими работами здесь

Автоматический выбор Ответственного из справочника Пользователи при создании документа
Здравствуйте. Создаю документ в конфигурации Бухгалтерия предприятия, редакция 2.0 (2.0.43.6) на платформе 1С:Предприятие 8.2...

В VBox при создании виртуальной машины есть выбор только 32 битных систем
В VBox при создании виртуальной машины есть выбор только 32 битных систем. В БИОСе виртуализации нет. Что делать? Как решить эту проблему?

Выбор видимой части (миниатюры) изображения пользователем на сайте
Здравствуйте, подскажите пожалуйста код для того, чтобы пользователь, при загрузки своего аватара на сайт мог выбрать &quot;видимую&quot;...

Ошибка при создании дескриптора окна при динамическом создании кнопок
public Form1() { InitializeComponent(); } int height = 10; int width = 10; ...

Как сделать чтобы миниатюры в пост выводились одним из стандартных размеров - medium или thumbnail, на выбор?
Всего доброго! Подмогите пожалуйста, мучаюсь второй день :) Wordpress 3.5.1 Шаблон mentor Менял function.php Было: if (...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru