За последние 24 часа нас посетили 43840 программистов и 1813 роботов. Сейчас ищут 2052 программиста ...

скрипт который заносит старое фото в бд

Тема в разделе "PHP для новичков", создана пользователем wolf777, 17 сен 2014.

  1. wolf777

    wolf777 Новичок

    С нами с:
    26 авг 2014
    Сообщения:
    207
    Симпатии:
    0
    Код (Text):
    1.  //Разришенные форматы
    2.             $allowed_files = array('jpg', 'jpeg', 'jpe', 'png', 'gif');
    3.            
    4.             //Получаем данные о фотографии
    5.             $image_tmp = $_FILES['uploadfile']['tmp_name'];
    6.             $image_name = totranslit($_FILES['uploadfile']['name']); // оригинальное название для оприделения формата
    7.             $image_rename = substr(md5($server_time+rand(1,100000)), 0, 15); // имя фотографии
    8.             $image_size = $_FILES['uploadfile']['size']; // размер файла
    9.             $type = end(explode(".", $image_name)); // формат файла
    10.            
    11.             //Проверям если, формат верный то пропускаем
    12.             if(in_array($type, $allowed_files)){
    13.             $config['max_photo_size'] = $config['max_photo_size'] * 1000;
    14.             if($image_size < $config['max_photo_size']){
    15.             $res_type = strtolower('.'.$type);
    16.  
    17.                    
    18.                     if(move_uploaded_file($image_tmp, $photo_dir.$image_rename.$res_type)) {
    19.  
    20.                         //Создание оригинала
    21.                         $tmb = new thumbnail($photo_dir.$image_rename.$res_type);
    22.                         $tmb->size_auto(800);
    23.                         $tmb->jpeg_quality(100);
    24.                         $tmb->save($photo_dir.'main_photo_'.$image_rename.$res_type);
    25.                        
    26.                         //Создание главной фотографии 200x200
    27.                         $tmb = new thumbnail($photo_dir.$image_rename.$res_type);
    28.                         $tmb->size_auto('200x200');
    29.                         $tmb->jpeg_quality(100);
    30.                         $tmb->save($photo_dir.'200_'.$image_rename.$res_type);
    31.                        
    32.                         //Создание уменьшеной копии 50х50
    33.                         $tmb = new thumbnail($photo_dir.$image_rename.$res_type);
    34.                         $tmb->size_auto('50x50');
    35.                         $tmb->jpeg_quality(100);
    36.                         $tmb->save($photo_dir.'50_'.$image_rename.$res_type);
    37.                        
    38.                         //Создание уменьшеной копии 100х100
    39.                         $tmb = new thumbnail($photo_dir.$image_rename.$res_type);
    40.                         $tmb->size_auto('100x100');
    41.                         $tmb->jpeg_quality(100);
    42.                         $tmb->save($photo_dir.'100_'.$image_rename.$res_type);
    43.  
    44.                         $image_rename = $db->safesql($image_rename);
    45.                         $res_type = $db->safesql($res_type);
    46.  
    47.                         //Добавляем на стену
    48.                         $row = $db->super_query("SELECT sex FROM `".PREFIX."_users` WHERE user_id = '{$user_id}'");
    49.                         if($row['sex'] == 2)
    50.                             $sex_text = 'Сменила';
    51.                         else
    52.                             $sex_text = 'Сменил';
    53.                        
    54.                         $wall_text = "<div class=\"profile_update_photo\">
    55. <a href=\"\" onClick=\"Photo.Profile(\'{$user_id}\', \'{$image_rename}{$res_type}\'); return false\">
    56. <img src=\"/uploads/users/{$user_id}/photo/main_photo_{$image_rename}{$res_type}\" style=\"margin-top:3px\"></a>
    57. <img src=\"/uploads/users/{$user_id}/photo/main_photo_{$image_rename}{$res_type}\" style=\"margin-top:3px\">
    58. </div>";
    59.  
    60.  
    61. //Обновляем имя фотки в бд
    62. $db->query("UPDATE `".PREFIX."_users` SET pred_avatar = '{$image_rename}{$res_type}', wall_id = '{$dbid}' WHERE user_id = '{$user_id}'");
    сам скрипт выводит новые фото, как сделать чтоб записывались предыдущие фотки в бд и выводились?

    Добавлено спустя 27 минут 12 секунд:
    вообще не пойму как это реализовать(
     
  2. wolf777

    wolf777 Новичок

    С нами с:
    26 авг 2014
    Сообщения:
    207
    Симпатии:
    0
    программисты вопрос очень сложный для вас?
     
  3. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    наоборот.
    что тут сложного?
    текущее фото лежит в каталоге, а в БД лежит только имя фотки.
    загрузили новое фото, старое переместили в каталог другой, в архив. в БД пометили его как архивное. и все.

    что конкретно вы незнаете как сделать?
     
  4. wolf777

    wolf777 Новичок

    С нами с:
    26 авг 2014
    Сообщения:
    207
    Симпатии:
    0
    runcore у меня имеется папка st -там будут хранится старые файлы, в бд создал строку pred_avatar varchar 90, я не знаю как на php написать чтоб старые фотографии добавлялись в строчку pred_avatar, как это сделать?

    Добавлено спустя 19 минут 26 секунд:
    а тут такие же будут переменные {$image_rename}{$res_type} для старых фоток?

    Добавлено спустя 14 минут 53 секунды:
    или так будет?

    $image_rename = substr(md5($server_time+rand(1,100000)), 0, 15); // имя фотографии новой
    $image_st = substr(md5($server_time+rand(1,100000)), 0, 15); // имя фотографии старой

    Добавлено спустя 23 минуты 40 секунд:
    вот сделал чтоб создавались 2 каталога в каталоге photo хранятся новые фотки, в каталоге st хранятся старые фотки, ниже скрипт

    PHP:
    1.             //Директория юзеров
    2.             $uploaddir = ROOT_DIR.'/uploads/users/';
    3.            
    4.             //Если нет папок юзера, то создаём её
    5.             if(!is_dir($uploaddir.$user_id)){
    6.                 @mkdir($uploaddir.$user_id, 0777 );
    7.                 @chmod($uploaddir.$user_id, 0777 );
    8.                 @mkdir($uploaddir.$user_id.'/photo', 0777 );
    9.                 @chmod($uploaddir.$user_id.'/photo', 0777 );
    10.             }
    11.            
    12.             //Если нет папки фото, то создаём её
    13.                     $photo_dir = ROOT_DIR.'/uploads/users/'.$user_id.'/photo/';
    14.                     if(!is_dir($photo_dir)){
    15.                         @mkdir($photo_dir, 0777);
    16.                         @chmod($photo_dir, 0777);
    17.                     }
    18.            
    19.            
    20.                 //Директория юзеров
    21.             $uploaddir = ROOT_DIR.'/uploads/users/photo/';
    22.            
    23.             //Если нет папок юзера, то создаём её
    24.             if(!is_dir($uploaddir.$user_id)){
    25.                 @mkdir($uploaddir.$user_id, 0777 );
    26.                 @chmod($uploaddir.$user_id, 0777 );
    27.                 @mkdir($uploaddir.$user_id.'/st', 0777 );
    28.                 @chmod($uploaddir.$user_id.'/st', 0777 );
    29.             }
    30.            
    31.             //Если нет папки фото, то создаём её
    32.                     $st_dir = ROOT_DIR.'/uploads/users/'.$user_id.'/photo/st/';
    33.                     if(!is_dir($st_dir)){
    34.                         @mkdir($st_dir, 0777);
    35.                         @chmod($st_dir, 0777);
    36.                     }
    дальше у меня идет создания получения данных о фоток

    //Получаем данные о фотографии
    $image_tmp = $_FILES['uploadfile']['tmp_name'];
    $image_name = totranslit($_FILES['uploadfile']['name']); // оригинальное название для оприделения формата
    $image_rename = substr(md5($server_time+rand(1,100000)), 0, 15); // имя фотографии новой
    $image_st = substr(md5($server_time+rand(1,100000)), 0, 15); // имя фотографии старой
    $image_size = $_FILES['uploadfile']['size']; // размер файла
    $type = end(explode(".", $image_name)); // формат файла

    имя новых фоток у меня обозначено $image_rename, а старых фоток я обозначил $image_st

    затем идет создания фоток

    if(move_uploaded_file($image_tmp, $photo_dir.$image_rename.$res_type)) {

    //Создание оригинала
    $tmb = new thumbnail($photo_dir.$image_rename.$res_type);
    $tmb->size_auto(800);
    $tmb->jpeg_quality(100);
    $tmb->save($photo_dir.'main_photo_'.$image_rename.$res_type);

    //Создание главной фотографии 200x200
    $tmb = new thumbnail($photo_dir.$image_rename.$res_type);
    $tmb->size_auto('200x200');
    $tmb->jpeg_quality(100);
    $tmb->save($photo_dir.'200_'.$image_rename.$res_type);

    //Создание уменьшеной копии 50х50
    $tmb = new thumbnail($photo_dir.$image_rename.$res_type);
    $tmb->size_auto('50x50');
    $tmb->jpeg_quality(100);
    $tmb->save($photo_dir.'50_'.$image_rename.$res_type);

    //Создание уменьшеной копии 100х100
    $tmb = new thumbnail($photo_dir.$image_rename.$res_type);
    $tmb->size_auto('100x100');
    $tmb->jpeg_quality(100);
    $tmb->save($photo_dir.'100_'.$image_rename.$res_type);

    $image_rename = $db->safesql($image_rename);
    $res_type = $db->safesql($res_type);

    фотки все сохранились у нас в каталоге фото

    затем выводим информацию на стену, а именно выводим наше новое фото

    $wall_text = "<div class=\"profile_update_photo\">
    <a href=\"\" onClick=\"Photo.Profile(\'{$user_id}\', \'{$image_rename}{$res_type}\'); return false\">
    <img src=\"/uploads/users/{$user_id}/photo/main_photo_{$image_rename}{$res_type}\" style=\"margin-top:3px\"></a>
    </div>";

    и обновляем имя нашей фотки в базу данных
    $db->query("UPDATE `".PREFIX."_users` SET avatar = '{$image_rename}{$res_type}', wall_id = '{$dbid}' WHERE user_id = '{$user_id}'");

    а как сделать чтоб выводились старые фотки из каталога st? и чтоб старые фотки сохранялись в базе данных в строчке pred_avatar?
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    А вы по-русски, по шагам, напишите, что вы хотите сделать, тогда и на php сможете. Ален Голуб в своей книге "Правила программирования на C/C++" сказал: "если вы не можете выразить что-то на человеческом языке, не сможете и на C++".