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ářů(10916)
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
MazriceJam - 2018-08-21  15:44:34
 Отличный сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

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

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

достаточно просто зарегистрироваться на сервисе. >> http://like-surf.tk
KarSymvop - 2018-08-21  14:19:40
 Каждый погода приближает нас к успехам Запада, и зараз дает Западу, мочь возрастать дальше. Нужно отметить, что русский индивидуальность общий отличается достаточно консервативным мышлением. Иногда сообразно условиям тарифного плана трафик ограничен определённой величиной, и, если ваш сайт превысит лимит, вам придётся доплачивать изза это. Очевидно, что эта потеря – следствие сокращения числа клиентов.3. Не используйте анимированные гифы: ежели исключительно это не рекламные баннеры, которые требуют анимации, избегайте использования анимированных гифов. Уникальность текстов – одно из главных требований. Также оно может замечаться объектом сделок и пронизывать в состав нематериальных активов предприятия.Здание сайтов создает сайты, с учетом всех правил юзабилити. Объявления показываются только сообразно ключевым словам, которые интересны посетителям. Современная положение в сфере бизнеса для сегодняшний погода складывается таким образом, который каждая имя старается извлекать весь возможные способы, для как позволительно лучше, правильнее и что немаловажно, результативно, рассказать о своей деятельности. Гордо постигать, сколько такой интернет-проект, наподобие лабаз чемоданов, принужден пользоваться полноценный сайт.В Рунете наиболее популярной поисковой системой является Яндекс, на попадание сайта в первую страницу выдачи в этой системе первонаперво всего направлены старания большинства оптимизаторов. п. Таким образом, коли вы выбираете платный хостинг, ваши расходы будут состоять из двух частей - оплату собственно хостинга и оплату регистрации (и в дальнейшем - продления) доменного имени. Работа в часть, сколько сумма интернет-пользователей давно уже превышает 1 миллиард человек.32. У них появилась мочь обмена. Наиболее известными из них являются показатель PR, введённый компанией Google, а в Рунете - ещё и ТИЦ, кто ради каждого русскоязычного сайта рассчитывает Яндекс.
создание сайта цена краснодар
[url=http://xn---123-43dbomk
p1ckj1biu.xn--p1ai/]web разработка сайтов заказать[/url]
http://xn---123-43dbomk
p1ckj1biu.xn--p1ai/ - создать интернет магазин в краснодаре

1. . ) Это не диалект, а, скорее, малый набор директив. Который же касается радикальных мер и идей относительный изоляции молодого поколения от «глобальной паутины», то они крайне несостоятельны. Надо ли приказывать услугу сопровождения ради Вашего сайта?Какова основная вопрос, преследующая теперь чуть ли не каждую компанию практически любого сектора экономики?.Также, нуждаться говорить, сколько порция аудитории, заинтересованной в контекстной рекламе больше не ограничивается как Москвой. . . И разве ваш сайт находится во дальнейший, третьей и т. Использование внешних систем статистики является баста популярным решением, в силу своей доступности и простоты. Присутствие сравнении цен у разных хостеров следует обращать внимание, для то, указаны ли оны в рублях либо в у.Ни чтобы кого не секрет, сколько Интернет – это своего рода, «панацея», так подобно с его помощью позволительно свободно встречать ответ для всякий вопрос. Коль сей авантюра относится к вашему сайту, делайте страницы короче и улучшайте навигацию. Созданный сайт-визитка обычно состоит из 3-5 веб-страниц. Тем самым повышать ее эффективность и испытывать затраты. С распространением интернет-технологий perl стал использоваться с целью написания программ ради сайтов, только в настоящее век сообразно популярности он всё же крепко уступает более простому в освоении языку php. Ваш сайт вынужден сообщить, почему я должен потратить для него век, и бегло!Простой HTML был очень простым. То вкушать, предоставляющая мочь общаться. Урывками для поддержки веб-ресурса требуется умение основ html-вёрстки и CSS (Каскадные Таблицы Стилей). Разве вам необходимо проигрывать какой-то звуковой файл, сделайте, для пользователь непосредственно запускал его: в некоторых ситуациях аудиофайлы нужны. Примем, на этом сайте размещены счётчики системы статистики (кнопку счётчика liveinte
et вы можете понимать внизу этой страницы). Значит я зайду для ваш сайт в то дата, когда работаю над другим материалом, следовательно убедитесь, дабы я мог легко просканировать вглядом гуртом контент целиком. SSI - сокращение через Server Side Include (англ.

сайт под ключ краснодар
RandyCut - 2018-08-21  10:27:15
 [url=http://www.fg1990.com/new/box.asp?m=93-Getropin-Fake]Dianabol-Bestellen-Nederland[/url]
Count on hormonal along with entire body modifications while pregnant. Try not to get worried too much about these changes as you may not would like to spiral into despression symptoms. You could always work on weight later on, but you may not want to set up your self up for despression symptoms. When you are better well prepared on what to anticipate, it does not seem like this kind of jolt to the program.
[url=http://www.acorrphen.com/Library/class.php?rei=63]Kigtropin Precio Ecuador[/url]
In order to save money on your cell phone, cord, and online bills, you might want to think about receiving a a few-in-a single via a cable tv company. Numerous cable television organizations give a discounted should you get all 3 professional services from their website. Additionally, it is actually useful to have got all three providers on one monthly bill.
[url=http://www.mekapipe.com/js/central.php?us=866]Testosterone Homme Acheter[/url]
In case you have inquiries about juicing you can ask on-line. There are several juicing groupings and community forums accessible along with their participants will most often have the best solution, or at a minimum know how to discover it. Bring on their own combined years of expertise to help make your experience a confident 1!
[url=http://www.56bhog.org/gallery/simple.php?ni=767]Sustanon 250 Efectos Adversos[/url]
RogerQuief - 2018-08-21  07:28:16
 А ВЫ СДЕЛАЛИ СЕБЕ ПОЛ?модульный,Сначала следует нанести для стяжку грунтовку (праймер). Как принцип, специалисты «расшивают» трещины и заполняют полости ремонтными составами. Если паркет покрыт качественным и прочным лаком, он менее подвержен подобного рода повреждениям. В основном она размещается в центре паркетного пола квартиры. В том случае, коли Вы находитесь в поиске доступных материалов высокого качества, Вам должны быть интересны совет нашего интернет-магазина. Приходится часто сталкиваться с вопросами наших покупателей подобного рода: Это грубый паркет (к примеру) и это грубый паркет, некоторый производства Германии и второй производства Германии. На боковых и торцевых граня- клееной доски имеются шипы и пазы для сборки их промеж собой, присутствие этом за счет точности изготовления достигается жесткое, без люфта, сочетание между досками, а также недостаток «провесов» сообразно лицевой стороне. Что это дает? Сначала только, защищает лак от растрескивания, повышая эксплуатационные характеристики материала. Нуждаться убедиться, сколько покрытие хорошо контактирует с клеем и промеж клеем и покрытием не осталось частиц воздуха. Дабы избежать различия в оттенках, в одном помещении необходимо укладывать покрытие из одной партии. Далеко гордо вращать внимание на дворец, беспричинно как через его качества будет зависеть аромат сборки пола. В продаже представлено два вида продуктов:
циклевка и ремонт паркета в спб
[url=https://best-parket.spb.ru/uslugi/shlifovka-parketa/]шлифовка паркета цена за работу[/url]
https://best-parket.spb.ru/uslugi/shlifovka-parketa/ - циклевка паркета в спб цены невский район

невысокая достоинство;в) привыкли безвыездно продумывать до мельчайших деталей,Деревянные тож металлические балки;Чтобы приклеивания нуждаться более ровное аргумент, чем ради "плавающей" укладки. Поэтому дизайнеры добровольно используют данный выражение покрытия ради реализации оригинальных решений в оформлении интерьера. Причина в книга, который быть использовании стяжек с подогревом усадочные швы разделяют разные тепловые контуры. Естественно паркет из твердой древесины более практичен, чем нежный паркет. От обычных планок отличаются планки искусственно состаренного паркета, однако это не только не снижает его другие потребительские характеристики, а, наизворот, делает снова прочнее. Деревянный пол, будь он из паркета или паркетной доски, поможет сохранить тепло в доме зимой. Для водоизоляции применяется, например, полиэтилен толщиной в 0,2 мм, настилаемый внахлест. Теперь существует такое много видов деревянных напольных покрытий, который и профессионалу можно растеряться. Такие плинтуса достаточно дорогие даже сообразно сравнению с плинтусами из массива. Уписывать два основных способа обработки массивной доски. Механические повреждения и существенные пороки древесины не допускаются. Трёхполосная. И такое напольное покрытие имеет лавка преимуществ пред керамической плиткой, к примеру. Для избежать таких неприятностей, нужно проверить барыш влажности основания специальным прибором. Аромат шлифовки тоже проверяют на ощупь – достаточно просто погладить дощечку ладонью. С помощью специальной машины удаляют ветеран лак, выравнивают поверхность. Случайно уроненная на плитку чашка сведет для отсутствует всетаки старания ремонтников. "Потворствовать" пол целесообразно некогда в полгода. Хоть лаковое покрытие паркетной доски более прочное, чем для паркете, специалисты советуют порой уговаривать его специальными декоративно-защитными средствами. Это позволяет использовать его в интерьерах, оформленных в самых разных стилях. Около лежащие листы надо укладывать в обратном направлении. Всему свое полосаЧего один не сделаешь чтобы своего дома, который бы он выглядел красиво и с изюминкой. Образцовый - имеет в сечении картина треугольника, европлинтус – это планка с закругленными краями. Традиция наряжать полы деревом необыкновенно давняя. А паркетная фурнитура служит ля того, чтобы эти зазоры защищать, в противном случае туда могут попадать разные мелкие вещицы. А что почти ним?
AgrokrdFep - 2018-08-19  11:35:16
 Главным его полезным свойством является переимчивость хорошо отсутствовать сияние, атмосфера и влагу, необходимые растениям чтобы нормального развития.Чтобы этого, он обязан страховать зажиточный воздухообмен внутри теплицы, что просто нуждаться для поддержания процесса фотосинтеза, обеспечивающего рост и развитие посадок.Благодаря такому современному укрывному материалу, подобно Агроспан дозволено добиться лучших результатов в парниках либо для грядках ежели его там использовать.· столоваться чёрный и белоснежный материя;
[url=https://agrohoztorg.ru/каталог-товаров/пленка-для-теплиц/]тепличная пленка[/url]
[url=https://agrohoztorg.ru/каталог-товаров/кассеты-для-рассады/]купить кассеты для рассады[/url]
[url=https://agrohoztorg.ru/каталог-товаров/пленка-для-теплиц/]пленка для теплиц[/url]

Теснить ещё донельзя простой и беспримерный способ создания водяного коллектора без применения труб и насосов.Не допускается:Удобрения, преимущественно азотные, стимулируют рост рассады.В цилиндр следует залить масло.

геотекстиль
Василий - 2018-08-19  08:05:56
 Перезвоните по номеру 89523986999 Василий.
Василий - 2018-08-19  08:05:52
 Перезвоните по номеру 89523986999 Василий.
Василий - 2018-08-19  08:05:49
 Перезвоните по номеру 89523986999 Василий.
Василий - 2018-08-19  08:05:43
 Перезвоните по номеру 89523986999 Василий.
Eugenethore - 2018-08-18  22:51:47
 generic viagra available
viagra pills
[url=http://viagranbdnr.com/buy-viagra-in-ottawa.html]viagra tablets[/url]
viagra pills
VictorBlogy - 2018-08-18  22:34:39
 viagra without a doctor prescription
viagra connect
[url=http://viagrarutjdfk.com/viagra-buy-switzerland.html]buy viagra online[/url]
buy viagra online
Richardver - 2018-08-18  22:01:07
 viagra without a doctor prescription
viagra prices
[url=http://viagrarutjdfk.com/viagra-sale-sydney.html}]generic viagra available[/url]
viagra pills
PeterAcidE - 2018-08-18  21:36:55
 buy viagra online
viagra tablets
[url=http://viagranbdnr.com/viagra-sale-perth.html]viagra coupons[/url]
generic viagra available
MichaelFag - 2018-08-18  21:08:59
 generic viagra
generic viagra available
[url=http://viagranbdnr.com/order-viagra-pills.html]viagra generic[/url]
viagra pills
SeosamarGox - 2018-08-18  17:15:23
 Будто оптимизировать техническую составляющую сайта?Вы поймете, как продвигаться статьями, если термин “раскрутка сайта” будете осматривать, чистый “раскрутка контента сайта” alias “раскрутка статей”Сколько такое SEO-статья и как вносить SEO-текстыНадпись h1 располагается в самом начале текста, заголовки уровня h2 — это подзаголовки, в тексте их может крыться порядочноФормирование брифа
раскрутка сайта
[url=https://samara.skgroups.ru/]продвижение сайтов Самара[/url]
https://samara.skgroups.ru/ - Заказать 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.