Как добавлять фотографии в новости?

Тема в разделе "PHP", создана пользователем web-investor, 22 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. web-investor

    web-investor

    Регистр.:
    19 окт 2007
    Сообщения:
    495
    Симпатии:
    104
    Здравствуйте!

    Делаю сайт для диплома.. Возникла такая задача: в админке есть возможность добавлять новость через определенную форму... как сделать чтоб в этой же форме можно было добавлять к новости фотографию, таким образом чтоб было поле для указания пути к файлу, кнопка обзор и кнопка добавить, т.е. чтоб пользователь, не обладающий никакими знаниями, нажал на кнопку и все готово :)

    В общем нужно, что-то наподобии этого:
    http://slil.ru
    Но только, для фотографий.

    Подскажите, пожалуйста...
     
  2. abzac

    abzac Создатель

    Регистр.:
    25 окт 2008
    Сообщения:
    24
    Симпатии:
    3
    web-investor нравится это.
  3. virtualbrest

    virtualbrest

    Регистр.:
    6 май 2007
    Сообщения:
    210
    Симпатии:
    18
    Тебе надо поставить на сайт практически любой WYSIWYG редактор для твоей формы, и в случае если новости пишутся как HTML в базу или в файл, то этот редактор позволит тебе без лишних движений организовать то что надо.
     
  4. Maxsystems

    Maxsystems Создатель

    Регистр.:
    18 мар 2009
    Сообщения:
    22
    Симпатии:
    2
    Сомневаюсь что ему под силу будет внедрить форму загрузки фотографии и обработчик сохранения...

    Этим все сказанно, если есть админка следовательно не сам писал, значит движок стоит.

    И опять не понятно что за картинку ты хочешь добавить, если картинку анонса, то WYSIWYG редактором не отделаешься, нужно в базе добавлять доп поля для картинки.



    Очень мало информации то чего тебе нужно, телепатия вещь хорошая, но порой она изматывает.
    ps: ты где учишься, и кто у тебя будет проверять диплом, подумай.. За частую эти люди сами ничего в этом не понимают..
     
  5. virtualbrest

    virtualbrest

    Регистр.:
    6 май 2007
    Сообщения:
    210
    Симпатии:
    18
    Ну на самом деле не такая уж и сложная задача, если конечно знаешь как: добавить в в форму ID а после формы код небольшой, вот собственно и все:

    HTML:
    <textarea id="body" name="name"></textarea>
    
    <Script type="text/javaSCRIPT" src="/fckeditor/fckeditor.js">       </SCRIPT>
        <Script type="text/javaSCRIPT">
         var oFCKeditor = new FCKeditor("body");
         oFCKeditor.ToolbarSet="Default";
         oFCKeditor.BasePath="/fckeditor/";
         oFCKeditor.ReplaceTextarea();
        </SCRIPT>
    ну ессно по адресу /fckeditor/fckeditor.js должна быть соответствующая программка, которая свободно скачивается с http://www.fckeditor.net/. Вот и все, чего ж там сложного, всего-то скачать набор скриптов, закачать их на свой сайт, и подправить форму.

    Справедливости ради скажу, что если надо еще и файлы закачивать на сервер к себе, а именно оно и надо, то там в скачанных скриптах надо найти и подредактировать одну строчку, уж не помню где, но тут точно на форуме есть эта инфа, по умолчанию upload на сервер отключен, в целях безопасности. Ну и ессно права на папку куда все будет закачиваться выставить 777.

    Вот мой комплект, работает у меня на сайте, уже с закачкой, только сделать код как я писал в форме:
    Посмотреть вложение fckeditor.rar
     
  6. ex3mer

    ex3mer Создатель

    Регистр.:
    19 ноя 2007
    Сообщения:
    21
    Симпатии:
    5
    fckeditor тебе отлично подойдет для таких целей... Очень удобный и простой в использовании и настройке! Давно использую, во всем устраивает!
     
  7. deldemonio

    deldemonio Писатель

    Регистр.:
    11 мар 2009
    Сообщения:
    9
    Симпатии:
    0
    аналагично только в оперере работают пункты текстовой панели, остальные попусту не отображают содержимое, на жумле 1 0 15
     
  8. rex1963

    rex1963

    Регистр.:
    19 фев 2007
    Сообщения:
    228
    Симпатии:
    47
    Сначала нужно изменить заголовок формы и ввести поле
    HTML:
    <form name=form enctype='multipart/form-data' action=<?php echo $action; ?> method=post>
    <input class=input type=file name=img_dupa>
    Затем в обработчик формы добавить обработку этого поля, примерно так:
    PHP:
    <?php

    //правишь $path - указываешь путь к папке, где будут рисунки и выставляешь на нее прова 777

    //добавляем рисунок
      
    $img_dupa "";
     
         
    // Если поле выбора малого изображения не пустое - закачиваем его на сервер
      
    if (trim($_FILES['img_dupa']['tmp_name']) != "" && trim($_FILES['img_dupa']['name']) != "-")
             { 

    //ТУТ ПРАВИТЬ!!
      
    $path "../VASHA DIR/images/im_".date("YmdHis",time()).strrchr($_FILES['img_dupa']['name'], "."); 
     
    $size_img getimagesize($_FILES['img_dupa']['tmp_name']);
       
    // Если размеры меньше, то масштабирования не нужно
        
    if (($size_img[0]<$w) && ($size_img[1]<$h)) 
        {
        if(!
    resizeimg($_FILES['img_dupa']['tmp_name'], $path$size_img[0], $size_img[1]))
         {
        echo
              
    "Ошибка при создании уменьшенной копии изображения с
               помощью библиотеки GDLib"
    );
         }

    }
        else

      
      
      if(!
    resizeimg($_FILES['img_dupa']['tmp_name'], $path$w$h))
         {
       echo
              
    "Ошибка при создании уменьшенной копии изображения с
               помощью библиотеки GDLib"
    );
         }
        }
         
    unlink($_FILES['img_dupa']['tmp_name']);    
         
    $img_dupa $path;

             }    

    // $img_dupa пишется в базу, нужно создать текстовое поле

    ?>
    Функция резки рисунков

    PHP:
    <?php
    //$w, $h - ширина и высота рисунка после резки
     
    function resizeimg($filename$smallimage$w$h)
      {
        
    // Имя файла с масштабируемым изображением
       // $filename = "../".$filename;
        // Имя файла с уменьшенной копией.
        
    $smallimage "../".$smallimage;    
        
    // определим коэффициент сжатия изображения, которое будем генерить
        
    $ratio $w/$h;
        
    // получим размеры исходного изображения
        
    $size_img getimagesize($filename);
        
    // Если размеры меньше, то масштабирования не нужно
        
    if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
        
    // получим коэффициент сжатия исходного изображения
        
    $src_ratio=$size_img[0]/$size_img[1];

        
    // Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились 
        // пропорции исходного изображения
        
    if ($ratio<$src_ratio)
        {
          
    $h $w/$src_ratio;
        }
        else
        {
          
    $w $h*$src_ratio;
        }
        
    // создадим пустое изображение по заданным размерам 
        
    $dest_img imagecreatetruecolor($w$h);  
        
    $white imagecolorallocate($dest_img255255255);       
        if (
    $size_img[2]==2)  $src_img imagecreatefromjpeg($filename);                      
        else if (
    $size_img[2]==1$src_img imagecreatefromgif($filename);                      
        else if (
    $size_img[2]==3$src_img imagecreatefrompng($filename); 

        
    // масштабируем изображение     функцией imagecopyresampled()
        // $dest_img - уменьшенная копия
        // $src_img - исходной изображение
        // $w - ширина уменьшенной копии
        // $h - высота уменьшенной копии        
        // $size_img[0] - ширина исходного изображения
        // $size_img[1] - высота исходного изображения
        
    imagecopyresampled($dest_img$src_img0000$w$h$size_img[0], $size_img[1]);                
        
    // сохраняем уменьшенную копию в файл 
        
    if ($size_img[2]==2)  imagejpeg($dest_img$smallimage);                      
        else if (
    $size_img[2]==1imagegif($dest_img$smallimage);                      
        else if (
    $size_img[2]==3imagepng($dest_img$smallimage); 
        
    // чистим память от созданных изображений
        
    imagedestroy($dest_img);
        
    imagedestroy($src_img);
        return 
    true;         
      }  
    ?>
     
Статус темы:
Закрыта.