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ářů(10915)
Williamjoich - 2018-07-21  09:45:54
 17. Сосредоточьтесь именно для этом. Несмотря для разные варианты застолья, остаются порядочно нерушимых, обязательных церемоний - разрезание свадебного торта молодожёнами, торжественные речи родственников и «горькие» поцелуи. Эту сцену лучше всего лишать в домашней обстановке теплоты и уюта. Вроде фотографировать наивный табельИ вторично изрядно практических советов, которые могут пригодиться. Около съемке вечерних и ночных пейзажей проку от вспышки – вконец никакого нет. Эстетическая важность такого снимка снижается предварительно нуля. Буде вы будете пользоваться этот порядок, от вас не ускользнет ни единолично момент в состоянии ребенка!В начале своей работы я не избежал наиболее распространённой ошибки - так увлекался объектом съёмки, который напрочь забывал о заднем плане. Совмещайте репортаж и постановку Когда влюбленные целуются «на камеру» - это навеки выглядит неестественно, постановка в этом случае видна, который называется, невооруженным глазом, даже буде те, кого вы фотографируете, профессиональные актеры. В этом случае вы сами выбираете выдержку или диафрагму, на какой будете скидывать, а всё остальное изза вас сделает автоматика. В момент, когда вы займёте позицию чтобы съёмки, родители должны стремительно отойти, чтобы ребёнок не успел отреагировать на перемена ситуации, а вы в тем временем успеете исполнять воспроизведение, а если повезёт, то порядочно снимков. Заключается он в следующем: настоящий старший участник семьи (начинать или очень почитать и причитающийся) сидит в центре. Не единственно фото. Снимаем romance story: позы
фотосессия в ожидании чуда фотостудия краснодар
[url=https://fotograf23.ru/detskaya-fotosessiya/]детский фотограф краснодар детская фотосессия в студии[/url]
https://fotograf23.ru/detskaya-fotosessiya/ - детская фотосъемка детская фотосъемка

Не надо фотографировать всего общие сиречь как средние планы. Потому что объект настолько далеко находится, что объектив фокусируется на бесконечности и всё в кадре будет в фокусе. Следовательно я пришёл к выводу, который одну гармонию построения формы надо разбавлять иной гармонией, гармонией другого порядка. А все остальные - точно желание на его фоне. Дети любят кривляться. Истинный Искусный не простой «щелкает» и «нажимает кнопки» - он в каждом кадре оставляет частицу своей сердечной чистой энергии. Творчество требует экспериментов, а эксперименты требуют времени. Задача в книга, что объектив имеет минимальное дистанция фокусировки (степень, где объектив больше сфокусироваться не сможет). Лучший вариация ради съёмки - лёгкая облачность, когда пропали прямых солнечных лучей. Свадебная прогулкаВоеже лежать ко всему готовым, стоит уточнить, какие события праздника в какое эра будут происходить. Используйте вроде позволительно более открытую диафрагму и держите жениха в отдалении через невесты. Обязательным кадром свадебного фотоальбома является кадр романтического страстного поцелуя. Но так бывает не всегда. Снимаем love story: позы18. Один фотографирующиеся не наваливаются гурьбой для одного, а просто выглядывают из-за него. Но этих поз, конечно же, намного больше. Классическая поза - жених и невеста вместе. Дабы проработать и не пересветить фактуру белого платья невесты, экспозицию фотоаппарата лучше определять с недодержкой в одну ступень (-1 EV) (Фото 9-11). Потратив воз средств и проведя серьезную подготовку к празднику родители хотят запечатлеть всё событие на фото и видео. Определитесь со стилем Лучший поступь – это сортировка стиля фотосессии. она наподобие две лекарство воды похожа на сотни других таких же фотографий, «обитающих» в разных свадебных альбомах жениха и невесты!В редких случаях хорошо организованной свадьбы многие этапы проигрываются для репетиции. Неизбежно в процессе работы вы будете что-то портить, что-то будет не получаться, но такова реальность. Если вам повезёт, то вас словно друга могут пригласить проехаться в одной машине с молодожёнамиСолнце - очень перворазрядный антагонист фотографа, снимающего для улице. Влюбленные, глядя в камеру, стоят лицом к лицу, прижавшись товарищ к другу. Самые частые объекты, которые «не кстати» попадают в кадр,- всевозможные игрушки, и книга, приколотые около зеркала, и цветы, стоящие для подоконнике. . Фотограф должен самовольно стать малость ребенком. Востребованы универсальные фотографы, которые могут коптеть в нескольких направлениях. Практически то же самое, который и в пункте 8. Подобно фотографировать группу людей

фотограф краснодар
RobertReura - 2018-07-21  08:39:52
 Стеклянные козырьки монтаж которых осуществляется специалистами нашей компании, выполняются сообразно всем стандартам качества и безопасности. Между наших партнеров – самые надежные поставщики фурнитуры, которые обеспечивают нашу стеклянную продукцию комплектующими самого высокого качества.Светопрозрачная переборка в офисеДвери из изогнутого стекла.Городьба дверь с притворомЛестницы со ступенями, выполненными из закаленных материалов
стеклянные перегородки
[url=https://stekloforce.ru/]книжные шкафы со стеклянными дверями москва[/url]
https://stekloforce.ru/ - стеклянные перегородки в квартире

Стеклянные двери ради сауны укомплектованы силуэтным стеклом.Конструкции из стекла – это одни из самых лучших и популярных вариантов оформления помещения.Лестничное ограждения с матовым рисунком и деревянным поручнемПокупать стеклянные перегородки сообразно отличным ценам.Эксклюзивные предложения

зеркало в ванную с подсветкой москва
JoshuaAbada - 2018-07-21  07:34:05
 Огнестойкий. Что производить: обратиться в компанию для устранения дефектов. Остекления спортивных залов, детских садов и школ (здесь он зачастую просто незаменим).Поэтому профили изготавливают из 3 частей, средняя из которых представляет собой термоизолирующую полиамидную вставку (своего рода термомост). Гнутый. Единовластно через назначения кожица чтобы тонирования представляет собой специальный ясный полимер, куда наносится металлический разряд из:Выбирая производителя пластиковых окон следует учитывать из какого профиля изготавливается продукция, какая используется фурнитура, насколько резво выполняется поручение и установка. Подобным образом вы уединяетесь с природой, дышите свежим воздухом и при этом получаете много больше света. Нестандартное. С установкой откосов вы получите гарантию, надежность, комфорт и защищенность. Они абсолютно безвредны ради здоровья человека и не вызывают аллергических реакций. Хорошие отзывы — это лучшее повторение качества продукции. Местечко чтобы шитья, оборудованное столом для кроя, различными шкафчиками и ящичками. Рассматривая с точки зрения физики параметр относительной влажности – это «крапинка росы» - температура, присутствие которой выделяемый воздухом пар преобразовывается во влагу. Регулировка пластиковых окон - приказ, приведенная в картинках, позволяет сам произвести подходящую вам регулировку. Мы рекомендуем заказ микропроветривания окна с поворотно-откидной створкой, так подобно это создает комфортную эксплуатацию и хорошее проветривание помещения. Последний этап — финишное покрытие. Из-за хорошей герметичности возникает постоянная нехватка свежего воздуха и соединение влаги, которая образует конденсат на окнах. Среди наиболее популярных разновидностей остекления коттеджей являются следующие варианты:Водостойкий гипсокартон не требует предварительно установкой ровной основы. В строительстве триплекс прекрасно находит применение для:Почти дополнительными элементами мы подразумеваем возможные опции и комплектующие для окон ПВХ. Шумоизоляция окна – это параметр окна ПВХ, который определяет снижение посторонних шумов, доносящихся с улицы, через транспортного городского потока разве наоборот.
алюминиевые окна
[url=https://uslugi-mastera-kg.ru/]пластиковые окна[/url]
https://uslugi-mastera-kg.ru/ - пластиковые двери бишкек

в летние жаркие дни помещение не нагревается;Водостойкий гипсокартон не требует пред установкой ровной основы. В строительстве триплекс прекрасно находит применение чтобы:Зачем нужны тонированные окна ПВХ?КАК ПРОВЕРИТЬ НАЛИЧИЕ АТЕРМАЛЬНОГО ПОКРЫТИЯэксплуатационный срок профиля составляет 60-80 лет;

двери в бишкеке
MetallmskBok - 2018-07-21  06:30:12
 - высокая плотность (ПВ);Арматура А2 или арматурная сталь, как и другие надежда арматур, применяется для армирования железобетонных конструкций, тем самым повышая их прочность. Арматура А4 (а600) производят диаметром 10-18 мм (из стали 80 С) и 10-32 мм. В связи с этим нержавейку крайне нежелательно сохранять в помещениях, где осуществляются работы с металлом. Конкуренцию с пластиковыми трубами, безнапорные трубы выдерживают покуда без проблем, некогда всего это обусловлено их долговечностью, низкой стоимостью, и возможностью применения в сочетании с другими трубами. Данная разновидность чугунных труб является одной из наиболее широко используемых чтобы монтажа водонапорных систем, что требуется в различных отраслях промышленности. Судьба стальнДисковая пила гарантирует тесный пропил и около этом около исключает стружку.К слову, со временем, ежели арматуру не зафиксировать в бетоне, то складка исподволь станет просаживаться и губить в землю.Прежде только, давайте расшифруем аббревиатуру ВЧШГ - высокопрочный чугун с шаровидным графитом. Между допустимых дефектов можно отметить вмятины и риски. Бруски укладываются для расстоянии точно минимум 2 метра соло через одного, быть этом провисание краев листа недопустимо. Цель профнастила
[url=https://metal-moscow.ru/metalloprokat/balka/dvutavrovaja.html]двутавр купить[/url]
[url=https://metal-moscow.ru/]металлопрокат[/url]
[url=https://metal-moscow.ru/metalloprokat/balka.html]металлическая балка[/url]

1. Запорные задвижки необходимы чтобы периодического перекрытия потока среды в трубопроводах. Ведь именно это является одним из определяющих живучесть факторов. Известный перспектива профнастила характеризуется повышенной прочностью, благодаря чему он используется не лишь в качестве настила кровли, но и якобы перекрытие несущих конструкций. Но в то же время, листы профнастила грешно использовать без дополнительных материалов, которые придаёт дополнительную прочность. Стальные канатыПроисходит это таким образом: состав наносят для металл, ждут полчаса (в результате ржавчина преобразуется в стабильные фосфаты железа) и кроме протирают деревня насухо.- стальные;Если поясные швы свариваются моментально двумя автоматами “в угол” быть горизонтальном положении вертикальной стены, то производительность работы вырастет.10ГС2, 08Г2С, 25С2Р

круг стальной
Epwhowowosu - 2018-07-21  06:02:52
 [url=http://doxycycline-cheapbuy.site/]doxycycline-cheapbuy.site.ankor[/url] onlinebuycytotec.site.ankor
Ucijuqi - 2018-07-21  05:33:40
 [url=http://doxycycline-cheapbuy.site/]doxycycline-cheapbuy.site.ankor[/url] onlinebuycytotec.site.ankor
DimizatAcext - 2018-07-21  05:27:46
 И далече не вечно порука ради подобный выступка ложится для грузоотправителя, расплачивается (в прямом и переносном смысле) и перевозчик.
Коль же по воздуху, то расходы взлетают дословно до небес – самолёт, что ни говори, уловка дорогая и авиация ещё не доросла накануне уровня доступности автомобиля, ставшего не роскошью, а средством передвижения и перевозки.
Современная деятельность различных организаций невозможна без тесного сотрудничества с транспортными компаниями.
Важные оговорки в контракте
Привлекаются новые клиенты ради счет двух факторов:

грузоперевозки
[url=https://vk.com/gruzotaksi_rostov]грузовое такси[/url]
https://vk.com/gruzotaksi_rostov - грузоперевозки

быстрая доставка
Квартирный переезд
Для снижения размера страховой премии вероятно также страхование для сумму меньше реальной стоимости страхуемого груза.
В нем оговариваются наименование груза, образ транспорта, страховой тариф, сроки оплаты и другие детали сделки.
Судя сообразно состоянию груза, в машине поверх застрахованного груза находился какой-то другой груз.


переезд квартирный с грузчиками
AgrokrdFep - 2018-07-21  03:04:33
 Предположим, завод нетканых укрывных материалов в г.Все, стоит обратить уважение, который гарантийные обязательства не распространяются для поликарбонатные листы, которые были смонтированы с нарушением правил монтажа, а также присутствие ненадлежащем хранении alias неправильном применении.Но, к сожалению, нельзя сказать, который оптом сотовый поликарбонат, продаваемый в России, обладает надежностью и качеством, которую заявляют производители.Черный углерод, кто лакомиться в составе полотна, придает ему черный цвет, который позволяет интересовать большое мера тепла и кроме воздавать его растениям.
[url=https://agrohoztorg.ru/каталог-товаров/сетка-притеняющая/]притеняющая сетка[/url]
сетка притеняющая купить
пленка для теплиц

— ускорение прогрева почвы,Притенение материалом АгроспанОсновная занятие белого укрывного материала спанбонд Агроспан в летний период – это притенение, удерживание влаги, оборона от ветров и вредителей.Туймазы, Республики Башкортостан.

агроспан в ростове на дону
Aofadaruzabgu - 2018-07-21  02:11:41
 [url=http://doxycycline-cheapbuy.site/]doxycycline-cheapbuy.site.ankor[/url] onlinebuycytotec.site.ankor
Ecebuhep - 2018-07-21  01:40:51
 [url=http://doxycycline-cheapbuy.site/]doxycycline-cheapbuy.site.ankor[/url] onlinebuycytotec.site.ankor
PhillipPlaft - 2018-07-21  01:18:23
 autocad 2011 iso download
download autocad
autocad lt student version
[url=http://autocadtry.com/]download autocad[/url]
DimaTskdiasp - 2018-07-20  23:56:08
 Страховщик - юридическое вид, созданное специально для осуществления страховой деятельности, что подтверждается соответствующей государственной лицензией.
Опять случаются задержки сообразно причине неприглядный погоды, долгой обработки на терминале, разницы в часовых поясах.
Потери и хищения груза (сохранность груза) 8
А/М грузоподъемностью предварительно 7т 555 5550 515 5150 30..40
Победителям тендеров неоднократно необходимы финансовые услуги, грузоперевозка, поставки и т.п.

заказать газель томск
[url=https://gruzoperevozki-vtomske.ru/]грузовое такси томск[/url]
https://gruzoperevozki-vtomske.ru/ - услуги газели

До прибытия эксперта грузополучатель должен обеспечить надлежащую сохранность груза.
сосредоточенность на определенных направлениях, поскольку около наличии множества маршрутов процессу перевозки может уделяться недостаточно пристальное почтение со стороны перевозчика, изза чего качество услуги может снизиться;
Экспедирование грузов
Страховая компания застраховала и предпринимательский риск, и ожидаемую барыш компании.
При выгрузке получатель обнаружил, который отрывок мешков повреждена и намокла.
Charlesneags - 2018-07-20  22:55:26
 Когда облюбовать хостинг конкретно перед движок, то владельцам сайтов для Drupal, следует учитывать, что их будущий хостинг должен поддерживать PHP (5.
Коли вы сразу обозначите, который вам нужно, это снимет львиную долю недоразумений.
Коль мы теперь откроем нашу страницу в браузере, то сносный интересного не увидим, так ровно мы даже не задали элементам никаких стилей.
В данной системе прыть загрузки сайта дозволено посмотреть в отчете «Мониторинг» – «Пора загрузки страниц».
Страницы сайтов могут иметься простым статичным набором файлов или создаваться специальной компьютерной программой на сервере — беспричинно называемым движком сайта.

веб студия томск
[url=https://vk.com/sozdanie.saitov.tomsk]создание сайта в томске[/url]
vk.com/sozdanie.saitov.tomsk - создание сайта в томске

Только как принцип, поверив в то, что работа собственного ресурса в интернете обойдется непроходимо дешево, клиент попадает в ловушку.
Буде Вам надо довольно больше, то по аналогии добавляйте новые дивы.
Делается это для того, дабы переменная $style не перезаписывалась на каждой итерации, а дополнялась.
Скажем, в Яндекс.
наверх


заказать сайт томск
FvyrvvfqJen - 2018-07-20  22:30:21
 generic for cialis tadalafil
best price for viagra
[url=http://hqmdwww.com/buy-viagra.html]viagra vs.generic sildenafil[/url]
order real viagra online
Metallmosktum - 2018-07-20  21:01:38
 С его через получаются аккуратные отверстия, быть устройстве которых суша вокруг столбов сохранит свою плотную структуру (это не позволит почве осесть, сколько исключит кручь столбов в будущем).Именно поэтому всякий домовладелец хочет заключать надежную, долговечную и красивую ограду.Особенности металлопроката, имеющихся товаров и выполняемых работИзделия с уклоном внутренних граней делятся для:- жёсткость, которая достигается дополнительным ребром, благодаря чему. Ручки. 5. 2. Впоследствии производства стальной нержавеющий лист, идущий с завода производителя обворачивают специальной защитной бумагой, а так же сверху на пачку листов укладывают бумагу с водоотталкивающими свойствами. Размер трубы и клапана должны быть одинаковыми. Так же листы данного типа позволительно подразделить по способности к вытяжке:
[url=https://metal-moscow.ru/metalloprokat/profnastil.html]профнастил цена[/url]
[url=https://metal-moscow.ru/metalloprokat/ugolok.html]уголок стальной[/url]
[url=https://metal-moscow.ru/metalloprokat/katanka.html]катанка цена[/url]

- Полезная ширина – 1160;К сожалению, легкий средство подходит как для начального этапа, он снимает поверхностные загрязнения.Профнастил представляет собой универсальный, очень распространённый строительные вещество, среда применения которого весьма обширна. Здесь различия уже боле значительны, нежели в предыдущем пункте, разве А400С имеет граница – 390 единиц, то А500С уже 500. Дозволительно выделить следующие методы предварительного напряжения арматуры, которые используют в строительстве:Кислородно-копьевая.Правила хранения металлопроката.

алюминиевая профильная труба
Carlosunupt - 2018-07-20  19:58:20
 Начнем с самой неприятной ситуации, когда финансовое обстановка заемщика настолько ухудшилось, что он простой не в состоянии продолжать ежемесячные выплаты. Согласитесь, работать с нами — вельми удобно. 4. Таким образом, вы сможете прогрессивно выучить коптеть самостоятельно. Какие страны привлекательны для инвестирования?Одним из самых эффективных способов поиска продавца/покупателя была и остается расклейка объявлений. Указаны ли в нем коммуникации, соответствует ли действительности планировка либо в доме что-то пристраивалось. разве не быть. Так вы не сильно переплатите в случае вынужденного отъезда, и коль собственник решит расторгнуть договор — ради этот срок весь успеете встречать новость жилье. Тысячи квартир по всей Москве в сей момент продаются (временно мы берем во почтение исключительно столицу). А в монолитных домах позволительно даже менять расположение стен в своей квартире, который позволяет конструкция несущих элементов. Да и время рассмотрения таких дел, якобы выше упоминалось, может растянуться на годы. 3) Ожидание роста цен для недвижимость со стороны продавцов. Ради наглядности сказанного рассмотрим несколько ситуаций. Однако редко распознать их не так-то простой, они могут случаться агентством недвижимости. Люди меняются медленнее. Тож близ того метро, под которого вы хотите поселиться, адекватных предложений недостает, тут он посоветует расширить географию поиска, не тратя необдуманно свое время. Иногда может беспричинно случиться, сколько вам нуждаться довольно безотлагательно расторгнуть договор и уехать. Коль вы хотите купить квартируАгент по недвижимостиАренда квартиры через агентство имеет свои плюсы, иначе к услугам посредников бы никто не обращался. Огромное влияние на стоимость предложения влияет его эластичность. Однако нередко сделки совершаются на основании эмоций, когда объект недвижимости просто понравился, чем-то приглянулся. Договор признается судом в качестве доказательства при невыплате квартирантом стоимости аренды и (или) коммунальных платежей, если эта обязанность возлагается на него. Существует и такая немаловажная «инфраструктура» квартиры как хорошие соседи, и с ними лучше пообщаться. В это время советуют покупать загородное жилье. Где и когда покупать дом?
построить дом
[url=https://vk.com/stroitelstvo_domov_knd]строительство домов под ключ[/url]
https://vk.com/stroitelstvo_domov_knd - строительство домов под ключ

Конкуренция на рынке недвижимости. Чтобы осуществить на практике схему: купить жилье по ипотеке > сдавать его в аренду > получать прибыль, нужен очень тщательный анализ как рынка недвижимости, так и законодательства. Практически все те, которые выполняет сам собственник жилья: от контроля своевременности погашения платежей до технического состояния помещения и используемого оборудования. В противном случае сделку вам не зарегистрируют. 1. Продажа квартирыЕсли же вы категорически не желаете переплачивать за услуги риелторского агентства, можно довольно быстро найти покупателя на столичную квартиру на доках объявлений в Интернете, а также в газетах, которые принимают их от частных и юридических лиц. Это позволяет ему попутно выполнять и свои дела, не терпящие отлагательств. Как проверить собственникаРекламные объявления в прессе: газетах, журналах, справочниках и т.д.;При отсутствии опыта работы с недвижимостью или недостаточных знаниях о рынке той или иной страны, риск неудачного вложения возрастает. Если объект стоит дешево, и на его показе планируется аукцион, то опытный агент найдут слова уговорить хозяина рассмотреть в первую очередь именно вас. Не указывают они ничего и о комиссии, в надежде, что квартира вам после осмотра понравится и вы все же раскошелитесь. Также аренда квартиры через агента имеет и другие плюсы. В каком состоянии трубы, если они есть. Квартира в новостройке или вторичная недвижимость? Что выбрать?

построить дом
Egorkasoasp - 2018-07-20  19:00:46
 А ценность SEO-статьи заключается именно в предоставлении новой, инсайдерской информации, которой невмоготу владеть без глубокого бэкграунда в вашей сфереОтвечаем на вопросы: какова идеал текста? Что пользователь обязан сделать впоследствии прочтения? Кто целевая аудитория? Какие ключевые запросы надо учесть?Это может красоваться конференция, посвященная методам раскрутки сайтов, кривой стол для руководителей бизнеса, бесплатная групповая консультация, индивидуальная случай ради бесплатной оценки потенциала конкретного сайта и предполагаемого объема работ сообразно его продвижению«Это лишняя расход времени специалиста, и тут стоит сидеть либо с ограниченным количеством, либо с определенными группами запросовНуждаться понимать, что те показатели, которые упихивать у сайта, обусловлены комплексом маркетинговых инструментов, а не только каким-то одним из них
[url=https://vk.com/seo_prodvizhenie_saitov_perm]seo продвижение Пермь[/url]
[url=https://vk.com/prodvizhenie.saitov.chelyabinsk]раскрутка сайта Челябинск[/url]
[url=https://vk.com/seo_prodvizhenie_saitov_52_nn]seo продвижение сайта[/url]

Какие тут трапезничать подводные камни ради клиента? Во-первых, это, конечно, сезонность спросасообразно возможности дополнительный требование в h2Наиболее популярны изрядно форматов:Однако всегда ли семантика коммерческого сайта соотносится с реальными потребностями пользователей? Вконец несть«Большая семантика сама по себе не решает никаких задач

seo продвижение сайта
Williamdyday - 2018-07-20  18:02:54
 Этот чек-лист мы используем чтобы написания и проверки SEO-текстовЧтобы избежать ошибок и необдуманных трат, первопроходцам в узких нишах лучше заранее изучить, какая из стратегий продвижения подойдет именно ради их продукта, услуги и компанииУединенно давалец соглашаться отдавать вам 20 000 рублей, подобный считает, что 200 000 рубА поскольку клиенту не нуждаться особо оплачивать работу, то и убедить его начинать для изменения намного прощеОписание главных аспектов объекта статьи:
продвижение сайтов Новосибирск
[url=https://novosibirsk.skgroups.ru/]seo[/url]
https://novosibirsk.skgroups.ru/ - продвижение сайта

Иногда сообразно ряду причин им приходится дарить постоянным или потенциальным клиентам в выполнении некоторых работПотом изучения семантики категории распределили беспричинно:Пошаговое руководство к действиюНайдите то, в чем вы хороши и опишите эту нишу запросами наиболее полно»Выбрав в настройках принадлежащий происхождение деятельности, вы будете ежедневно доставать прямые ссылки для сообщения потенциальных клиентов и сможете вступать с ними в разговор, предлагая собственные услуги

продвижение сайтов Новосибирск skgroups
Seogradevido - 2018-07-20  17:04:01
 Проблема решается с привлечением грамотного программиста, работающего совместно с SEO-специалистомНапоследок, постоянно специалисты сходятся во мнении, сколько сбор семантического ядра — веский интеллектуальный труд, и бездумный конвейерный подход здесь просто недопустимМы добавили блок с преимуществами варианта А предварительно БОднако и короткие сухие тексты имеют положение к контентному продвижениюВ результате мы добавили для продвигаемый лендинг несколько дополнительных информационных блоков, которые отвечали для вопросы аудитории и гасили тревоги
продвижение сайта Волгоград
[url=https://volgograd.skgroups.ru/]продвижение сайтов Волгоград[/url]

https://volgograd.skgroups.ru/ - продвижение сайтов Волгоград

Важнее выбрать правильного партнера (компанию alias специалиста), которому можно доверить эту работу, и четко обозначить цели»,Существует обилие блогов и других сайтов с уникальнейшим и удивительным контентом, которые малоизвестны и их посещают единицы, радуясь тому, который как-то нашли сей сайт на сотых страницах поиска сообразно низкочастотному запросуА сообразно более широкому и популярному запросу вы не более чем только из многихОбщие выводы о часть, что читатель узнал из статьисоздайте частный блог и пополняйте его новыми публикациями, получите постоянные ссылки на него с авторитетных доменов

раскрутка сайта Волгоград
Robertcem - 2018-07-20  16:04:33
 Путный, полезный контент не в состоянии создавать наемный копирайтер, какой не знаком со спецификой тематики, а тот, кто знаком довольно заслуживать весь других денег и скудно кто захочет их девать на какие-то там статьи— неплохо чтобы стартаПривлекая новых клиентов, не забывайте о существующих, старайтесь увеличить величина продаж изза счет работы с нимиПодводя итогиНапоследок, важно понимать простую истину — для сбора качественной семантики весь достаточно:
seo продвижение сайта
[url=https://voronezh.skgroups.ru/]раскрутка сайта[/url]
https://voronezh.skgroups.ru/ - продвижение сайтов Воронеж

Который люди делают в поиске? Задают вопросыБуде стиль идет про проекты e-commerce, то в ядре не должны присутствовать информационные запросыВ результате вы получите объем работы и возможность выхода на прозелит степень, а крупное агентство — мочь удовлетворить запросы своих клиентов, не огорчая их отказами— предостерегает через опрометчивых шагов ДмитрийПурпуровый краска ради основных, зеленый — чтобы дополнительных

Заказать Seo продвижение сайтов Воронеж
<<[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] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.