---
# System prepended metadata

title: Добавление фотографий

---

# Создание фоток


## SQL

``` sql
select "ID_ARTIST",
    "NICKNAME",
    "DESCRIPTION",
    "MIMETYPE",
    "FILENAME",
    apex_util.prepare_url(
        p_url => 'f?p=' || :app_id || ':5:' || :app_session || '::::P5_ID_ARTIST:' || ID_ARTIST
    ) icon_link,
    decode(
        nvl(dbms_lob.getlength(IMAGE), 0),
        0,
        null,
        '<img alt=" ' || NICKNAME || ' " title=" ' || NICKNAME || ' " style="border: 2px;
         -moz-border-radius: 4px; -webkit-border-radius: 4px;" ' || 'src=" ' || apex_util.get_blob_file_src('P5_IMAGE', ID_ARTIST) || ' " height="75"
         width="75" />'
    ) detail_img,
    apex_util.get_blob_file_src('P5_IMAGE', ID_ARTIST) detail_img_no_style
from "ARTISTS"
```

## Делаю

Для:

```sql
select "ID_ALBUM",
    "NAME_ALBUM",
    "DATE",
    sys.dbms_lob.getlength("IMAGE") "IMAGE",
    "MIMETYPE",
    "FILENAME"
from "ALBUM"
```

Это:

```sql
select "ID_ALBUM",
    "NAME_ALBUM",
    "DATE",
    "MIMETYPE",
    "FILENAME",
    apex_util.prepare_url(
        p_url => 'f?p=' || :app_id || ':3:' || :app_session || '::::P3_ID_ALBUM:' || ID_ALBUM
    ) icon_link,
    decode(
        nvl(dbms_lob.getlength(IMAGE), 0),
        0,
        null,
        '<img alt=" ' || NAME_ALBUM || ' " title=" ' || NAME_ALBUM || ' " style="border: 2px;
         -moz-border-radius: 4px; -webkit-border-radius: 4px;" ' || 'src=" ' || apex_util.get_blob_file_src('P3_IMAGE', ID_ALBUM) || ' " height="75"
         width="75" />'
    ) detail_img,
    apex_util.get_blob_file_src('P3_IMAGE', ID_ALBUM) detail_img_no_style
from "ALBUM"
```
<!-- 
Музыка:

```sql
select 
    MUSIC.ID,
    sys.dbms_lob.getlength("TRACK")"TRACK",
    "BTRACK",
    "MIMETYPE",
    "FILE_NAME",
    "LAST_UPDATE",
    apex_util.prepare_url(p_url=>'f?p='||:app_id||':25:'||:app_session||
             '::::P25_ID:'|| MUSIC.ID) track_link,
 decode(nvl(dbms_lob.getlength(TRACK),0),0,null,
    '<audio controls >  <source src="' || apex_util.get_blob_file_src('P25_TRACK', MUSIC.ID) || '" type="audio/mpeg"> </audio>'
    )    detail_track,
    apex_util.get_blob_file_src('P25_TRACK',MUSIC.ID) detail_track_no_style
from "MUSIC"
```

test
```sql
-- select "SONG_ID","NAME_SONG",
-- sys.dbms_lob.getlength("TRACK")"TRACK","MIMETYPE","FILENAME",sys.dbms_lob.getlength("COVER")
-- "COVER","COVER_MIMETYPE","COVER_FILENAME"from "SONGS"

select "SONG_ID",
    "NAME_SONG",
    "MIMETYPE",
    "FILENAME", 
apex_util.prepare_url(p_url=>'f?p='||:app_id||':9:'||:app_session|| '::::P9_SONG_ID:'|| SONG_ID) track_link,
 decode(nvl(dbms_lob.getlength(TRACK),0),0,null,
    '<audio controls >  <source src="' || apex_util.get_blob_file_src('P9_TRACK', SONG_ID) || '" type="audio/mpeg"> </audio>'
    )    detail_track,
    apex_util.get_blob_file_src('P9_TRACK', SONG_ID) detail_track_no_style
    "COVER_MIMETYPE",
    "COVER_FILENAME",
    apex_util.prepare_url(
        p_url => 'f?p=' || :app_id || ':9:' || :app_session || '::::P9_SONG_ID:' || SONG_ID
    ) icon_link,
    decode(
        nvl(dbms_lob.getlength(COVER), 0),
        0,
        null,
        '<img alt=" ' || NAME_SONG || ' " title=" ' || NAME_SONG || ' " style="border: 2px;
         -moz-border-radius: 4px; -webkit-border-radius: 4px;" ' || 'src=" ' || apex_util.get_blob_file_src('P9_COVER', SONG_ID) || ' " height="75"
         width="75" />'
    ) detail_img,
    apex_util.get_blob_file_src('P3_IMAGE', SONG_ID) detail_img_no_style
from "SONGS"
```
 -->
## Скрываю колонки

Оставляю Detail Img

## ICON VIEW

| APEX             | Столбцы                  |
|------------------|--------------------------|
| Link Column      | ICON_LINK                |
| Source Column    | DETAIL_IMG_NO_STYLE      |
| Label Column     | NAME_ALBUM               |
| Image Attributes | width="200" height="200" |

## DETAIL VIEW

TODO

## Настройка страницы отчёта

TODO

# Cтраницы формы

## Настройка страницы формы

<!-- **DIALOG:**
Maximum Width 1000 -->


**CSS:**

Inline CSS

```css
img {
   width: 100%; 
   max-width: 100%; 
   height: auto;
}
```


## Настройка колонки P$_IMAGE

**STORAGE:**
| APEX             | Название колонок |
|------------------|------------------|
| MIME Type Column | MIMETYPE         |
| Filename Column  | FILENAME         |

## Добавление фото второй колонкой (Область изображения)

Components -> Create region
Переносим созданный регион выше формы (или делаем **Layout**.Sequence = 5)

**Appearance:**
CSS Classes = imageItem

**Server-side Condition:**
Type = Function Body

```sql
declare
begin
  if :P3_ID_ALBUM is not null then
    for c1 in (select nvl(dbms_lob.getlength(IMAGE),0) A from ALBUM where ID_ALBUM = :P3_ID_ALBUM)
    loop
       if c1.A > 0 then
          return true;
       end if;
    end loop;
  end if;
  return false;
end;
```

### Для отображения в две колонки в элементе формы:

**Layout:**
Start New Row = False

### Создаём  Page Item, для отображения фото, как потомок этого региона (области изображения)

Делаем отображение изображения, затем

**Source:**
| Apex        | Делаем         |
|-------------|----------------|
| Form Region | Выбираем форму |
| Column      | IMAGE          |
| Data Type   | BLOB           |


**Server-side Condition**
Type = Rows returned
```sql
SELECT mimetype from ALBUM 
WHERE ID_ALBUM = :P3_ID_ALBUM AND mimetype like 'image%'
```

### Создаём кнопу, для удаления фото, как потомок этого региона  (области изображения)

**Identification:**
Button Name = DELETE_IMG
Label = Удалить фото

**Layout**
Region = Обложка альбома
Position = Copy

**Appearance:**
Button Template = Icon
Hot = True
Icon = fa-trash

**Behavior:**
Action = Redirect to URL
Target = javascript:apex.confirm('Вы уверены, что хотите удалить это изображение? Если вы продолжите, оно больше не будет доступно для просмотра другими пользователями.','DELETE_IMG');

### Создаём процесс для кнопки

Processing -> Create Process

**Identification:**
Name = Delete Image

**Source:**

```sql
update ALBUM
set IMAGE = null,
    MIMETYPE = null,
    FILENAME = null
where ID_ALBUM = :P3_ID_ALBUM;
```

**Execution:**
Sequence = 15

**Success Message:**
Изображение удалено

**Server-side Condition:**
When Button Pressed = DELETE_IMG




# Кнопка - ссылка
class="t-Button t-Button-hot t-Button-stretch t-Button-simple t- t-Button-small"



# Телефон

8 977 179 17 43
999G999G999G999G999G999G9G999G999G99G90
