@vellitonrus

Как оформить загрузку одновременно трёх изображений на PHP без javascripts и jquery?

У меня есть определённый код заливки изображения на сервер с занесением в базу имени картинки. Он для меня очень удобный, ибо он и редактирует размер и "режет" качество картинки, но, есть одна проблемка, никак не могу сообразить каким "макаром" реализовать функцию заливки одновременно трёх изображений, мне впринцепи больше и не надо. Думал может поставить сам скрипт в цикл, но что то ничего дельного не надумал. В общем вот сам код:
<?php 
$valid_types =  array("gif","jpg", "png", "jpeg", "GIF", "JPG", "PNG", "JPEG");
 $dir="upload_image/";
 if (!is_dir($dir)) {
 mkdir($dir,0755);
 } 
function createphoto ($input,$output) {
$w = 500; 
$q = 50;  
$f=$input;
$src = imagecreatefromjpeg($f);
$w_src = imagesx($src);
$h_src= imagesy($src);
$ratio = $w_src/$w;
$w_dest = round($w_src/$ratio);
$h_dest = round($h_src/$ratio);
$dest = imagecreatetruecolor($w_dest,$h_dest);
imagecopyresized($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);
imagejpeg($dest,$output,$q);
imagedestroy($dest);
imagedestroy($src);
}
if (isset($_POST['pr'])) {
if ($_FILES['img']['tmp_name']!="") {
$ext = substr($_FILES['img']['name'], 1 + strrpos($_FILES['img']['name'], "."));
if (in_array ($ext, $valid_types)) {
$imageinfo = getimagesize($_FILES['img']['tmp_name']);
if($imageinfo['mime'] == 'image/jpeg') {
$random=rand(0,999999999);
$output=$random.".".$ext;
$input=$_FILES['img']['tmp_name'];
createphoto($input,$dir.$output);
if (file_exists($dir.$output)) {
echo "<p>файл загружен с именем {$output}</p>";
$insert="INSERT INTO 'images' ('image1') VALUES ('".$output."');";
$sql=mysql_query($insert);
}
else {
echo "файл не был загружен";
}
}
else echo "<p>Неверный тип загружаемого файла</p>";
}
else echo "<p>Данное расширение недопустимо для загрузки</p>";
}
else echo "<p>Следует загрузить файл</p>";
}
 
echo '<FORM METHOD="POST" ENCTYPE="multipart/form-data">';
echo "<input type='file' class='file' name='img' size='100'> ";
echo "<input type='submit' class='filebtn' name='pr' value='добавить'>" ;
echo '</FORM>';
?>


И еще один вопросик, как мне реализовать скажем так "по правильному" изменение названия изображения, я использую на данный момент функию rand(0,10); , но она меня не особо устраивает, если не сложно подскажите и по этому поводу. Заранне спасибо!
  • Вопрос задан
  • 2881 просмотр
Решения вопроса 1
Вот в этой строке, где ты присваиваешь значение для $input
$input=$_FILES['img']['tmp_name'];
Напиши нечто такое
$input[]=$_FILES['img1']['tmp_name'];
$input[]=$_FILES['img2']['tmp_name'];
$input[]=$_FILES['img3']['tmp_name'];
Где img1, img2, img3 - name'ы полей формы с фотографиями.
В функции createphoto сделай цикл foreach для каждого значения $input.

А имена можно давать с помощь функции time(). Это число секунд с начала эпохи юникс по наши дни. Т.е. каждую секунду изменяется. При задание имени можно сделать проверку
If ( !isset( time() . ".png" ) ) {
$name=time();
} else {
$name=time()+1;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы