написал такой вот скрипт для вывода альбома Код (Text): <a href="/albums{uid}_{aid}" onClick="Page.Go(this.href); return false" id="albums_name_{aid}"><div class="albums_name_page">{name}</div></a> <a href="/albums{uid}_{aid}" onClick="Page.Go(this.href); return false" id="albums_name_{aid}"><div class="caption_albums"> сам скрипт Код (Text): //* Загрузка фотографии *// case "uploading": NoAjaxQuery(); $aid = intval($_GET['aid']); $user_id = $user_info['user_id']; //Создаем альбом $aname = 'Фотографии с моей страницы'; $adescr = ''; $alhash = md5(md5($server_time).$aname.$adescr.md5($user_info['user_id']).md5($user_info['user_email']).$_IP); $date_create = date('Y-m-d H:i:s', $server_time); $db->query("INSERT INTO `".PREFIX."_albums` (user_id, name, descr, ahash, adate, position, privacy, editablea) VALUES ('{$user_info['user_id']}','Фотографии с моей страницы', '', '{$alhash}', '{$date_create}', '0', '1|1', '1')"); $aid = $db->insert_id(); $db->query("UPDATE `".PREFIX."_users` SET user_albums_num = user_albums_num+1 WHERE user_id = '{$user_info['user_id']}'"); //* Подключаем класс для фотографий *// include ENGINE_DIR.'/classes/images.php'; //* Проверка на кол-во фоток в альбоме *// if($row['photo_num'] < $config['max_album_photos']){ $uploaddir = ROOT_DIR.'/uploads/users/'; //* Если нет папок юзера, то создаём их *// if(!is_dir($uploaddir.$user_id.'/albums', 0777)){ @mkdir($uploaddir.$user_id.'/albums', 0777 ); @chmod($uploaddir.$user_id.'/albums', 0777 ); } //* Если нет папки альбома, то создаём её *// $album_dir = ROOT_DIR.'/uploads/users/'.$user_id.'/albums/'.$aid.'/'; if(!is_dir($album_dir)){ @mkdir($album_dir, 0777); @chmod($album_dir, 0777); } //* Разришенные форматы *// $allowed_files = array('jpg', 'jpeg', 'jpe', 'png', 'gif'); //* Получаем данные о фотографии *// $image_tmp = $_FILES['uploadfile']['tmp_name']; //* Оригинальное название для определения формата *// $image_name = totranslit($_FILES['uploadfile']['name']); //* Имя фотографии *// $image_rename = substr(md5($server_time+rand(1,100000)), 0, 15); //* Размер файла *// $image_size = $_FILES['uploadfile']['size']; //* Формат файла *// $type = end(explode(".", $image_name)); //* Проверяем если, формат верный то пропускаем *// if(in_array($type, $allowed_files)){ if($image_size < 5000000){ $res_type = '.'.$type; //* Директория куда загружать *// if(move_uploaded_file($image_tmp, $album_dir.$image_rename.$res_type)) { //* Создание оригинала для стены *// $tmb = new thumbnail($album_dir.$image_rename.$res_type); $tmb->size_auto(770); $tmb->jpeg_quality(95); $tmb->save($album_dir.'o_'.$image_rename.$res_type); //* Создание уменьшеной копии 50х50 *// $tmb = new thumbnail($album_dir.$image_rename.$res_type); $tmb->size_auto('50x50'); $tmb->jpeg_quality(97); $tmb->save($album_dir.'50_'.$image_rename.$res_type); //* Создание уменьшеной копии 100х100 *// $tmb = new thumbnail($album_dir.$image_rename.$res_type); $tmb->size_auto('100x100'); $tmb->jpeg_quality(97); $tmb->save($album_dir.'100_'.$image_rename.$res_type); //* Создание уменьшеной копии для обложки альбома 278x226 *// $tmb = new thumbnail($album_dir.$image_rename.$res_type); $tmb->size_auto('278x226px'); $tmb->jpeg_quality(90); $tmb->save($album_dir.'c_'.$image_rename.$res_type); $image_rename = $db->safesql($image_rename); $res_type = $db->safesql($res_type); //* Создание уменьшеной копии 182х182 *// $tmb = new thumbnail($album_dir.$image_rename.$res_type); $tmb->size_auto('182x182'); $tmb->jpeg_quality(100); $tmb->save($album_dir.'182_'.$image_rename.$res_type); $image_rename = $db->safesql($image_rename); $res_type = $db->safesql($res_type); $date = date('Y-m-d H:i:s', $server_time); //* Генерируем position фотки для "обзора фотографий" *// $position_all = $_SESSION['position_all']; if($position_all){ $position_all = $position_all+1; $_SESSION['position_all'] = $position_all; } else { $position_all = 100000; $_SESSION['position_all'] = $position_all; } //Вставляем фотографию $db->query("INSERT INTO `".PREFIX."_photos` (album_id, photo_name, user_id, date, position) VALUES ('{$aid}', '{$image_rename}{$res_type}', '{$user_id}', '{$date}', '{$position_all}')"); //* Проверяем на наличии обложки у альбома, если нету то ставим обложку загруженную фотку *// if(!$row['cover']) $db->query("UPDATE `".PREFIX."_albums` SET cover = '{$image_rename}{$res_type}' WHERE aid = '{$aid}'"); $db->query("UPDATE `".PREFIX."_albums` SET photo_num = photo_num+1, adate = '{$date}' WHERE aid = '{$aid}'"); $img_url = $config['home_url'].'uploads/users/'.$user_id.'/albums/'.$aid.'/c_'.$image_rename.$res_type; //* Добавляем на стену *// $row = $db->super_query("SELECT user_sex FROM `".PREFIX."_users` WHERE user_id = '{$user_id}'"); if($row['user_sex'] == 2) $sex_text = 'обновила'; else $sex_text = 'обновил'; $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}/albums/{$aid}/o_{$image_rename}{$res_type}\" style=\"margin-top:3px\"></a></div>"; $db->query("INSERT INTO `".PREFIX."_wall` SET author_user_id = '{$user_id}', for_user_id = '{$user_id}', text = '{$wall_text}', add_date = '{$server_time}', type = '{$sex_text} фотографию на странице:'"); $dbid = $db->insert_id(); $db->query("UPDATE `".PREFIX."_users` SET user_wall_num = user_wall_num+1 WHERE user_id = '{$user_id}'"); //* Добавляем в ленту новостей *// $db->query("INSERT INTO `".PREFIX."_news` SET ac_user_id = '{$user_id}', action_type = 1, action_text = '{$wall_text}', obj_id = '{$dbid}', action_time = '{$server_time}'"); echo $config['home_url'].'uploads/users/'.$user_id.'/albums/'.$aid.'/'.$image_rename.$res_type; mozg_clear_cache_file('user_'.$user_id.'/profile_'.$user_id); mozg_clear_cache(); } else echo 'bad'; } else echo 'big_size'; } else echo 'max_img'; } else echo 'bad_format'; die(); break; пытаюсь сделать альбомы как в вк, суть в том что мой альбом создается с названием "фотографии с моей страницы" проблема в том что aid это id альбома он задается через автоинкремент, для обычных альбомов он работает отлично, а как сделать наподобие в вк? смотрел у них сделано так т.е при добавлении фото на аву у них создается папка на сервере с названием 0 и добавляется в строку aid в бд тож 0 в итоге получается album77791555_0, где id это ид пользователя т.е 77791555 а _0 это сам альбом т.е aid, ну у меня из за автоинкремента не получается повторять для каждого пользователя значения 0, как можно решить эту проблему?
ноль это может быть "виртуальный" альбом с мордашками пользователя. когда добавляется фото в альбом у него есть юзер-владелец (юид) и ид-альбома (аид) хранения. так вот если это пара юид-ноль то речь идет о фотках пользователя. я себе так понимаю эту логику. зачем так делано? например чтоб не плодить лишнюю альбомную запись для каждого зарегистрированного юзера.
я сделал так {uid} это ид пользователя {aid} это ид альбома, при создании альбома создается папка альбома на сервере например альбом 7 папка на сервере (где хранятся фото) тоже 7, ну как то хочется сделать чтоб у каждого пользователя создавалась папка 0 и aid тож ноль или как то так, так просто удобней, а вот как быть с aid в бд это ведь автоинкремент... Добавлено спустя 2 минуты 37 секунд: или может надо условие в tpl прописать? например создать в бд категорию categories, а в tpl прописать условие только вместо {aid} будет {cat} например, ну тогда каша будет( Добавлено спустя 3 минуты 27 секунд: смотрел в одноклассниках у них почти также id=637777704777&bid=637555607877&t=13, где id это номер пользователя в соц сети, bid это тот же {aid} а t это тип альбома
структуру базы я уже подсказал. у изображения должно быть пользователь-альбом. если альбом ноль значит это мордашки юзера. создавать каталоги на сервере можно но не нужно имхо.
у изображения должно быть пользователь-альбом. если альбом ноль значит это мордашки юзера. если честно я не совсем вас понял, мордашка это и так фотка, а причем тут пользователь - альбом
это о структуре базы данных. утрируем: юзеры - июд, логин, пароль (минимальный набор полей идентифицирующий пользователя) альбомы - аид, юид-владельца (аюид), иид-обложки (иидо), название (минимальный адекватный набор описания альбома) имагесы - иид, юид-владельца (июид), альбом изображения (иаид), путь-к-файлу, заголовок (юзабельный минимум) запросы: альбомы пользователя: всё из альбомов по юид'у и джойним все из имагесов по паре иид-иидо имагесы в альбоме: все из имагесов по аиду "изображения на странице пользоватея": (то что я назвал мордашками): всё из имагесов по июд'у где аид ноль проверка хранилища: все пути из имагесов и так далее... это не решает задачи шаринга изображений "как в соцсетях" но вполне реализует некий простенький фотохостинг.
да вы правы, я ща пересмотрел как сделано в вк, получается у них действительно 0 это виртуальный альбом с мордашками пользователей, только интересно как он разработан