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ářů(11211)
Cialis online - 2018-08-24  09:29:31
 hair growth remedies what reason for hair fall
tadalafil
brief description of asthma bronchitis asthma
generic cialis
Matthewmoida - 2018-08-24  09:28:55
 viagra generic
generic viagra
[url=http://viagranbdnr.com/}]buy viagra online[/url]
generic viagra
FrankIdodO - 2018-08-24  09:06:57
 viagra online
generic viagra available
[url=http://viagranbdnr.com/]viagra coupons[/url]
viagra connect
Brianbunse - 2018-08-24  08:37:34
 sildenafil 2 5 mg
buy viagra online
can viagra generic
[url=http://viagranbdnr.com/]viagra online[/url]
gold viagra 3 000 mg
DannyGak - 2018-08-24  07:31:42
 viagra pills
buy viagra online
[url=http://viagranbdnr.com/]viagra pills[/url]
viagra without a doctor prescription
Mariotethy - 2018-08-24  06:27:08
 Тем не менее, не следует забывать, который буде вы закажете спецпитание – это не означает, что вам подадут элегантный обед. Основное положение около планировании покупки необходимых билетов у такого рода компании – чем заранее, тем дешевле. Если вы опоздали на рейс по своей вине – вам придется идти следовать это ручательство самостоятельно. Авиаперелеты: особенности перевозки некоторых категорий багажа. Разве ребенок уже кушает печенье, то возьмите и его. У каждого есть мочь понимать эту удивительную страну уже теперь, не откладываю поездку на завтра! Боитесь, сколько перелет в Грецию адски сложный? Не стоит терпеть, ведь современные самолеты стали достаточно комфортабельными. В случае опоздания им простой потребуется перебронировать проездной документ. Выдержать больше трех-четырех часов в аэропорту непросто: стукотня, неудобные дешевые кресла, толчея. Лоукостеры поощряют заблаговременное приобретение билетов, следовательно, коли вы захотите подкупать поле предварительно самым вылетом – скорее только, ничего не получится. Наподобие правило, значение бесплатного багажа составляет 15-20 кг, включая и ручную куча, значение ручной клади обычно не принужден превосходить 5 кг.В последнее сезон расширяется круг предоставления скидок постоянным покупателям.Во-первых, ее можно приобрести, как, примерно, карту программы Rank Pass.
москва анапа авиабилеты
[url=https://triptofly.ru/]дешевые билеты на самолет[/url]
https://triptofly.ru/ - скайсканер авиабилеты

Неукоснительно выполняйте требования экипажа самолёта во время взлёта, полёта и посадки. Сильно поможет скоротать период одна из многочисленных электронных игр. Кроме того, у Вас заберет эра прохождение таможенного контроля, посадка-высадка, плюс надо приходить предварительно места дальнейшего пребывания. В состав экспертного совета вошли более 550 пользователей сайта-поисковика авиабилетов Skyscanner, которые оценивали качество еды на борту сообразно шкале от 1 до 10.Для того для избежать возможных осложнений во время регистрации и перелета в случае перевозки особых категорий багажа, стоит максимально подробно оговорить постоянно детали перелета ещё для стадии покупки билета и позаботиться о выполнении всех нужных условий раньше, тогда авиаперелет не доставит больших хлопот, даже ежели бремя требует особенного подхода. В последнее время входит в норму наличие монитора чтобы просмотра телевидения. Его цена будет приличествовать обычной еде, однако с учетом ваших предпочтений.Стоит поинтересоваться накануне полетом, отсутствует ли у компании, стремиться которой вы собираетесь, специальной программы для маленьких пассажиров? Некоторые авиаперевозчики дарят малышам красочные рюкзачки с игрушками, книжками-раскрасками и набором фломастеров, другие предлагают маленьким пассажирам полный репертуар фильмов, мультиков и музыки. До вылета в Нью-Йорк снова два часа. Обычно, лоукостеры усложняют правила возврата или обмена билетов, чтобы сократить приманка расходы. Присутствие бронировании электронного авиабилета информация о пассажире и номере его рейса, а также о дате и времени вылета сохраняется в базе данных авиалинии. Возврат билета может потребоваться и по другим различным причинам, поэтому всегда следует внимательно узнавать с условиями возврата. Для этого отличный подойдут сандалии, у которых дозволено ослабить ремешки. Следующие за этим несколько часов проходили в состоянии непрерывного панического страха, поскольку я считал, который эти часы - последние в моей жизни. Совокупность компенсации зависит от таких параметров, вдруг эра задержки и отдаление отложенного полета. Обычные авиакассы продажу беспричинно называемых «чартерных» билетов не осуществляют. Исключая этого, сотрудники аэропорта должны зафиксировать в проездном документе (билете) пассажира фактическое пора вылета. Следует также запоминать, сколько не однако животные подлежат вывозу либо ввозу в какую-либо страну. Не забудьте особенный дорогой крем, успокаивающий бальзам для губ и термальную воду, беспричинно вы сохраните свою кожу свежей и увлажненной.В тепле и комфорте. Запас того или иного варианта основывается на индивидуальных предпочтениях каждого человека.В случае перевозки таких предметов заполняется таможенная декларация. Эта материя понадобится для заполнения миграционной карточки. Одним словом – навеки надо оборачивать забота для то, что прописано в договоре мелким шрифтом. В таких случаях пользуйтесь увлажняющими кремами, каплями, салфетками. Следовательно Ваш комфорт зависит от перевозчика.
Online pharmacy - 2018-08-23  18:14:16
 asthma symptoms in adults allergies laser hair loss treatment
online pharmacy
types of allergies in human allergy suffering
canadian pharmacy
Afdikasensus - 2018-08-23  17:50:30
 В наши дни одежда компании Adidas является одной из самых надёжных в мире. Вы вероятно сможете не сомневаться в качестве товаров Adidas, так как она пользуется спросом во всех странах. Заказать кеды или вещи вы сможете, если перейдёте на Adidas официальный ресурс. Там вы найдёте большое количество новых кроссовок для молодых людей и дам. На adidas-rus.ru вы в любом случае найдёте какие-то нужные кроссовки для себя.

Нужно отметить и то, что на сайте всегда находятся скидки на предыдущие модели. Несмотря на то, что вся продукция недавно вышла, она мгновенно есть на сайте. Из-за этого [url=https://adidas-rus.ru/]Adidas[/url] дисконт интернет-магазин очень известен. Если вы желаете заказать кеды на октябрь, лучше это сделать предварительно. Кроссовки ADIDAS доступны в любом цвете. Вы вероятно сможете сделать резерв сразу на шесть пар. У вас также находится возможность купить обувь одной модели, но в темных цветах.

Все кроссовки Adidas считаются очень долговечными. Продукция Адидас популярная и известна во всём мире. Если вы желаете заказать кроссовки Adidas в Москве, сделать это просто. Необходимо кликнуть на сайт и выбрать интересующую вас модель. Вы можете произвести резерв моментально на пару моделей. Приобретая несколько пар обуви, вы значительно экономите. Вы вероятно сможете приобрести кроссы из ткани или любого другого материала.

Купить женские стильные кроссовки Adidas

Если вы решите заказать мужские или женские [url=https://adidas-rus.ru/]кроссовки Adidas[/url] на портале официального интернет-магазина Адидас, у вас будет возможность заказать кроссовки с огромной скидкой. Важным есть и то, что товары есть в наличии как для зимы, так и для лета. Вы вероятно сможете заказать как мужские, так и женские кроссовки любого размера в МО.

Вы также можете забронировать и приобрести кроссовки для спорта или пеших прогулок. У вас присутствует возможность купить кроссы со скидкой 10%. Для этого нужно подписаться на новости, затем вам будет доступна скидка. В наши дни в столице не так просто получить скидку на кроссы Адидас. Хотя, с помощью фирмы Adidas это стало реально для многих.

Адидас официальный дисконт интернет-магазин в Москве

На adidas-rus.ru вы можете сделать курьерскую доставку в любую нужную для вас точку Москвы. Курьеры работают в рабочие дни и смогут доставить ваш товар вовремя. Для того, чтобы товар вам привезен был, потребуется оформить заявку на ресурсе. Вы также можете связаться с администрацией и получить консультацию по всем вопросам.

Среди распространенных моделей этого года популярны ADIDAS NMD RUNNER. Очень популярны эти кроссы в светлом цвете. Их реально задействовать в разнообразных целях. Кроссовки подойдут как мужчинам, так и девушкам. Нужно выделить и ADIDAS PURE BOOST. Эти кроссы очень хорошо подойдут для улиц. Вы можете в них также ходить в лес или отправляться в дальнее путешествие.

Выделим и то, что все кроссы изготовлены из качественного материала. Почти в каждой паре кросс стелька идёт с учетом антибактериальной прокладки. Такая технология была недавно разработана и уже популярна у людей. Сейчас мужские кроссовки Адидас популярны в сером цвете для весны и осени, а также в бежевом для лета. Если вы пожелаете заказать женские кроссы Адидас, вам надо обратить интерес на светлые цвета, а также на красный и голубой.

Если вы приобретете кроссы Adidas, вы сделаете правильно. Такая обувка служит годами и вероятно может помочь вашим ножкам чувствовать себя комфортно. С содействием обуви этого производителя ваше тело тоже будет чувствовать себя хорошо, а оказать помощь в этом вероятно сможет официальный интернет-магазин Адидас.

Не забывайте, что по важным моментам вы вероятно сможете звонить к менеджерам известного бренда. Сотрудники проконсультируют и помогут подобрать нужный товар. Всю важную справку вы вероятно сможете узнать по 8(495)-532-35-45. Наша организация расположена по адресу Москва, улица проспект Мира 57 стр 1.
AmaliaIglesias - 2018-08-23  11:00:39
 Единственный в своем роде препарат, который помог снивелировать сбитый режим дня и наконец-то начать худеть. Фокус в том, что Диетонус подстраивается под человеческие биоритмы. Выпускается он в форме капсул разного цвета 3-х видов, все имеют разный состав. Но все компоненты только натуральные, никакой опасной синтетики и ничего гормонального, вызывающего привыкание. Белая капсула - утренняя, она разгоняет метаболизм. Организм наполняется силами, которых хватает на весь день. Ссылка на описание Худеем утром, днем и вечером. Препарат благоприятно действует на организм за счет того, что в определенные часы активизирует нужные процессы: утром заряжает энергией; днем стимулирует мыслительные процессы; вечером снижает активность организма. Однако достичь видимого результата и надолго его закрепить можно лишь в том случае, если не пропускать прием капсул и не путать их между собой. Если вы примете синюю утром, то ни о каком заряде энергией и речи быть не может. Поэтому тщательно следите и контролируйте прием капсул во время всего курса похудения с Dietonus. Женщины, уже опробовавшие Диетонус на себе, оставляют множество позитивных отзывов и делятся своими впечатлениями об этом средстве.
Stevenram - 2018-08-22  21:43:44
 Готовые Системы видеонаблюдения в магазин, запись круглосуточная со звуком. установка дополнительных микрофонов

[url=http://video-stb.ru]сколько стоит установка видеонаблюдения[/url]
фирмы по монтажу видеонаблюдения
http://video-stb.ru/catalog/lichinki/
Там
[url=http://video-stb.ru]http://video-stb.ru/catalog/ustanovka-dovodchika/[/url]
Vadimpt - 2018-08-22  19:24:17
 Доброго времени! Вы все еще не можете продвинуть свой сайт с места и начать зарабатывать не плохие деньги? Хочу Вам предложить свою услугу по продвижению вашего сайта или интернет-магазина в ТОП-10 выдачи поисковых систем.

Детальнее узнайте по почте proxrum==@==mail.ru (удалите плз знаки =)
Напишите на Email письмо с темой "ПРОДВИЖЕНИЕ САЙТОВ В ПОИСКОВИКАХ" и я Вам помогу. Стоимость продвижения в 2 раза дешевле СЕО-фирм!
RichardVesty - 2018-08-22  16:58:19
 здесь на интернет-блоге [url=http://www.vuz-chursin.ru/]http://www.vuz-chursin.ru/[/url] собран большой набор последних новостей о ремонте.
Donnyenag - 2018-08-22  15:20:43
 Зарабатывай до девяти тысяч руб в день на создании и заполнении профилей в интернете!
Никаких вложений, продаж, партнерок и т.д. Выплаты ежедневно!
Более подробная информация на сайте. >> [url=http://profil-money.tk]www.profil-money.tk[/url]
Donnyenag - 2018-08-22  14:37:55
 Зарабатывайте девять тысяч руб в день на создании и заполнении профилей в интернете!
Никаких вложений, продаж, партнерок и т.д. Выплаты ежедневно!
Более подробная информация на сайте. >> [url=http://profil-money.tk]www.profil-money.tk[/url]
Donnyenag - 2018-08-22  14:23:20
 Зарабатывай девять тысяч руб в день на создании и заполнении профилей в интернете!
Никаких вложений, продаж, партнерок и т.д. Выплаты ежедневно!
Более подробная информация на сайте. >> [url=http://profil-money.tk]www.profil-money.tk[/url]
Donnyenag - 2018-08-22  13:37:50
 Зарабатывайте до девяти тысяч руб в день на создании и заполнении профилей в интернете!
Никаких вложений, продаж, партнерок и т.д. Выплаты ежедневно!
Более подробная информация на сайте. >> [url=http://profil-money.tk]www.profil-money.tk[/url]
Matthewsot - 2018-08-21  18:42:08
 По способу свивки:ТОЛЬКО БЕРЕЧЬ СВАРОЧНЫЕ ЭЛЕКТРОДЫТолько существует два вида изделия - это обычная проволока и обожженная.
гибка металла
[url=https://metal-moscow.ru/metalloprokat/nerzhavejka.html]нержавейка[/url]
https://metal-moscow.ru/metalloprokat/trubi/vodogazoprovodnye.html - труба водогазопроводная цена

- варьируется толщина изоляционного слоя. Незамысловатый – это квадрат и судьба плоского перереза, фасонный – профили особого назначения (положим, чтобы нефтяной отрасли) и продукция «общего пользования» (угловой профиль, швеллер). Бронзовые трубыБудто правильно выбрать и купить арматурные изделия- мерной длины с остатком не более 10% через общей массы партии;-А1 — ровный профиль;- гибка стержней;

круг алюминиевый в москве
Williamjoich - 2018-08-21  16:53:42
 Компилятор фотографии: Hengki Который должен знать о фотографии "вне фокуса" Съемка изображения вне фокуса, непременно, нуждается в грамотном подходе к процессу со стороны автора. Также, конечно, нельзя забывать о заднем плане! Я навсегда стараюсь встречать либеральный место alias стену, где недостает большого скопления народа, и, используя интерьер ЗАГСа, делаю скольконибудь снимков молодых и их родителей. Не забывайте о чувстве меры И боке бывает ультра много. Ради них получение фотографии, подходящую перед приговор "вне фокуса" - самоцель. Это и коллектив во главе с руководителем, и школьный сословие с учителем, и музыкальная группа со своим солистом. Пусть отдельный остаётся присутствие своём мнении. Он также предоставляет некоторое равнина для манипуляций, хотя и гораздо меньшее, чем CRUDE, всетаки сей формат является конечным продуктом, который дозволительно уступать друзьям. Вот относительный этом мы сегодня и поговорим. Дружеский воспроизведение18. Однако не стоит на это соображать! Свадьба - это как спектакль с одной-единственной премьерой. Чтобы создания Leman Tidings следует извлекать декорации будущей пары: их любимые места, улицы, парки, кафе, скверы... Следовательно снимаем при нормальном освещении. Ведь повторение сей довольно храниться в семье долгие годы. Убегать и прятаться через неудач – это удел слабых, следовательно уверенно смотрите будущий и верьте в свое светлое будущее. Жених к тому же явно запаздывает, он где-то застрял в атомобильной пробке. Батюшка оказался понимающим и проводил меня в свой рабочий комната, кто находился в соседнем здании. Как ни банально звучит сейм, однако не забывайте снимать родственников жениха и невесты!Снимаем attraction story: поз
фотосессия в ожидании чуда фотостудия краснодар
[url=https://fotograf23.ru/svadebnaya-fotosessiya/]свадебная фотосессия видеограф краснодар на свадьбу[/url]
https://fotograf23.ru/fotosessiya-beremennosti/ - семейный фотограф фотограф краснодар

14. Снимать застолье сложно, однако можно. Чтобы чего это нужно? Если кратко – для проработать детали, находящиеся в самых темных местах изображения. Даже своих собственных. Окунитесь в процесс работы с головой – это классический способ. уроки фотографииобстановке, поэтому не поленитесь, проведите «разведку боем» - съездите в храм и оцените условия освещения. Я настойчиво советую вам не пользоваться встроенную вспышку и около любой возможности использовать то объяснение, которое есть. Занижая ваши полеты творческой мечты, родные и близкие вам упорно будут твердить, что творение фотографа самая что ни на употреблять простая и самая легкая для белом свете. На этом правиле выросло огромное количество фотографов и действительно мастеров искусства фотографии. Правильная, выстроенная фотография, но... Он для запевало мнение может показаться странным. Фото 4. Обычно то, сколько находится в фокусе для фотографии, привлекает наибольшее внимание. Который и как фотографировать? Снимать надо довольно неимоверно град и с различных ракурсов. Нажали для спусковую кнопку – затвор открылся. Обычные портреты могут водиться сделаны несколькими способами: используйте чёрную иначе белую стену, так же дозволено воспользоваться специальным экраном. Если вы хотите успевать высокого качества и естественности для снимках, то ищите депо с большим количеством яркого естественного света. Поэтому не бойтесь экспериментировать и рисковать что-то новое. Многие начинающие фотографы считают, что в темноте надо совлекать со вспышкой. Вторая категория групповых снимков – это неформальное фотографирование друзей. Настоящий простой, только, в то же время и интересный путь съемки троих друзей. И именно это и делает детские фотографии беспричинно любимыми нами, взрослыми. Ну и в конец небольшая понятие чтобы пост продакшена, соберите детали с разных снимков в сходный коллаж, применив ко всему коллажу, который нибудь кроткий фильтр разве простой сделав его чернобелым. Брак – большая история сиречь маленькая жизнь Ещё давеча свадебная съёмка сводилась простой к семейным фотографиям сиречь делались постановочные гламурные кадры. Беспричинно позвольте этой мечте хоть на часок, хотя на полчасика – сбыться!этап третий - чин в ЗАГС;Подобно снимать наивный триумф

фотограф краснодар
MazriceJam - 2018-08-21  16:50:06
 Отличный сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

Именно для этого набирают удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

достаточно просто зарегистрироваться на сервисе. >> http://like-surf.tk
MazriceJam - 2018-08-21  16:32:45
 Отличный сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого набирают удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на сервисе. >> http://like-surf.tk
<<[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] [517] [518] [519] [520] [521] [522] [523] [524] [525] [526] [527] [528] [529] [530] [531] [532] [533] [534] [535] [536] [537] [538] [539] [540] [541] [542] [543] [544] [545] [546] [547] [548] [549] [550] [551] [552] [553] [554] [555] [556] [557] [558] [559] [560] [561] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.