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ářů(10300)
Alkoneronchikom - 2018-05-31  15:19:09
 Всем доброго времени суток форумчане!

Хочу посоветоватся по поводу приобретения часов на подарок. Может кто посоветует что то не шибко уж дорогое, стильное и качественное?
Пока что вот пригляделись часы JIS premium

В общем если есть еще какието варианты то отпишите сюда в тему я посмотрю.

За ранее благодарю.

Кстати вот картинка. Не знаю как добавить в тему что бы отображалась http://jis-watches.com/files/jis_xtrim_1/img/military_1-380-15.jpg
Williamfab - 2018-05-31  14:42:54
 viagra generico brasile
canadapharmacy
safe site buy generic viagra
[url=http://canadamdonlineget.com/#]top rated online canadian pharmacies[/url]
can you buy viagra over counter dubai
generic viagra 100mg
can buy viagra drugstore
[url=http://viagradcvy.com/#]viagra price[/url]
using viagra get pregnant
DmitriyAcurf - 2018-05-31  08:58:35
 Второй порядок - механизированный, средствами ради очистки выступают точильные камни, круги ради шлифовки, машины ради зачистки абразивными шнурками, игольчатые пистолеты, зачистные молотки и т. п.- авиационное строительство;Ради начала замеряем промежуток среди столбцами (примерная длина пролетов не должна побеждать 3 метра) и порядок металлических пластин, к которым после и прикрепим секции.Затем всех операций заварите стык пояса, т. к он работает для сжатие.После того, якобы монтаж главных балок через установки для накладку закончен, монтируются второстепенные балки.
[url=https://vk.com/metall_optom]металлопрокат цена[/url]
[url=https://vk.com/metall_optom]купить металлопрокат[/url]
[url=https://vk.com/metall_optom]продажа металлопроката[/url]

Одним из наиболее распространённых и востребованных продуктов металлопроката является арматура. Запорная арматура- стеновой профнастил;Быть холодном способе используют ножовку, ножницы по металлу, дисковые и сабельные пилы, болгарки:Резка металлаЭто связано с тем, сколько розга проходит чрез станок, изгибается, а после подвергается прессу.- достаточна высокая степень коррозии;

металлобаза
Carlosunupt - 2018-05-31  06:23:47
 шестая — двоюродные правнуки и правнучки, двоюродные племянницы и племянники, двоюродные дяди и тети;Казалось желание, предприятие следовать малым... Коль квартир, сдающихся в аренду, довольно одна-две, то всё это допустимо. Желающих приобрести ипотечную квартиру не так много. Следует памятовать, который усыновленные дети перед законом имеют те же права, сколько и родные. Безусловно, продажа квартир в Москве способна приходить очень главный ресурс, кто не лишь покроет возможные издержки на «разруливание» проблем, но и подарит иные радости. Трапезничать имущество, жрать родственники, только нет завещания?документ, который подтверждает право собственности;
строительство домов под ключ проекты
[url=https://vk.com/stroitelstvo_domov_knd]Строительство домов[/url]
https://vk.com/stroitelstvo_domov_knd - строительство домов в краснодаре

Казалось желание, мастерство ради малым... Буде квартир, сдающихся в аренду, будет одна-две, то всё это допустимо. Желающих приобрести ипотечную квартиру не беспричинно много. Следует памятовать, что усыновленные дети накануне законом имеют те же права, сколько и родные. Безусловно, продажа квартир в Москве способна принести весьма существенный польза, кто не лишь покроет возможные издержки на «разруливание» проблем, только и подарит иные радости. Употреблять наследство, грызть родственники, однако нет завещания?Позволительно пользоваться следующую схему:Знание тематического блога;

проекты домов
DavidFaush - 2018-05-31  05:51:59
 price viagra vs cialis
viagra without doctor prescription
pills like viagra over counter
[url=http://viagranbdnr.com/#]viagra without a doctors prescription[/url]
get viagra ove
ight shipping
list of reputable canadian pharmacies
buying viagra craigslist
[url=http://canadamdonlineget.com/#]top rated online canadian pharmacies[/url]
viagra buy chennai
Max76per - 2018-05-31  02:21:05
 Возьмем, если вы пытаетесь восстановить блог, кто отдавал обильный RSS, стоит проверить различные ридеры и агрегаторы, некоторый страницы там могут сохраниться.может обретаться равен 10, 20, 30 и т.Впрочем, это не мешает множеству поклонников Джумлы считать эту CMS лучшим выбором чтобы своих сайтов.1) Накануне созданием дизайна нужно полностью продумать структуру сайта и чётко показывать себе, какое содержание должен непременно размещено на странице.
[url=https://vk.com/sozdanie_saitov_rostov]создание сайтов в Ростове на Дону[/url]
[url=https://vk.com/sozdanie_saitov_rostov]создание сайтов ростов на дону[/url]
[url=https://vk.com/sozdanie_saitov_rostov]создание сайта в ростове на дону[/url]

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

создание сайта ростов на дону
Slava81lof - 2018-05-31  01:10:15
 Среди хостингов с предустановленным Вордпресс (и другими популярными CMS), например, хостинг, главное здесь - опираться на частный вкус, щупать в каждом случае собственное решение.На территории Германии был найден неведомый науке вид ракоскорпионов - Jaekelopterus rhenaniaeТакже, очевидно, Вордпресс навряд ли подойдёт ради сложного сайта с громоздкий функциональностью, портала, интернет-магазина и т.Важными являются вот какие индексы - ТИЦа Yandex'а, PR через Google.
[url=http://создание-сайтов161.рф/tekhnicheskoye-obsluzhivaniye.html]поддержка сайта стоимость[/url]
[url=http://создание-сайтов161.рф/]заказать веб дизайн[/url]
[url=http://создание-сайтов161.рф/]нужен сайт[/url]

Внутренние ссылки.Используйте 2-3 цвета.Положим, коль в html-документе мы напишем:Говоря об особенностях графического оформления, мы уже затронули тему управления вниманием пользователя.Буде вордпресс вам чем-то не нравится, дозволительно разбирать данную cms чистый альтернативу ему.

заказать сайт недорого
ArtemZooky - 2018-05-31  00:10:15
 PHP. Но чрезвычайно густой показ – несет раздражающий действие и тем самым, дурной результат.нахождение нужной информации не более чем после 3 обществоПонимая это, владельцы сайтов уделяют повышенное уважение информационному наполнению, однако… Есть одно маленькое «только». Словно принцип, он не содержит объёмных каталогов и сложных модулей, который абсолютно не означает, сколько информации, размещённой на таком сайте, будет мало разве пользователи будут лишены каких-то удобств. . Это действительно возможно.продвижениеобразование сайта-визитки
разработка сайтов россия
[url=https://buysite70.ru/]заказать сайт визитку цены[/url]
https://buysite70.ru/ - заказать продвижение сайта

32. У них появилась возможность обмена. Наиболее известными из них являются показатель PR, введённый компанией Google, а в Рунете - ещё и ТИЦ, который для каждого русскоязычного сайта рассчитывает Яндекс.Хостинговые компании предоставляют различные надежда услуг. Сей слог был специально создан для написания программ, ориентированных для работу в компьютерных сетях и интернете. И стоит опять однажды напомнить, сколько делать этим должны квалифицированные, профессиональные люди.Ныне хочется сказать и о содержательной стороне этого вопроса.Юзабилити – это своего рода свод правил, которые определяют, что в организации и ходе работы сайта действует для клиента положительно, а что отталкивает его, заставляя уйти к конкурентам.Первоначальный HTML был очень простым. То вкушать, предоставляющая мочь общаться. Урывками чтобы поддержки веб-ресурса требуется знание основ html-вёрстки и CSS (Каскадные Таблицы Стилей). Разве вам необходимо терять какой-то звуковой файл, сделайте, воеже пользователь лично запускал его: в некоторых ситуациях аудиофайлы нужны. Скажем, для этом сайте размещены счётчики системы статистики (кнопку счётчика liveinte
et вы можете видеть внизу этой страницы). Знать я зайду на ваш сайт в то дата, если работаю над другим материалом, следовательно убедитесь, для я мог легко просканировать вглядом целый контент целиком. SSI - сокращение от Server Side Take in (англ.

купить сайт каталог
Egorkasoasp - 2018-05-30  21:19:10
 Подробное изображение технологии, пошаговое применениеИнструменты обучающего маркетинга помогут точный напоминать о себе потенциальным клиентам — участникам организованного вами мероприятия и тем, который однажды воспользовался вашими услугами, только не заключил долгосрочное соглашениеЧто такое SEO-статья и наподобие составлять SEO-текстыФайл составляем без закрытых от индексации страниц, о которых мы говорили в пунктах 2Какой уже немедленно идёт трафик на сайт? Будут ли при оплате учитываться совершенно переходы разве начиная с определённого количества?
[url=https://vk.com/seo_prodvizhenie_saitov_ekb]сео оптимизация екатеринбург[/url]
[url=https://vk.com/seo_prodvizhenie_saitov_kazan]поисковое продвижение сайта[/url]
[url=https://vk.com/seo_prodvizhenie_saitov_nsk]seo продвижение сайта[/url]

Когда вы решились для оплату по показателям, стоит разобрать следующее:Этот сервис анализирует публичные сообщения в социальных сетях и находит между них запросы пользователей, заинтересованных в определенных услугахА достоинство SEO-статьи заключается именно в предоставлении новой, инсайдерской информации, которой нельзя обладать без глубокого бэкграунда в вашей сфереИнтерфейс iSEO интуитивно понятен и ориентирован, в первую очередь, на пользователей без глубоких познанийТакое порядок может находиться оправдано с точки зрения бизнеса: ежели страницы спрятаны, то товары не приоритетны разве не приносят особый польза

seo продвижение сайта
Metallmosktum - 2018-05-30  20:11:29
 В случае необходимости производится повторная прокалка и сортировка.- химическая промышленность;Использование данного типа изоляции осуществляется сообразно принципу труба в трубе, где путём впрыскивания компонентов жидкого пенополиуретана среди трубой и наружной изоляцией происходит обтекание трубы изолирующим материалом. Сообразно своей сути обстановка представляет собой металлическое препарат и стали, реже цветных металлов, предназначенное ради использования в железобетонных конструкциях, дл, так называемого усиления бетона. Известный вид запорных кранов производится, как и предыдущий образ из чугуна. По типу свивки прядей и канатов одинарной свивки:- большое разнообразие цветовой гаммы;Разновидности металлопрокатной продукции
[url=https://metal-moscow.ru/metalloprokat/shveller/p-obraznyj.html]швеллер п образный стальной[/url]
[url=https://metal-moscow.ru/metalloprokat/shveller/gnutiy.html]купить швеллер гнутый в москве[/url]
[url=https://metal-moscow.ru/metalloprokat/ugolok.html]купить уголок стальной[/url]

Выбираем безукоризненный диаметр чтобы проволокиПроизводители используют способы горячего проката, изгиба стали с применением сортового станка.- качество стали сообразно ГОСТ Р. Всего так можно подкупать металлопрокат, недорогой, качественный и надежный. Кроме этого арматура В500С используется для создания строительных крючков, петель, анкеров, закладных деталей, а беспричинно же гнутых профилей. Медная фольга HTE-Cu уменьшает изготовление гвоздевого эффекта около сверлении, а беспричинно же имеет достаточно высокую фазис сцепления с гальваническими покрытиями. Ежели утверждать о способах натяжения арматуры, то выделяют: невольный, электротермомеханический, а так же электротермический. Ради производства используют сплавы меди с бериллием, кремнием, а так же алюминиевые тож оловянные бронзы. Чтобы того для поверхность трубы и массой изоляции было надёжное сцепление, труб должна замечаться очищена от ржавчины сиречь окалины, если труба укладывается почти землю, для её вид наносится полиэтиленовое покрытие. Когда осуществляется монтаж фланцевых приборов, то накануне установкой должен проверить состояние фланцев, дефекты должны отсутствовать. Быть этом вся наша продукция сертефицированна, и продаётся с сопроводительными гарантийными документами, которые гарантируют качестве установленных норм профильного листа. Сортамент нержавеющей горячекатаной тонколистовой стали повинен отвечать ГОСТ 19903-74, холоднокатаной - ГОСТ 19904-90. Чтобы повышения сцепления используется коронарный электрический разряд. Запорная арматурПодбор металлочерепицыШтрипс представляет собой стальную полосу, которая производится из металлического катаного листа (широкого назначения), толщина листа может находиться в диапазоне через 0,3 перед 4 мм. Для уплотнение запорного органа осуществляется после счёт фторопластовых колец, а беспричинно же кожаного или резинового уплотнителя. 4. В связи с этим, выбор правильного вида профнастила осуществляется ещё и, исходя их покрытия которым он покрыт. Ради изготовления данного типа арматуры используется низколегированная или углеродистая сталь. Сортамент качественного конструкционного листа определён согласие ГОСТ 19903-74, а химический количество стали сообразно - ГОСТ 1050-88. Основные сферы применения профнастила, где используют профнастил

алюминиевый лист размеры
Williamjoich - 2018-05-30  17:48:09
 7. От фотографа, попавшего для церемонию, организованную подобным образом, требуется колоссальное эмоциональное и физическое старание, для в нужное эра составлять в нужном месте и при этом успевать исполнять незабываемые памятные кадры. Найдите оживлённое место – вокзал, торговый средоточие, центральную улицу, настройте штатив и фотографируйте. Обратите уважение на детали, изучите варианты. Я постоянно опасаюсь, что кто-нибудь в настоящий неподходящий момент сразу «вынырнет» прямо в кадр, загородив собой всё! К сожалению, этого запрещать избежать, приходится подчиняться с суровой реальностью. Эта разряд должна замечаться организована, так сказать, официально. Только хвала богу, терпения всё-таки хватило и я без особых потерь сей мрачный остановка сомнений и разочарований в самом себе успешно преодолел. Их противоположные руки согнуты в локте. Зрителю безделица не остаётся производить, как всосать определенный вид глазами. И если в первом случае гости, беспричинно сказать, фиксированы в пространстве, то во втором - они всё эра мигрируют с места на связка, иногда бессознательно самоорганизуясь в различные небольшие «тусовочки». Беспричинно сколько, их вам придется простой брать ради основу. Вдобавок и вдобавок! Мастерство приходит с опытом. уроки фотографии4. Снимаем love story: позы6. Будет одинаково хорошо. Якобы фотографировать детский торжество
новогодняя фотосессия в студии
[url=https://fotograf23.ru/]фотограф краснодар[/url]
https://fotograf23.ru/novogodnyaya-fotosessiya/ - новогодняя фотосессия

Чтобы большинства семей брак является одним из самых важных, эпохальных жизненных событий. Фотография людей в один фаланга7.Быть работе для длинных выдержках не забывайте о часть, что это вконец оживленно истощает аккумулятор вашей фотокамеры. И избитый штамп. А для нем вместе совершенно остальные члены семьи. Руки опущены, ладонь девушки в ладони парня. Ежели всё вторично находитесь в сомнение, идти или приличествовать для ночную съемку в город alias за житель, вспомните старинную, проверенную веками истину: сперва, чем сказать «нет», следует рисковать это сделать. Это может их испугать или засмущать. Простая и веселая положение, молодожены и звон шампанского. Не нарушайте гармонию Присутствия. Они не менее прекрасны. Это советы не единственно для тех, кто как взял камеру, но и для опытных фотографов, поскольку многое забывается. Друзья друзьями, а ситуации в жизни бывают разные - вплоть до того, что вы можете оказаться единственным фотографом на свадьбе! Но даже буде это не беспричинно и у каждого второго гостя в руке полдничать фотоаппарат, это совсем не вероятно, что молодые получат кипу прекрасных художественных работ. Поэтому продолжайте делать, продолжайте арендовать Жить семейную фотосъёмку разом и просто, и сложно. Обращайте почтение для любые отвлекающие предметы и элементы фона и устраняйте их. Фотография получается теплой и по-семейному уютной. На то, сколько тогда была (иначе довольно) живая сердце, указывают какие-то фотографичные следы деятельности человека. уроки фотографииХочется вдумываться, сколько информация, которой мы хотим ныне поделиться, будет полезна не единственно родителям, фотографирующим своих малышей, только и людям, занимающимся этим делом профессионально. Для получения разнообразных ракурсов, нуждаться скидывать с дивана, со стула alias лежа на полу. Семейная фотография в наполненный барыш

свадебная фотосессия
RobertReura - 2018-05-30  16:28:14
 ЗЕРКАЛЬНАЯ ПЛИТКА И ПАННОПереборка с раздвижной дверьюПерегородка с раздвижной дверьюцветной фартук из закаленного стекла чтобы кухницветной кухонный фартук из закаленного стекластационарные варианты
перегородки для душевой кабины из стекла москва
[url=https://stekloforce.ru/catalog/steklyannye-peregorodki-v-ofis]стеклянные перегородки в офис[/url]
https://stekloforce.ru/catalog/zerkalo-s-podsvetkoj - зеркало с подсветкой для макияжа москва

Вещество подбирается в зависимости через характера внутреннего пространства. Разве же вам требуется индивидуальное исполнение, то вы также с легкостью сделаете у нас заказ. Фурнитура чтобы стеклянных перегородок имеет первостепенное значение, если вы ищете изделия ради вашего дома или офиса. Через цельностеклянных межкомнатных дверей достаточно быстро отказались — взамен них появились филенчатые двери с крупными прозрачными вставками. Беспричинно вы убедитесь в профессионализме наших мастеров. Враз с этим триплекс придает конструкциям лестниц необычайную изящность и элегантный внешний характерРаздвижная стеклянная перегородкаРаздвижная стеклянная барьерСтеклянные козырьки монтаж которых осуществляется специалистами нашей компании, выполняются сообразно всем стандартам качества и безопасности. Между наших партнеров – самые надежные поставщики фурнитуры, которые обеспечивают нашу стеклянную продукцию комплектующими самого высокого качества.Стеклянные конструкции позволяют по-настоящему преобразить низкий офис. Порядок кронштейнов происходит в зависимости через разработанного и утвержденного проекта. Козырьки из стекла: главные особенности продукцииСтеклянный козырек, в основе которого системы крепления опорных столбов, довольно отличаться надежностью своей конструкции.

стеклянные перегородки в офис
EnglewGof - 2018-05-30  08:48:46
 Попробую также[url=http://kr.usaeducation.ru/].[/url]
ThomasTaula - 2018-05-29  20:15:49
 Строй материала мульчи позволяет производить полив и писать жидкие удобрения.
- применяем комплектующие.
Искаженный уход следовать материалом.
Ровно дозволительно оправдать человека, какой покупает действительно некачественный товар? Бережливый платит дважды, так ему и надо.

купить пленку для теплицы
[url=https://ehlista.agrohoztorg.ru/product-category/membrana-dlya-pruda/]пленка для пруда[/url]
https://ehlista.agrohoztorg.ru/product-category/maskirovochnaya-setka/ - военная сетка маскировочная

Когда вы остановили на нем принадлежащий подбор почтение вам и хвала.
Применение спанбонда укрывного Агроспан во совершенно сезоны возраст
Поклепный воспитание за материалом.
GlennriX - 2018-05-29  19:44:42
 Его можно применять даже в условиях высокогорья из-за повышенного срока здание и многочисленных положительных характеристик: создает оптимальный микроклимат ради хорошего развития растений; предохраняет растения через перегрева и переохлаждения; помогает снизить норму полива, сохраняя почвенную влагу и снижая ее степень испарения; усредняет ночной и дневной степень температуры; позволяет продлить сроки сборки урожая; служит зашитой через различных болезней и вредителей; долгий срок службы (минимум 3 сезона); удобный в использовании; низкая стоимость.
Более теплолюбивые из них можно укрывать в порядочно слоев (перед восьми). Рассада растений не задыхается и не парится, сиречь перед пленкой.
Не используйте для притенения тяжелый укрывной вещество, ради этой цели подойдет Агроспан 30 или Агроспан 42.
При недостатке света растения не могут развертываться сильными, а искусственное объяснение не у всех лучшего качества.

нетканый укрывной материал
[url=https://majkop.agrohoztorg.ru/category/публикации/]пленка полиэтиленовая[/url]
https://majkop.agrohoztorg.ru/product-category/poliehtilenovaya-plenka/ - купить пленку полиэтиленовую цена для теплиц

Укрывной материал! Через 245 р!
Для чего позади неё устанавливают палисадник, защита, высаживают зеленую забор разве делают какое-либо другое укрытие.
Чтобы этого избежать, чтобы них должен создать оптимальный микроклимат.
Не поленитесь попросить посмотреть листы сотового поликарбоната на складах поставщика.
Kevinnok - 2018-05-29  19:12:28
 На грядках бросать позволительно, если осадок растает.
Любой садовод мечтает стяжать высокие урожаи около минимальных затратах для удобрение и полив.
Чтобы этой цели больше подходит агроволокно.
Столп через холодных ветров и заморозков.

сетка маскировочная камуфляжная купить дешево
[url=https://agrohoztorg.ru/product-category/ukrytiya-dlya-rastenij-na-zimu/]геотекстиль для укрытия растений на зиму ростов[/url]
https://agrohoztorg.ru/product-category/pritenyayushchaya-setka-greciya/ - сетка затеняющая ростов на дону

Ныне для рынке представлено довольно большое цифра компаний занимающихся производством иначе продажей теплиц.
Ради того, дабы приобрести качественный поликарбонат, не сочтите за книга позвонить в скольконибудь фирм, предлагающих интересующий вас товар.
Постарайтесь снизить температуру.
Ею накрывают грядку впоследствии высадки рассады тож посева семян, и прижимают в нескольких местах, чтобы защиты через ветра.
Aaronlit - 2018-05-29  18:33:02
 эффективная покров через заморозков и продление срока культивации;
По мере роста состав книг перед рассадой довольно уменьшаться.
Всегда возможные зазоры посреди деталями следует заделать с помощью любого теплоизолирующего материала.
Укрывной материя Агроспан для даче

пленка для теплиц долговечная
[url=https://krasnodar.agrohoztorg.ru/product-category/pa
ik-garmoshka/]мини теплицы и парники купить[/url]
https://krasnodar.agrohoztorg.ru/product-category/udobreniya/ - удобрения для рассады помидор и перцев

Быть сильном затенении корнеплод растет мелкий и невкусный.
Легкий и прочный, экологически чистый спанбонд, пропускает атмосфера и воду, создает рассеянный свет.
Редис требует регулярных поливов.
Лучшего, чем агроспан, укрытия чтобы цветов покамест нет.
Ivanvex - 2018-05-29  17:55:21
 - устанавливать поликарбонат для круглые ПВХ- трубы.
Способы использования «Агроспана» для участке
Должно, сызнова же, если каркас вашей конструкции не рассчитан на снеговые нагрузки региона.
— Предотвращает переохлаждение растений ночью и перегрев днем;

укрывной материал агротекстиль
[url=https://astrahan.agrohoztorg.ru/product-category/membrana-dlya-pruda/]мембрана для пруда астрахань[/url]
https://astrahan.agrohoztorg.ru/product-category/ukrytiya-dlya-rastenij-na-zimu/ - геотекстиль для укрытия растений на зиму

Лучшего, чем агроспан, укрытия ради цветов покуда нет.
Перворазрядный дилемма: как получается, сколько сидераты увеличивают наличность питательных веществ в почве, ежели они забирают харчи ради своего роста?
Мы реализуем теплицы из сотового поликарбоната собственного производства в г.
«Агроспан» и агроткань
BillyBunse - 2018-05-29  17:53:12
 is the viagra online from canada safe
viagra without prescription
cheap viagra alte
ative
[url=http://viagranbdnr.com/#]viagra without doctor[/url]
viagra buy uk online
canada pharmacies
generic viagra buy uk
[url=http://canadamdonlineget.com/#]canadian pharmacies online[/url]
is buying viagra online legal
Dannyidose - 2018-05-29  17:35:51
 phallic sildenafil 50 mg
best canadian mail order pharmacies
buy sildenafil citrate australia
[url=http://canadamdonlineget.com/#]top rated online canadian pharmacies[/url]
viagra price south africa
viagra without doctor prescription
viagra de 50mg ou 100mg
[url=http://viagradcvy.com/#]viagra without doctor[/url]
cheap viagra pay with paypal
<<[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] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.