- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Как всегда со своими вопросами в PHP.
Как ранее уже говорил я учусь...Прошу помочь.
Значит задача:
Загрузить изображения в папку на сервер и создать путь к фото в таблице.
Для каждого изображения создаем миниатюрку и большое изображение.
Существует 10 полей для загрузки изображений.
Значит сделал для двух первых, можно и для остальных сделать повторение обработки, но слишком большой код получится.
Полям присвоены имена fupload,fupload2,fupload3 и так до 10.
Подскажите как можно не писать кучу кода, но все загрузить и каждое изображение в свое поле в БД?
Не понимаю в чем собственно проблема...
В цикле называть поля для загрузки изображений, так же в цикле их обрабатывать и формировать запрос для записи в БД.
Не понимаю в чем собственно проблема...
В цикле называть поля для загрузки изображений, так же в цикле их обрабатывать и формировать запрос для записи в БД.
Я же и не спорю, что для вас это легко. А я пока еще не совсем гребу как что и где. Если не затрудник покажите пример!
http://php.su/phphttp/?uploads
вот тут прочитай об аплоаде )
SEXCRIME добавил 21.12.2009 в 22:21
щас буду пробовать что тебе нужно )
for($i = 0; isset($_POST["param{$i}"]); $i++) { .. } ?
это, конечно, без всех условий "предохранения"...
St.I.An добавил 21.12.2009 в 22:37
или
<?
for($i = 1; isset($_POST["fupload".(($i > 1) ? $i : '')]); $i++) {
.. // ваш небольшой код
} ?
?>
как-то так, сам не тестил.
<?
for($i = 1; isset($_POST["fupload".(($i > 1) ? $i : '')]); $i++) {
.. // тут большой код :)
} ?
?>
Вот мой код
if (empty($_FILES['fupload']['name']))
{
//если переменная пустая (пользователь не отправил изображение)
echo '<br><strong>Вы не выбрали фото для загрузки.</strong><br><br><a href="'.$_SERVER['HTTP_REFERER'].'">
<<< Назад</a>';
}
else
{
//иначе - загружаем изображение пользователя для обновления
$path_to_90_directory = 'useruploads/album/';//папка, куда будет загружаться начальная картинка и ее копия
if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)|(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, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}
//СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ
// Создание квадрата
// dest - результирующее изображение
// w - ширина изображения
// ratio - коэффициент пропорциональности
$w = 130; // квадратная. Можно поставить и другой размер.
// создаём исходное изображение на основе
// исходного файла и определяем его размеры
$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 в нужную папку, именем будет текущее время. Сделано, чтобы не было одинаковых имен.
$foto = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.
$delfull = $path_to_90_directory.$filename;
unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру
}
else
{
//в случае несоответствия формата, выдаем соответствующее сообщение
exit ("Фото должно быть в формате <strong>JPG,GIF или PNG</strong>");
}
}
$user_id = $myrow2["id"];
/* Можно заносить в базу */
$result = mysql_query ("INSERT INTO name_foto (user_id, name, foto) VALUES ('$user_id', '$name', '$foto')");
$result22 = mysql_query("SELECT id FROM name_foto WHERE foto='$foto'",$db);
$myrow22 = mysql_fetch_array($result22);
$filename2 = $_FILES['fupload2']['name'];
$source = $_FILES['fupload2']['tmp_name'];
$target = $path_to_90_directory . $filename2;
move_uploaded_file($source, $target);//загрузка оригинала в папку $path_to_90_directory
if(preg_match('/[.](GIF)|(gif)$/', $filename2)) {
$im = imagecreatefromgif($path_to_90_directory.$filename2) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}
if(preg_match('/[.](PNG)|(png)$/', $filename2)) {
$im = imagecreatefrompng($path_to_90_directory.$filename2) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}
if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename2)) {
$im = imagecreatefromjpeg($path_to_90_directory.$filename2); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}
//СОЗДАНИЕ ВТОРОГО КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ
// Создание квадрата
// dest - результирующее изображение
// w - ширина изображения
// ratio - коэффициент пропорциональности
$w = 130; // квадратная. Можно поставить и другой размер.
// создаём исходное изображение на основе
// исходного файла и определяем его размеры
$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 в нужную папку, именем будет текущее время. Сделано, чтобы не было одинаковых имен.
$foto = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.
$filename3 = $_FILES['fupload2']['name'];
$source = $_FILES['fupload2']['tmp_name'];
$target = $path_to_90_directory . $filename3;
move_uploaded_file($source, $target);//загрузка оригинала в папку $path_to_90_directory
if(preg_match('/[.](GIF)|(gif)$/', $filename3)) {
$im = imagecreatefromgif($path_to_90_directory.$filename3) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}
if(preg_match('/[.](PNG)|(png)$/', $filename3)) {
$im = imagecreatefrompng($path_to_90_directory.$filename3) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}
if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename3)) {
$im = imagecreatefromjpeg($path_to_90_directory.$filename3); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}
//СОЗДАНИЕ ВТОРОГО КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ
// Создание квадрата
// dest - результирующее изображение
// w - ширина изображения
// ratio - коэффициент пропорциональности
$w = 636; // квадратная. Можно поставить и другой размер.
// создаём исходное изображение на основе
// исходного файла и определяем его размеры
$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."_big.jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы не было одинаковых имен.
$foto_big = $path_to_90_directory.$date."_big.jpg";//заносим в переменную путь до аватара.
$delfull = $path_to_90_directory.$filename2;
unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру
$post = $myrow22["id"];
/* Можно заносить в базу */
$result3 = mysql_query ("INSERT INTO foto_album (post, user_id, foto_big, foto) VALUES ('$post', '$user_id', '$foto_big', '$foto')");
if ($result and $result3 == 'true') {echo "<p><strong>Успешно добавлено.</strong></p>";}
else {echo "<p><strong>Не добавлено.</strong></p>";}
первое изображение это картинка альбома, а все остальные 9 уже идут в альбом в отдельную таблицу. Делается миниатюра и большое.
Вот состряпал загрузку двух файлов на сервер(увеличить кол-во не проблема)
файл index.php (или всё равно как,файл где код для загрузки)
<?php
echo '<form action=upload.php method=post enctype=multipart/form-data>
<input type=file name=uploadfile1><br/>
<input type=file name=uploadfile2><br/>
<input type=submit value=Загрузить></form>';
?>
файл upload.php
<?php
$uploaddir = './files/';
$uploadfile1 = $uploaddir.basename($_FILES['uploadfile1']['name']);
$uploadfile2 = $uploaddir.basename($_FILES['uploadfile2']['name']);
if (copy($_FILES['uploadfile1']['tmp_name'], $uploadfile1))
{
echo "Файл успешно загружен<br/>";
}
else { echo "<h3>Ошибка! Не удалось загрузить файл!</h3>"; exit; }
if (copy($_FILES['uploadfile2']['tmp_name'], $uploadfile2))
{
echo "Файл успешно загружен<br/>";
}
else { echo "<h3>Ошибка! Не удалось загрузить файл!</h3>"; exit; }
echo "<h3>Информация о загруженных файлах: </h3>";
echo "Имя файла: ".$_FILES['uploadfile1']['name']."<br/>";
echo "Размер загруженного файла в байтах: ".$_FILES['uploadfile1']['size']."<br/>";
echo "Имя файла: ".$_FILES['uploadfile2']['name']."<br/>";
echo "Размер загруженного файла в байтах: ".$_FILES['uploadfile2']['size']."<br/>";
?>
Создаёшь папку files куда файлы будут сохраняться и права 777 на неё )
если скажешь,продолжу подгонять под тебя,если не нада,просто уйду из темы
SEXCRIME добавил 21.12.2009 в 23:13
На локалке проверил,всё нормально работает =)
SEXCRIME, С удовольствием попрошу остаться в теме, свой обработчик я выложил выше.
Сразу говорю,щас будет КУЧА кода :D
SEXCRIME добавил 21.12.2009 в 23:29
Вы кстати читали что я давал? =)
Да, я насколько там понял, сервер типа сам размножает обработчик!? Но мне не совсем понятно как будет подставляться переменная для того что бы каждое фото вносилось в базу в нужное поле БД!
помоему в том коде,что вы дали ОЧЕНЬ много бреда. Где вы это взяли вообще? )