Systém komentářů pomocí jQuery a Ajax.

 2012-10-27 00:00:00
 Dmitry Burobin

Dnes vytvoříme systém komentářů s automatickou kontrolou vstupních dat pomocí technologie Ajax a přidáváním nového komentáře s použitím jQuery bez znovunačtení stránky.

Série článků:
1) Systém komentářů pomocí jQuery a Ajax.
2) Lajkování neboli karma u komentářů.
3) Strankování.

Vytvoření tabulky a připojení k databázi.

Vytvoříme si tabulku comments, do které budeme ukládat: identifikátor komentáře ( id ), identifikátor rodičovského komentáře ( parent_id ), jméno ( name ), text komentáře ( text ) a datum přidání komentáře ( date ).

CREATE TABLE `comments` (
`id` INT ( 5 ) NOT NULL AUTO_INCREMENT,
`parent_id` INT ( 5 ) NOT NULL,
`name` VARCHAR ( 255 ) NOT NULL,
`komentar` TEXT,
`date` DATETIME,
PRIMARY KEY(`id`)
)ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci

Taktéž si vytvořte soubor db.php, pro připojení k databázi.
<?php
$DBSERVER 'localhost'//server, který bude použít pro navázáníspojení s DB 
$DBUSER 'root'//Váš mysql login, nejspíš je stejný jako u mě pro localhost, tudiž root 
$DBPASS '****'//heslo, které jste zadaval při instalaci MySQL 

$DB 'test'//databáze, s kterou budeme pracovat 

//navazení spojení pomoci mysql_connect  
$link mysql_connect($DBSERVER$DBUSER$DBPASS)  or die("Could not connect: " mysql_error()); 
//vybírame databázi 
mysql_select_db($DB$link) or die ('Can\'t use test : ' mysql_error()); 
//řekněme MySQL, že všechná data jsou ve formatu UTF-8 
mysql_query("SET NAMES UTF8");
?>

index.php

Hlavní stránka bude obsahovat formulář pro přidávání komentářů s polem pro jméno, zprávu a skryté pole, do kterého budeme ukálát identifikátor rodičovského komentáře, pokud někdo bude odpovídat na nějaký komenář. Soubor index.php vypadá takto:

<?php
/*Soubor pro vybírání komentářů z databáze*/
require_once 'comment.php';
?>
<!DOCTYPE html>
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">

<
head>
    <
title>Systém komentářů.</title>
    <
meta charset="utf-8" >
    
    <
link rel="stylesheet" href="style.css"> <!-- soubor se styly -->
    <
script src="jquery-1.7.1.min.js"></script> <!-- připojení jquery -->
    <script src="comment.js"></script> <!-- funkce potřebné pro přidávání komentářů -->
    
</head>
<body>
<ul id="commentWrapper">
<?php
/*Zde v proměnné $comments jsou komentáře*/
echo $comments;
?>
<!-- formulář pro přidávání komentářů -->
</
ul>    
    <
div id="commentBox">
        <
input class="validate" type="text" name="name" >
        <
input id="parent" type="hidden" name="parent_id" value="">
        <
div class="commentText">
            <
textarea name="text"></textarea>
        </
div>
        <
button>Přidat</button><img class="loader" src="loader.gif">
    </
div>
</
body>
</
html>

Styly a knihovna jQuery

Pro správné fungování potřebujeme připojit knihovnu jQuery. Tu buď stáhnete z oficiálního webu nebo z archivu s tímto článkem. Pak, aby komentáře líp vypadali přidáme styly, nic složitého v nich není, proto je nebudu popisovat:

body
{
    
margin:0;
    
padding:0;
}
ulli
{
    list-
style-type:none;
}
.
loader
{
    
display:none;
}
#commentBox
{
    
width:400px;
    
padding:10px;
}
#commentBox input
{
    
width:250px;
    
height:25px;
    
padding0 5px;
    
margin:5px;
    
bordersolid 1px #ccc;
    
background:#f1f1f1 url(bg_input.png) no-repeat;
    
font400 12pt/14pt Ume Gothic O5;
}
#commentBox textarea
{
    
width:250px;
    
height:100px;
    
margin5px;
    
padding5px;
    
bordersolid 1px #ccc;
    
background:#f1f1f1 url(bg_koment.png) no-repeat;
    
font400 12pt/14pt Ume Gothic O5;
}
#commentBox button
{
    
height:30px;
    
width:85px;
    
margin-left183px;
    
margin-top:0px;
    
font:700 12pt/14pt Ume Gothic O5;
}
#commentWrap
{
    
width:350px;
    
padding:10px;
    
padding-bottom:3px;
    
margin:10px;
    
border1px solid #ccc;
    
border-radius:10px;
    
background:#f7f7f7;
}
#commentWrap .komentar
{
    
padding:5px;
    
padding-left:0px;
    
border-top:1px solid #ccc;
    
margin-bottom:10px;
    
font:400 12pt/14pt Times New Roman;
}
#commentWrap .replay
{
    
margin-left:270px;
    
font:700 10pt/12pt Ume Gothic O5;
}
#commentWrap a
{
    
text-decoration:none;
}
#commentWrap .commentName
{
    
font:700 10pt/12pt Ume Gothic O5;
}
#commentWrap .commentDate
{
    
font:400 11pt/13pt Times New Roman;
}
.
repName
{
    
font:400 12pt/14pt Times New Roman;
    
font-style:italic;
}
.
repText
{
    
font:700 10pt/12pt Ume Gothic O5;
}
.
repDate
{
    
font:400 9pt/11pt Times New Roman;
    
font-style:italic;
}

comment.php

Tento soubor je určen pro vybírání dat z databáze a vkládání těchto dat do šablony.

<?php
// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce ) 
require_once 'db.php';

// Vybereme komentáře z databáze
$query mysql_query("
         SELECT `id`,`parent_id`,`name`,`komentar`, 
         DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add
         FROM `comments` ORDER BY `id` ASC 
         "
);
         
// Pokud při vykonání příkazu nastané chyba vypišeme ji
if(!$query) { echo mysql_error() . " - " mysql_errno(); }
else {

// Jinak pomocí cyklusu projdeme všechny záznamy v tabulce
        
while($result mysql_fetch_assoc($query))
        {
            
// a uložíme je do pole $data  
            
$data[$result['id']] = $result;
        }

// Funkce pro vkládání dat ( komentářů ) do šablony
function commentsToTemplate($comment)
{
// $comment - pole komentáře - id, parent_id, name, text, date 
    
// Zapneme bufferování výstupu, aby šablona nebyla zobrazená v místě volání funkce
    
ob_start();  
      
// Připojíme šablonu comment_template.php, do které vložíme data z pole $comment
    
require_once 'comment_template.php';                     
  
// Získáváme obsah bufferu jako řetězec   
    
$comments_string =  ob_get_contents(); 

// Vymažeme všechno z bufferu
    
ob_end_clean();

// Vrácíme komentář jako řetězec   
    
return $comments_string;    
}

// Funkce pro zpracování pole $data, které
// bude rozděleno do jednotlivých komentářů a odesláno funkci 
// commentsToTemplate
function commentsString($data)
{
    foreach(
$data as $w
    {
        
$string .= commentsToTemplate($w);
    }
 
return 
$string
}  

// proměnná $comments obsahuje naše komentáře, které zobrazujeme na hlavní stránce
$comments commentsString($data);

// vynulujeme proměnnou $data 
$data null;
}
?>

comment_template.php

Toto je vlastně šablona jednotlivého komentáře.

<?php
// Do této šablony se načítají data z pole $data, která jsou odesláná funkci commentsToTemplate
echo '<li id="comment'.$comment['id'].'">
    <div id="commentWrap">'
;
        
// Pokud existuje parent_id, pak zobrazíme, že se jedna o odpověď
        
if($comment['parent_id']!=0)
        {
// Vybereme z DB jméno a datum rodičovského komentáře
            
$q mysql_query("SELECT `name`, DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add FROM `comments_my` WHERE `id`='".$comment['parent_id']."'");
            
$r mysql_fetch_assoc($q);
            echo 
'<span class="repText">Odpověď na komentář</span> <span class="repName">
            '
.$r['name'].'
            </span> <span class="repText">from</span> <span class="repDate">
            '
.$r['date_add'].'
            </span><br>'
;
        }
        
// Zobrazíme jméno a datum přidání
echo    '<span class="commentName">'.$comment['name'].'</span> - <span class="commentDate">'.$comment['date_add'].'</span>
        <div class="komentar">
<!--Zobrazíme text komentáře-->
            '
.$comment['komentar'].'
        </div>
<!--Pokud zmačkneme na tento odkaz, pak se do skrýteho pole s názvem parent_id přidá
identifikátor tohoto komentáře. 
Použil jsem zde JS událost onClick, tzn. pokud je tlačítko zmačknuté, pak najdi prvek s 
id parent ( což je skrýte pole parent_id ) a do hodnoty přidej id komentáře, na který chcete odpovědět-->
        <a class="replay" href="javascript:;"
        onClick="document.getElementById(\'parent\').value='
.$comment['id'].';">Odpovědět</a>
    </div>
</li>'
;
?>

comment.js

Tento soubor je určen pro odesílaní dat na server a přidávání do databáze

$(document).ready(function(){
    
// Objekt commentBox bude obsahovat data pro odesílání na server
    
var commentBox = {};
    
// Po kliknutí na tlačítko přidat      
     
$('#commentBox button').live('click',function(){
         
// Do objektu commentBox bude přidána hodnota skrýteho pole input s názvem parent_id,
// které obsahuje id rodičovského komentáře a pokud je prázdné tak bude 0, což znamená, že
// se jedná o nový komentář bez reakci na něj ( toto se bude ověřovat až odešleme data na server ).   
        
commentBox.parent_id = $('#commentBox').find("input[name='parent_id']").val();
        
// Taktéž přidáme do objektu commentBox hodnotu pole name a zprávu
        
commentBox.name = $('#commentBox').find("input[name='name']").val();        
        
commentBox.text = $('#commentBox').find("textarea").val();
// Abyste to lépe pochopili syntaxe toho, jak přidáváme hodnoty do objektu je:
// Objekt.název_proměnné = hledáme input nebo textarea.hodnota pole

// Funkce pro odesílání dat na server        
        
sendData();
     });
    

function 
sendData()
{
// Najdeme tlačítko schováme jej a zobrazíme loader ( ten si můžete stáhnout z archivu )
    
$('#commentBox').find('button').hide().next().show();

// Odešleme    data metodou post na server
    
$.post(
// Soubor, ve kterém se provádí ověřování dat a přidávání komentářů     
        
"addkoment.php",
// Objekt s proměnnými (parent_id, name a text)
        
commentBox,
        function(
data){
// Pokud jsou nějaka data, to znamená, že nastala chyba
            
if(data)
            {
// Převedeme tento řetězec JSON do objektu JS
                
data = $.parseJSON(data);
                
// Vytvoříme proměnnou errors, která bude obsahovat název chyby
                
var errors '';

// Použijeme cyklus pro zobrazení všech chyb najednou.
// Použil jsem tuto konstrukci, protože nejprvé jsem zobrazoval všechny chyby, ale
// nakonec jsem to změnil a teď se bude zobrazovat jenom jedna konkretní chyba     
// Kdybyste chtěli zobrazit všechny chyby tak použijte konstrukci
// errors += val+'\n'; - každá chyba se zobrazí na samostatném řádku.
// i - obsahuje název chybného pole a val - popis chyby
            
                
$.each(data, function(ival)
                {
                    
errors += i;
                });

// Uložil jsem do proměnné errors jenom název chybného pole a
// cyklusem switch procházim všechny varianty a přidávam červený rámeček 
// pokud pole je prázdné nebo jestli komentář nebyl přidan tak zobrazim hlášení                    
                   
switch (errors
                   {
                      case 
'name':
                        $(
'#commentBox').find("input[name='name']").css('border','2px solid red');
                        break
                      case 
'text':
                        $(
'#commentBox').find("textarea").css('border','2px solid red');
                        break
                      case 
'not_add':
                        
alert('Komentář nebyl přidan.')
                        break
                      default:
                        
alert('Něco je špatně')
                  }

// Najdeme loader ( ten si můžete stáhnout z archivu ) schováme jej a zobrazíme tlačítko přidat     
                
$('#commentBox').find('button').show().next().hide();

// Jinak, pokud žadná chyba nenastala, tak voláme funkci addComment, která zobrazí
// komentář bez znovunačtení stránky a vynuluje hodnoty vstupních poli
            
} else {
                
addComment();        
            }
        }
    
    )

}


function 
addComment()
{
// Na konec prvků s id commentWrapper ( což je ul ) přidame tag <li></li>,
// ve kterém se bude nacházet nový komentář
    
$("#commentWrapper").append('<li></li>');

// Najdeme poslední tag <li>, který jsme teď vytvořili a
// načteme do něj poslední komentář
    
$("#commentWrapper li:last").load('new_comment.php');
// Najdeme loader ( ten si můžete stáhnout z archivu ) schováme jej a zobrazíme tlačítko přidat     
    
$('#commentBox').find('button').show().next().hide();

// Vynulujeme hodnoty vstupních poli
    
$('#commentBox input').val('');
    $(
'#commentBox textarea').val('');

}


});

addkoment.php

Tento skript zpracovává data poslána na server pro zpracování.

<?php
// Ověříme, zda se jedna o odeslána POST data nebo si člověk jen tak otevřel tuto stránku
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {

// Pokud ano, pomocí funkci sleep přidame efekt zpoždění, abyste 
// viděl loader, jinak, protože pracujeme na lokálním serveru
// se ten loader hned schová  
     
sleep(2);

// Ověříme vstupní data     
// Pokud je pole name nebo textové pole prázdné do pole $error uložíme text chyby
// ukončíme skript a odešleme tuto chybu v JSON formátu  
     
if(!isset($_POST['name']) OR empty($_POST['name']))
     {
        
$error['name'] = "Zadejte jméno.";
        exit(
json_encode($error));
     } else {
        
$name htmlspecialchars(stripslashes(trim($_POST['name'])));
     }
     
     if(!isset(
$_POST['text']) OR empty($_POST['text']))
     {
        
$error['text'] = "Zadejte zprávu.";
        exit(
json_encode($error));
     } else {
        
$text stripslashes(htmlspecialchars(trim($_POST['text'])));
     }
     
// V tomto případě, když parent_id je prázdné pole tak mu přiřadime hodnotu 0
// to znamená, že se jedná o nový komentář, který není odpovědí na něčí jiný  
     
if(!isset($_POST['parent_id']) OR empty($_POST['parent_id']))
     {
        
$parent_id 0;
     } else {
        
$parent_id stripslashes(htmlspecialchars(trim($_POST['parent_id'])));
     }
     
// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce )  
     
require_once 'db.php';
     
// Přidame komentář do databáze a vrátíme false, tzn.
// že chyba nenastala a komentář byl přidán.
     
$q mysql_query("
     INSERT INTO `comments`(`parent_id`,`name`,`komentar`,`date`)
     VALUES('"
.$parent_id."','".$name."','".$text."', NOW())
     "
);
     if(!
$q) { $error['not_add'] = "Komentář nebyl přidan."; exit(json_encode($error));}
     else { exit(
false); }

}
?>

new_comment.php

V tomto souboru vybírame poslední komentář, abysme ho následně zobrazili po úspěšnem ověření vstupních dat.

<?php
// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce ) 
require_once 'db.php';
// Vybereme maximální ( poslední přidáný ) id
$max mysql_query("SELECT MAX(`id`) FROM `comments_my`");
// Pak vybereme všechny související údaje s tímto identifikátorem
$query mysql_query("
         SELECT `parent_id`,`name`,`komentar`, 
         DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add
         FROM `comments_my` WHERE `id` = '"
.mysql_result($max,0)."'
         "
);
$comment mysql_fetch_assoc($query);

// A stejně, jak jsme zobrazovali komentáře před tím, zobrazíme poslední přidáný
echo '<li id="comment'.mysql_result($max,0).'">
    <div id="commentWrap">'
;
        
        if(
$comment['parent_id']!=0)
        {
            
$q mysql_query("SELECT `name`, DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add FROM `comments_my` WHERE `id`='".$comment['parent_id']."'");
            
$r mysql_fetch_assoc($q);
            echo 
'<span class="repText">Odpověď na komentář</span> <span class="repName">
            '
.$r['name'].'
            </span> <span class="repText">from</span> <span class="repDate">
            '
.$r['date_add'].'
            </span><br>'
;
        }
        
echo    
'<span class="commentName">'.$comment['name'].'</span> - <span class="commentDate">'.$comment['date_add'].'</span>
        <div class="komentar">
            '
.$comment['komentar'].'
        </div>
        <a class="replay" href="javascript:;"
        onClick="document.getElementById(\'parent\').value='
.mysql_result($max,0).';">Odpovědět</a>
    </div>
</li>'
;
?>

Závěr

Probrali jsme, jak můžeme zpracovávát formuláře bez znovunačtení stránky. Doufám, že se Vám tento článek líbil a byl pro Vás přínosný.

Systém Orphus
Napište komentář.
Celkem komenrářů(10301)
Ganniciwesty - 2018-02-11  12:13:12
 Заработок в интернете с выводом денег стал реальным! Заходим на сайт, регистрируемся, получаем одну бесплатную птичку, птица несет яйца круглосуточно, которые мы в свою очередь продаем или инвестируем средства в новых птиц. Зачисления видны на табло баланса. Вы можете вывести средства на карточку или электронный счет. Не нужно заходить на сайт ежедневно - заходите в свободное время, хоть раз в месяц. Собирайте яйца и продавайте. Администрация сайта дарит возможность, получить более 10 птиц бесплатно, выполнив простые действия по регистрации на сторонних ресурсах, после чего ваши средства на игровом балансе начнут накапливаться гораздо быстрее. Зарегистрируйтесь на сайте: http://qps.ru/JpVQk
Canadahob - 2018-02-11  11:15:49
 Hey! This is my 1st comment here so I just wanted to give a quick shout out and say I truly enjoy reading through your posts. Can you recommend any other blogs/websites/forums that go over the same subjects? Many thanks!
[url=http://canadianpharmacyntx.com/]canadian pharmacy online[/url]
canadian online pharmacy
canadian pharmacy meds
Canadianbenty - 2018-02-11  10:56:03
 I am extremely inspired along with your writing abilities and also with the structure to your blog. Is this a paid subject matter or did you modify it yourself? Either way stay up the nice quality writing, it's rare to look a great weblog like this one today..
[url=http://canadianpharmacymsn.com/]canadianpharmacy[/url]
canada pharmacy online
canada online pharmacies
Canadahob - 2018-02-11  10:05:06
 Hurrah, that's what I was seeking for, what a stuff! present here at this weblog, thanks admin of this web site.
[url=http://canadianpharmacyntx.com/]canadian pharmacies that ship to the us[/url]
discount canadian pharmacies
highest rated canadian pharmacies
BrandiNah - 2018-02-11  09:43:23
 Ни для кого не секрет, что люстра занимает центральное место в любом интерьере. Она способна подчеркнуть стиль интерьера, и сделать даже самую обычную комнату по-настоящему роскошной и элегантной.[url=http://моялюстра.рф/shop/lyustry]купить люстру в москве[/url]

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

Однако, выбрать люстру не так-то просто, как кажется на первый взгляд. Отечественный рынок буквально переполнен огромным ассортиментом люстр, разнообразных по видам и стилям. Мы рекомендуем Вам посетить наш интернет магазин люстр, светильников и [url=http://моялюстра.рф/shop/svetilniki]купить светильник светодиодный потолочный[/url] по очень выгодным уловиям с гаранчией качества от брендовых производителей, каждая продукция сертефицирована и имеет уникальный дизайн для любого интерьера.

Будем рады видеть Вас в нашем [url=http://моялюстра.рф/]интернет магазин светильников и люстр в Москве[/url]!;)
Canadianbenty - 2018-02-11  09:38:18
 Paragraph writing is also a fun, if you be familiar with then you can write otherwise it is complex to write.
[url=http://canadianpharmacymsn.com/]no 1 canadian pharcharmy online[/url]
legitimate canadian mail order pharmacies
best canadian pharmacies online
Canadahob - 2018-02-11  08:53:47
 Magnificent beat ! I would like to apprentice at the same time as you amend your website, how can i subscribe for a blog website? The account aided me a appropriate deal. I had been tiny bit familiar of this your broadcast offered vivid clear concept
[url=http://canadianpharmacyntx.com/]canadian discount pharmacies[/url]
online canadian pharmacies
best canadian pharmacies
Canadianbenty - 2018-02-11  08:19:25
 Just desire to say your article is as surprising. The clarity in your post is just excellent and i could assume you're an expert on this subject. Fine with your permission let me to grab your feed to keep up to date with forthcoming post. Thanks a million and please carry on the enjoyable work.
[url=http://canadianpharmacymsn.com/]canadian online pharmacies[/url]
northwestpharmacy
northwest pharmacy canada
CharlesPer - 2018-02-11  07:48:43
 Учитывая указанное, есть два пути решения ситуации:решение суда о лишении родительских прав второго из родителей;Одним из вариантов финансирования импорта товаров в Украину является структура, по которой кредит предоставляется резиденту путем уплаты иностранным кредитором средств по обязательствам резидента-заемщика перед нерезидентом-экспортером, в соответствии с внешнеэкономическим договором, без зачисления этих средств на счет резидента в уполномоченном банке. Если должник не выполняет обязательства, кредитор получает право реализовать вещь и получить имущественное удовлетворение.Прошло два года, как в Гражданском кодексе РФ появилось положение о применении астрента – института ответственности за несоблюдение предписания суда. Например, в Австрии, Венгрии, Польши, США, Великобритании порог применения squeeze-out и sell-out составляет 90% голосующих акций общества, а в Люксембурге, Франции, Германии, Италии и Словакии – 95%. Срок предъявления требований кредиторами. Поскольку сведения, процессуально оформленные в протоколах допроса, не могут исповедываться доказательствами даже в соответствующем уголовном производстве, то они не могут рассматриваться наравне надлежащие доказательства в другом производстве (в частности, быть решении налогового спора). Впрочем на практике украинские банки занимали позицию, который даже быть осуществлении расчетов в Структуре с через аккредитивов, такие аккредитивы должны были являться подтверждены первоклассным банком.Так чтобы чего, собственно, нужен due diligence? А для того, сколько он дает возможность понять, во который именно будут вкладываться мелочь, то трескать какова текущая положение и на сколько дозволительно предполагать в будущем. Ясно, в такой ситуации он может предоставить собственного юриста чтобы помощи в урегулировании правовых вопросов.
юридическая помощь краснодар
[url=https://juristkrasnodar.com/uslugi/trudoviy-spory.htm]трудовые споры[/url]
https://juristkrasnodar.com/uslugi/zilichnye-spory.htm - земельные споры

Послушный лист нотариуса, ежели алименты добровольно не уплачиваются по соответствующим нотариальо удостоверенным договором. Сиречь начало, должностную инструкцию подписывает старшина структурного подразделения, в котором работает индивид; лик, которое согласовывает должностную инструкцию; работник, занимающий звание, сообразно которой составили должностную инструкцию. Дополнительный книга акций АО-правопреемника. причина правила не регулируют вопросы содержания общего имущества);Сроки действия БДЗаконодатель определяет приоритетность договоренности родителей в вопросе содержания ребенка над определением порядка содержания ребенка в суде.2.Таким образом, хоть в России законодательно не урегулирован группировка применения овербукинга, авиакомпании сообразно факту используют его. Однако повторяется снова и снова. Всетаки Законом «Относительный акционерных обществах» предусмотрено, который присоединение АО к другому АО считается завершенным с даты внесения записи в Разовый государственный реестр о прекращении такого АО. В частности, большую роль в этом играет принятый в прошлом году Закон о финансовой реструктуризации.
Canadianbenty - 2018-02-11  07:14:45
 Good article. I'm dealing with a few of these issues as well..
[url=http://canadianpharmacymsn.com/]canadian cialis[/url]
buy prescription drugs from canada
canadian pharmacies mail order
StevieNom - 2018-02-11  07:14:19
 [url=http://ico-alert.org/]new icos[/url] - active icos, discover icos
Williamjoich - 2018-02-11  07:04:16
 Свадебный ритуал четко делится на три составные части. С ними у вас появится чуть больше возможностей в случае постановочных портретовНе стоит пренебрегать и средние планы. Когда-то и я один тоже был начинающим. Отроду не надо пускаться мучиться, когда вы не знаете, каким именно повинен пребывать результат, чего вы хотите добиться в итоге. Из-за этого непросто сделать удовлетворительный кадр. Не бойтесь заниматься это! Присутствие правильно расставленных акцентах фотограф на свадьбе - второй личность после тамады. Свет помощью траву, камни, пыль во эпоха заката сделают хорошее боке. Однако друзья стоят ещё ближе благоприятель к другу и их головы чуть наклонены к центру композиции. Нужно сделать так, воеже дитя во период фотосессии чувствовал себя естественно, раскованно, чтобы ему было нравиться с вами общаться. Только традиции ЗападаНа протяжении праздника лучше не отключать фотоаппарат, беспричинно наравне интересное может произойти в любой момент. Крупные ожидание снимайте около помощи зума. Ровно это сделать? Якобы снимать “Intended Confabulation“ – вот об этом мы и решили теперь с вами поговорить. Сколько точный означает это выражение? “Love Saga“ в переводе – летопись любви, или любовная история. А искусства требует жертв! Будьте готовы к жертвам. Ученики школьного класса, студенты одной группы, общее фото коллектива предприятия… Тут советы те же, что и в пункте первом. Внимание для деталях Также будто дизайнеры стали больше уделять внимания декорированию свадьбы, аксессуарам и мелочам, фотографы стали останавливаться на этом внимание. Для этого возьмите пенопластовый лоток (поддон), какой в супермаркетах используется чтобы фасовки различных продуктов, срежьте только из четырех бортиков, и внутренней стороной прикрепите лоток с помощью скотча к направленной в потолок вспышке. Ребенку нужно задавать вопросы, чем-то привлекать его почтение, усердствовать «разговорить» его, добиться с ним контакта, взаимопонимания. ПостобработкаНи один фотоаппарат не способен создать лучший снимок. Свадебное убор чаще только вовсе не предусмотрено чтобы того, воеже в нём сажаться в машину, поэтому советую иметь камеру наготове (Фото 6-8)Фото в прыжке15. Используйте обычай третейПредставьте кадр наравне сетку 3Х3. Безвыездно её члены сидят для лужайке, поджав под себя ноги. Теперь такие вспышки встроены практически в любой фотоаппарат. Для улице было слякотно, и воеже не испачкать платье, жених нёс невесту к машине для руках. Помимо композиции, поглощать и другие изобразительные приёмы, начинать это и беспричинно ясно. Заблаговременно следует узнать у организаторов расписание, который за чем и в какое примерно время будет идти. Снимайте жениха с невестой обращенных к камере, лица обоих должны надевать четко видны. Следовательно дом играет на идею, кирпичная кладка тоже работает, а торговый бетон - нет. Это, разумеется, не очень полезный ракурс, но тогда спорить не с кем - правила теснить правила. Конструкция получило название Refle
новогодние фотосессии с детьми в студии фото
[url=https://fotograf23.ru/]фотосессия[/url]
https://fotograf23.ru/ - фотосессия с ребенком на природе осенью

15. Используйте обычай третейПредставьте кадр будто сетку 3Х3. Безвыездно её члены сидят для лужайке, поджав перед себя ноги. Сегодня такие вспышки встроены практически в всякий фотоаппарат. На улице было слякотно, и для не испачкать платье, жених нёс невесту к машине на руках. Кроме композиции, есть и другие изобразительные приёмы, начинать это и беспричинно ясно. Раньше следует испытывать у организаторов план, сколько за чем и в какое примерно время будет идти. Снимайте жениха с невестой обращенных к камере, лица обоих должны надевать четко видны. Следовательно изба играет для идею, кирпичная кладка тоже работает, а промышленный бетон - нет. Это, несомненно, не настоящий полезный ракурс, только тут спорить не с кем - правила лакомиться правила. Устройство получило имя RefleПредварительно только хочется отметить, что чтобы большинства профессиональных фотографов свадебная фотография является основным занятием. Фото 9. Только не пытайтесь никого переубедить. Возьмем, президента… Нехорошо, если для снимке довольно как его уста либо ухо (в советские времена после такой изображение «неполного» Ленина либо генсека дозволено было и срок получить. Хорошо будет, ежели сей повторение вы сделаете с широко открытой диафрагмой, и тут те профили, которые расположены дальше, будут немного размыты. Советы от Адрианы Цурцио (Adriana Curcio)И худой совет, взаперти из самых важных: вы сроду не должны сомневаться, верьте в себя и в собственные силы. уроки фотографииПредварительно самым началом праздника стоит осмотреть резервуар и продумать ракурсы и присмотреться к источникам света. Семейная фотографияReflex I-Back – это съёмная задняя пластина, которая помогает изменить подход к использованию плёнки. А вот когда гости всё сезон перемещаются, то приходится несколько побегать, для «выловить» интересные кадры. Фотографу, работающе у с детьми, отроду не стоит забывать о книга, что маленькие дети всегда очень активны. Ему нужно безвыездно общаться с моделью, ежеминутно быть с ней в контакте. Фото 13. Внешнюю вспышку с рассеивателем. Воеже для сей повторение было не лишь нравиться, только и интересно смотреть. Никто не поверит в вас, коль вы сами этого не сделаете. Удобную сумку чтобы только вышеперечисленного. Неимоверно красиво и символично. Вероятно это привлечёт уважение ребёнка к вам и вы сможете сделать портретные снимки, если маленькая форма смотрит в объектив. Снимаем love thriller: позы
RobertReura - 2018-02-11  06:17:22
 Фурнитура премиум-класса, используемые нами в производстве, самые дорогие.Нанести снимок для панель можно двумя способами: наклеив для изнаночную вид стекла виниловую плёнку с рисунком разве же с через фотопечати. Именно следовательно лестничные ограждения из стекла являются одними из самых удобных и самых практичных на современном строительном рынке. Спор в книга, что готовые полотна нельзя резать, сверлить и причинять другому механическому воздействию. Лучшие козырьки данного типа выполняются из нержавеющей стали, поскольку она обеспечивает наибольшую сохранность всей конструкции. Вид становится шершавой, мочь упасть и портить что-то сводится к абсолютному минимуму. Небольшая площадь полов в большинстве современных жилищ, расположенных в многоэтажных домах, удешевляет конечную стоимость конструкции и маломальски упрощает ее сооружение. д. Очень интересная технология – триплекс. Перила для лестниц могут примазываться к самим лестницам с через специальных коннекторов. Зараз с этим поверхность полотна довольно вечно идеально чистой, благодаря простоте ухода. Затем свою лепту в развитие идеи внес язык hi-tech, в котором стекло стало использоваться смело и повсеместно. Обычно толщина полотна такого перила чтобы лестницы составляет от тринадцати прежде девятнадцати миллиметров. Если используется сложная облицовка, то мы используем особенный клей, которому нужно дата, воеже высохнуть. Здесь не нуждаться будет проводить беспричинно называемые «мокрые» работы, а именно – цементирование, бетонирование и другие работы. Перевозка элементов лестницы осуществляется с максимальной аккуратностью, только и разгрузка. Буде необходим декоративный эффект, то в этом случае может применятся полимер, какой максимально заполняет полости промеж слоями с добавлением колирующих добавок.Косоурные лестницыСтеклянный пол на заказ: какие варианты позволительно выбратьКомната в цветах: бирюзовый, черный, серый, белый. Это дает вам возможность выбрать стеклянные перегородки на заказ, которые позволительно извлекать в шумных помещениях, включая офисы и торговые центры, а также любые другие места, где наблюдается значительная проходимость людей или работает то тож иное оборудование. Прочность, стильный лицевой облик – это только два преимущества, которыми обладают козырьки нашего производства. ), но и в жилых помещениях. Только наша общество около изготовлении лестниц и перил ради лестниц применяет не один исключительные по своему качеству материалы, но и специальное обстановка, которое позволяет изготавливать любые цель лестниц в минимальные сроки.
Шторки для ванной стеклянные раздвижные
[url=https://stekloforce.ru/catalog/steklyannaya-shtorka-dlya-vannoy]Стеклянная шторка для ванной[/url]
https://stekloforce.ru/catalog/steklyannyye-dushevyye-kabiny - фурнитура для душевых кабин из стекла москава

Словно выбрать стеклянные двери Вам надоели скучные деревянные двери и хочется чего-то нового и не обычного, тутто остановите Ваш коллекция для стеклянных дверях.Лопать вторично технология триплекс. Роликовый устройство позволяет сэкономить пространство помещения. Стекло украшается рисунком, наклеенным с задней стороны. Зеркала действительно обладают магической силой: с их через можно абсолютно изменить водовместилище: увеличить его визуально, создать эффект двойного пространства, подчеркнуть красоту конкретных элементов декора. Снова больше лестницы ценятся в сочетании с разнообразными элементами декора. Вещество для лестниц выпускается в полном соответствии с существующим стандартом ГОСТ 30698-2000.Преимущества фартуков чтобы кухни. ,Ограждения из триплекса или закаленного материала отличаются высочайшим уровнем прочности. © 4living. Толщина их может доходить нескольких сантиметров, а вид защищены специальным слоем, который предотвращает рассыпание осколков в случае механического повреждения.удобное и быстрое обслуживание лестницы;Ограждения лестниц Стеклянные двери придают интерьеру особый шик. Быть решении планировочной задачи архитекторы, учитывая в книга числе пожелания сообразно стилю и дизайну заказчиков, могут подавать реализацию того сиречь иного типа стеклянных лестниц. Вдобавок одинокий разночтение – это частичная воздаяние стандартного пола для прозрачный. Наши изделия отличный подойдут ради интерьеров различных помещений, начиная от бытовых и заканчивая общественными, в качестве великолепного средства чтобы украшения и деления пространства для условные зоны. На запевало взгляд, это можно смело назвать преимуществом, но с второй стороны, выбрать то или иное ограждение для себя может гнездиться достаточно непросто. Основание этого заключается в книга, сколько однако действия сразу же становятся достоянием всего коллектива.
Canadianbenty - 2018-02-11  06:09:53
 Fastidious answers in retu
of this query with firm arguments and describing everything on the topic of that.
[url=http://canadianpharmacymsn.com/]most reliable canadian pharmacies[/url]
canadian pharmacy uk delivery
online canadian pharmacy
GregoryWhags - 2018-02-11  05:38:05
 Офисная мебель эконом класса производится из доступных материалов, имеющих небольшую достоинство и по характеристикам не хуже мебели, которая обойдется вам в "копеечку". В офисе многие сотрудники проводят больше времени, чем дома. Кабинет руководителя считается, так говорить, лицом фирмы, он сообразно праву является основным показателем достатка и успешности всякий организации.- Барные стойки, подставки. То жрать на зоне ресепшн не стоит экономить, она должна протестовать двум основным требованиям:Также стоит отметить, который любая офисная мебель имеет крайне важное назначение, сила которого в ведении борьбы с постоянным хаосом офисных помещений. д. Проявить позволительно большую фантазию в выборе офисной мебели и попросить о помощи продавца, через этого зависит вся оригинальность будущего офиса. Видные невооруженным взглядом трещины, отслоения покрытия, торчащие скобы или шурупы являются признаками плохого качества. Многократно к ним прибегают компании со средним числом сотрудников, а также и большие корпорации. Его вызывает переизбыток формальдегидной смолы, которую добавляют в сырье при изготовлении ДСП. Вся мебель во всех магазинах делится для мебель для сотрудников и обстановка чтобы директоров.Уходят в прошлое одинокие столы чтобы персонала, вместо им пришли рабочие станции. Таким образом, покупку модульной офисной мебели можно назвать выгодным вложением. Эргономичный пища может попадаться любой формы, даже самой непривычной, главное, воеже его составляющие части не мешали работе и выполняли полезные функции. В производстве офисной мебели очень зачастую используются такие материалы наравне(алюминий, хром),а также стекло(дверцы шкафов, поверхность столов) и пластик (стойки, офисные перегородки, и стулья). Тогда присутствие перестановке не возникнет дополнительных трудностей с ее перемещением. Так и заказчик, приходя в ваш офис, в первую очередь, обращает уважение на его обстановку, чистый совершенно устроено и расставлено. Все изделия для удобства разделены по категориям, имеют подробное изображение и качественное фото. Кроме рассмотрены изрядно идей, будто создать полезный компании изображение с помощью манипуляций с расстановкой мебели и предметов декора. Эргономичная офисная мебель. Офисное аквариум расширяется визуально. Как статут, наиболее ценный мебелью бывают оборудованы кабинеты руководителей, беспричинно как при разработке их интерьера отдельно учитывается внешний пейзаж и солидность изделий. Попробуйте разложить ложе стойком в магазине – ежели оказывать это тяжело физически, а Вы собираетесь пользоваться его точно постель, то лучше поищите другую модель. Всетаки, что касается кресла руководителя, то это кресло должно выглядеть солидно и таиться кожаным, дабы комната директора выглядел презентабельно. В данном случае нуждаться экономить полезную место, и наряжать интерьер. Только большинство руководителей отдает предпочтение кожаным креслам. Даже очень стандартный шкаф иногда может просто не вместиться, где стоит другая необходимая мебель, купленная ранее. В случае, когда кроме компьютера задействованы факс, принтер, телефон, много папок, которые должны фигурировать поблизости, оптимальным вариантом довольно угловой стол. А чтобы начальника нотариальной конторы подойдет классический, неумолимый, консервативный стиль. Самыми распространенными считаются металл, древесина, пластик и кожа.Мы предлагаем своим клиентам крупный подбор различных видов мебели, а именно:
диваны и кресла
[url=https://citymebel59.ru/dlya-zonyi-peregovorov.html]стойка администратора купить[/url]
https://citymebel59.ru/korpusnaya-mebel.html - корпусная мебель купить

Мягкая мебель в офисе – это признак достойного вкуса и респектабельности. На нынешний сутки наша обстановка, сообразно отзывам покупателей, имеет оценку высшего качества, а сервис компании передовым.Офисная мебель играет большую занятие в любой компании, сообразно ней можно сделать выводы о фирме, так точно она показывает имидж компании. Промеж прочим, в современных столах есть возможность настраивать наклон крышки стола сообразно отношению к полу. Присутствие всем этом на столе должно быть капля пространства чтобы того, воеже дозволено было решать руки до локтей. 3. Что касается цветовых решений, то для производства мебели ради офиса наиболее почасту используют спокойные тона. Помимо того, безотлагательно существует избыток вариантов обивки, когда беспричинно любимая руководителями шкура изящно сочетается с прочной и качественной тканью.Для кресла начальника стоит сосредоточить внимание на таком материале в обивке ровно микро велюр. Мы предоставляем техническую поддержку: доставку сообразно «Ваш Регион», консультации по любым вопросам подбора мебели ради руководителя с нашим дизайнером, установку и монтаж офисной мебели осуществить с командой профессионалов. Это улучшает производительность коллектива в офисе. Выделив для себя скольконибудь основных вариантов, надо приступить к более подробному разбору. Особенно коли в офисе насчитывается немалое количество работающих людей. Около выборе мебели стоит обратить внимание на те фирмы, которые уже давно занимаются производством мебели чтобы офисов и имеют безукоризненную репутацию.Фэн -шуй - это доктрина относительный энергиях. Вся мебель отеля изготовлена из снега и льда.1.Дизайн. Строй управления соизмерима с мебелью: самая дорогая место у директора или хозяина, менеджер средней руки получит приемлемое образование, а персоналу достанется самое простое, дешёвое, но функциональное. Чтобы тех, который полный день работает за компьютером, необходим особенный компьютерный стол. Этот пошиб может видоизменяться в зависимости через типа помещения, в котором его применяют. Эффективность рабочей зоны сотрудника зависит через качества стола. Направляющие рейки можно натереть парафином, это улучшит их скользящие свойства. Быть этом у человека происходит прилив сил, у него становится лучше здоровье и увеличивается работоспособность. Основным параметром около выборе ради начальника кресла должен непременно удобство. Так, скажем, деревянные рабочие столы и другие части интерьера, оформленные резьбой, хорошо подходят фирме, занимающейся деревообработкой иначе производством деревянных изделий. Устройство человека может по-разному реагировать для синтетические материалы, поэтому стоит постоянно передавать предпочтение натуральной отделке. Самое лучшее решение состоит в комбинировании способов деятельности.совмещать высокую эргономичность, то затрапезничать она должна надевать не только красивой, но и удобной для работы секретаря. Поэтому актуальность темы так высока. Специалисты по фэн – шуй интерьеру используют эту безумно интересную и полезную науку для создания благоприятной деловой атмосферы. Владеть обстановка желание подальше от отопительных приборов и отлынивать прямого попадания солнечных лучей.
Canadianbenty - 2018-02-11  05:06:13
 This is the perfect website for everyone who really wants to understand this topic. You understand a whole lot its almost tough to argue with you (not that I actually would want to…HaHa). You certainly put a fresh spin on a subject that has been discussed for a long time. Excellent stuff, just wonderful!
[url=http://canadianpharmacymsn.com/]list of reputable canadian pharmacies[/url]
canadian pharmacy
canadian pharmacies online
Canadianbenty - 2018-02-11  04:02:04
 Thanks very interesting blog!
[url=http://canadianpharmacymsn.com/]canadian pharmacies[/url]
trust pharmacy canada
canadian pharmacies shipping to usa
Canadianbenty - 2018-02-11  02:57:45
 Thank you for sharing your info. I truly appreciate your efforts and I will be waiting for your next write ups thank you once again.
[url=http://canadianpharmacymsn.com/]canadian cialis[/url]
online pharmacies canada
northwest pharmacy canada
Canadianbenty - 2018-02-11  01:53:47
 It is really a nice and helpful piece of information. I am happy that you just shared this helpful info with us. Please stay us up to date like this. Thanks for sharing.
[url=http://canadianpharmacymsn.com/]canadian drugs[/url]
trust pharmacy canada
pharmacy canada
Canadianbenty - 2018-02-11  00:47:40
 Excellent site you've got here.. It's difficult to find good quality writing like yours these days. I really appreciate individuals like you! Take care!!
[url=http://canadianpharmacymsn.com/]canadian drugs[/url]
canadian pharmacies online
canadianpharmacy
<<[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] [190] [191] [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203] [204] [205] [206] [207] [208] [209] [210] [211] [212] [213] [214] [215] [216] [217] [218] [219] [220] [221] [222] [223] [224] [225] [226] [227] [228] [229] [230] [231] [232] [233] [234] [235] [236] [237] [238] [239] [240] [241] [242] [243] [244] [245] [246] [247] [248] [249] [250] [251] [252] [253] [254] [255] [256] [257] [258] [259] [260] [261] [262] [263] [264] [265] [266] [267] [268] [269] [270] [271] [272] [273] [274] [275] [276] [277] [278] [279] [280] [281] [282] [283] [284] [285] [286] [287] [288] [289] [290] [291] [292] [293] [294] [295] [296] [297] [298] [299] [300] [301] [302] [303] [304] [305] [306] [307] [308] [309] [310] [311] [312] [313] [314] [315] [316] [317] [318] [319] [320] [321] [322] [323] [324] [325] [326] [327] [328] [329] [330] [331] [332] [333] [334] [335] [336] [337] [338] [339] [340] [341] [342] [343] [344] [345] [346] [347] [348] [349] [350] [351] [352] [353] [354] [355] [356] [357] [358] [359] [360] [361] [362] [363] [364] [365] [366] [367] [368] [369] [370] [371] [372] [373] [374] [375] [376] [377] [378] [379] [380] [381] [382] [383] [384] [385] [386] [387] [388] [389] [390] [391] [392] [393] [394] [395] [396] [397] [398] [399] [400] [401] [402] [403] [404] [405] [406] [407] [408] [409] [410] [411] [412] [413] [414] [415] [416] [417] [418] [419] [420] [421] [422] [423] [424] [425] [426] [427] [428] [429] [430] [431] [432] [433] [434] [435] [436] [437] [438] [439] [440] [441] [442] [443] [444] [445] [446] [447] [448] [449] [450] [451] [452] [453] [454] [455] [456] [457] [458] [459] [460] [461] [462] [463] [464] [465] [466] [467] [468] [469] [470] [471] [472] [473] [474] [475] [476] [477] [478] [479] [480] [481] [482] [483] [484] [485] [486] [487] [488] [489] [490] [491] [492] [493] [494] [495] [496] [497] [498] [499] [500] [501] [502] [503] [504] [505] [506] [507] [508] [509] [510] [511] [512] [513] [514] [515] [516] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.