singlepost

Скриптик на php << На главную или назад  

Привет всем. Пишу скрипт, типа доска обьявлений. По нему есть некоторые поля по типу – название товара, цена товара и все-такое. Хранится в базе данных мискл. Это я реализовал. Осталось только реализовать загрузку картинок. Каждая картинка сохраняется в трех размерах. Оригинальный, 800на600, и совсем маленькая, типа авы. Вот не знаю как реализовать загрузку картинок…
——————————
Вот это набросок, по которому грузится только одна картинка в исходном размере, но я что-то даже не пойму как. Прошу помощи комрады
<?php

// Подключаемься к базе данных

require_once ("include/sql.php");

//================Настройки============= //
$maxwidth = "300px"; // максимальная ширина картинок на превью
$fotos_dir = "fotos/"; // Директория для фотографий товаров
$foto_name = $fotos_dir.time()."_".basename($_FILES['myfile']['name']); // Полное имя файла вместе с путем
$foto_light_name = time()."_".basename($_FILES['myfile']['name']); // Имя файла исключая путь
$foto_tag = "<img src=\"$foto_name\" border=\"0\">"; // Готовый тэг для вставки картинки на страницу
$foto_tag_preview = "<img src=\"$foto_name\" border=\"0\" width=\"$maxwidth\">"; // Тот же тэг, но для превью

// Текст ошибок
$error_by_mysql = "<span style=\"font: bold 15px tahoma; color: red;\">Ошибка при добавлении данных в базу</span>";
$error_by_file = "<span style=\"font: bold 15px tahoma; color: red;\">Невозможно загрузить файл в директорию. Возможно её не существует</span>";

// Начало
if(isset($_FILES["myfile"])){
if ($_FILES['myfile']['type'] == 'image/jpeg' OR $_FILES['myfile']['type'] == 'image/pjpeg' OR $_FILES['myfile']['type'] == 'image/gif'){

$myfile = $_FILES["myfile"]["tmp_name"];
$myfile_name = $_FILES["myfile"]["name"];
$myfile_size = $_FILES["myfile"]["size"] ;
$myfile_type = $_FILES["myfile"]["type"];
$error_flag = $_FILES["myfile"]["error"];

// Если ошибок не было
if($error_flag == 0)
{

$DOCUMENT_ROOT = $_SERVER['DOCMENT_ROOT'];
$upfile = getcwd()."\\fotos\\" . time()."_".basename($_FILES["myfile"]["name"]);
if ($_FILES['myfile']['tmp_name'])
{

//Если не удалось загрузить файл

if (!move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile))
{
echo "$error_by_file";
exit;
}

}
else
{
echo 'Проблема: возможна атака через загрузку файла. ';
echo $_FILES['myfile']['name'];
exit;
}

// После удачной обработки файла, выводим сообщение
echo "<h3>Результат добавления товара:</h3> <br />";
echo "<b>Файл успешно скопирован в директорию:</b> ".$fotos_dir." <br /><b>Имя файла:</b> ".$foto_name."<br />";
echo "<br /><small>Превью загруженной картинки:</small> <br />$foto_tag_preview<br /><br />";

// Заносим путь картинки в базу данных
$q = "INSERT INTO mawina (adress) VALUES ('$foto_name')";
$query = mysql_query($q);

// Данные успешно внесены в базу данных, выводим сообщение

<form enctype="multipart/form-data" method="POST" action="ima

27 ответов в теме “Скриптик на php”

  1. 10
    Евгений Безымянников ответил:

    "Требуется сделать флеш-новость с php и javas?1?ript" мозг лопнул… если flash, то при чем тут JS?

  2. 9
    Евгений Безымянников ответил:

    50баксов стоить будет. за день сделаю. пример покажу

  3. 8
    Алексей Федин ответил:

    Здравствуйте! Требуется сделать флеш-новость с php и javas?1?ript как на //ru.uefa.com/ ??? Установить на движок DLE . Сможете всё так сделать и установить и сколько будет стоить?

    Пишите в личку.

  4. 7
    Алексей Винюков ответил:

    Спасибо парни. Вечером буду разбираться

  5. 6
    Роман Мезенцев ответил:

    используй ImageCopyResized для простого масштабирования изображений или ImageCopyResampled для масштабирования с последующим удалением шума и сглаживанием.

  6. 5
    Денис Боенсков ответил:

    Загрузка и сохранение с другим масштабом.

    Делал давно…. Посмотри, осознай суть и переделай под себя. Некоторые ф-ции берутся из других модулей, но их суть ясна или они не нужны. Расшифровывать, разжевывать не буду – лень.
    ——
    <?php

    #params:
    # name – имя поля
    # save_dir – куда сохранять (c "/")
    # min_width- минимальный размер, при котором картинка добавлена не будет
    # min_height – минимальный размер, при котором картинка добавлена не будет
    # max_width- максимальный размер, к которому картинка будет приведена
    # max_height – максимальный размер, к которому картинка будет приведена
    # quality- качество сохраненого изображения
    # caption

    #err:
    # >0 – ok
    global $images_err;
    $images_err[-1]="Файл не является фотографией";
    $images_err[-2]="Фотография не добавлена, т.к. ее размер по ширине или высоте слишком мал! Добавляйте более качественные изображения, такие, на которых Вас можно разглядеть.";
    $images_err[-3]="Фотография не добавлена, т.к. неподдерживаемого типа. Используйте файлы формата <b>JPEG</b>, <b>GIF</b> и <b>PNG</b>.";
    $images_err[-4]="Ошибка добавления в базу даных";

    function SavePostImage($params)
    {
    //debug("",__FILE__,__LINE__);
    $dir=$_SERVER["DOCUMENT_ROOT"].$params["save_dir"];
    if(@!file_exists($dir)) mkdir($dir,777);
    if(@file_exists($_FILES[$params["name"]]["tmp_name"]))
    {
    $tmp=$_FILES[$params["name"]]["tmp_name"];
    $dst=$dir."/".basename($_FILES[$params["name"]]["name"]);
    $dst_old=$dst;
    $sz = GetImageSize ($tmp);
    if(!$sz)
    {
    return -1;
    //SetCookMsg("Файл <b>".basename($dst_old)."</b> не является фотографией");
    }
    else
    {
    $size=$sz[0]."x".$sz[1];
    $type="(".$sz[2].")";
    $str=file_get_contents($tmp);
    $im=ImageCreateFromString($str);;
    if($im)
    {
    if(ImageSX($im)<@$params["min_width"]||ImageSY($im)<@$params["min_height"])
    {
    return -2;
    // SetCookMsg("Фотография не добавлена, т.к. ее размер по ширине или высоте слишком мал! Добавляйте более качественные изображения, такие, на которых Вас можно разглядеть.");
    }
    else
    {
    $k1=1;
    $k2=1;
    if($sz[0]>$params["max_width"])
    $k1=(double)($params["max_width"]/$sz[0]);
    if($sz[1]>$params["max_height"])
    $k2=(double)($params["max_height"]/$sz[1]);
    $k=($k1<$k2)?$k1:$k2;
    if($k!=1)
    {
    $sz_src=$sz;
    $sz[0]=(int)($sz[0]*(double)$k);
    $sz[1]=(int)($sz[1]*(double)$k);
    $size=$sz[0]."x".$sz[1];
    $im2=ImageCreateTrueColor($sz[0],$sz[1]);
    if(!imagecopyresampled($im2,$im,0,0,0,0, $sz[0], $sz[1],$sz_src[0], $sz_src[1]))
    {
    // SetCookMsg("Изменение масштаба не удалось");
    }
    else
    {
    $im_tmp=$im;
    $im=$im2;
    $im2=$im_tmp;
    // SetCookMsg("Изменение масштаба в $k раз(а). Новый размер $size.");
    SetCookMsg("Размер фотографии был уменьшен");
    }
    imagedestroy($im2);
    }
    # добавляем в базу данных

  7. 4
    Денис Боенсков ответил:

    … том 2
    ———

    # добавляем в базу данных
    // здесь было добавление в БД
    if(isset($params["quality"])) $image_quality=$params["quality"];
    else $image_quality=image_quality;
    // $dst=ChangeFileExt($dst,"jpg");
    //$dst=$dir."/".$_SERVER["user_info"]["user_id"]."_".mysql_insert_id().".jpg";
    $dst=$dir."/".mysql_insert_id().".jpg";
    ImageJPEG($im,$dst,$image_quality);
    return mysql_insert_id();
    //SetCookMsg("Фотография <b>".basename($dst_old)."</b> ($size) добавлена");
    imagedestroy($im);

    }
    else return -3;
    //SetCookMsg("Фотография не добавлена, т.к. неподдерживаемого типа. Используйте файлы формата <b>JPEG</b>, <b>GIF</b> и <b>PNG</b>.");
    }
    }
    }

  8. 3
    Кирилл Шилов ответил:

    так в чем проблема?Попробуй просто сделать несколько копий и поменять им размер.

  9. 2
    Алексей Винюков ответил:

    Там все понятно. Мне нужен код чтобы из одной картинки три делалось разного рзмера..

  10. 1
    Владимир Муромский ответил:

    Код хорошо комментирован, что конкретно непонятно?

    Одно только могу сказать, картинка грузится в исходном размере, и в меньший размер не пересжимается. А для превью выводится та же самая картинка, но задается ширина 300 в теге IMG. То есть исходная картинка будет выведена в уменьшенном размере, что не есть гуд.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.