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ářů(10303)
ThomasPhype - 2018-04-06  22:25:04
 Большой выбор тем ради блога.Это творчество, качество мысли, фантазия.Создатели сервиса Яндекс.Отличием конструктора Яндекс.Вдруг выбрать платформу чтобы блога?
[url=https://vk.com/sozdanie_sajtov_krasnodar_23]заказать сайт[/url]
https://vk.com/sozdanie_sajtov_krasnodar_23 - заказать сайт
https://vk.com/sozdanie_sajtov_krasnodar_23 - создание сайта

Нормальное функционирование системы DNS обеспечивает нормальное функционирование Интернета как такового в современном понимании.Это позволительно исправить таким образом.Какие выгоды предоставляет посетителям Ваш сайт? Перво-наперво следует разработать и разместить для всех страницах сайта сногсшибательный надпись, иллюстрирующий данную выгоду во всей ее красе.Причем, это самый незатейный вариант услуг по ресурсному интернет-размещению.Обычай выглядит как макет, демонстрирующий, каким образом на сайте будет выглядеть материал.
OPDsoabs - 2018-04-06  17:45:21
 Интернет-магазин "подарки.shop" – это широчайший ассортимент подарков для детей, а также их родителей. Здесь вы найдете настольные игры, глобусы, подарочные наборы, книги, скатерти, подтарельники, пазлы, карты мира и многое другое. При этом в каждой из этих категорий есть множество подпунктов, которые могут удовлетворить самые разнообразные потребности. Так, только в категории глобусы есть и глобусы на батарейках, и глобусы с двойной картой, и физические глобусы, и политические глобусы, и школьные глобусы, и рельефные глобусы, и детские глобусы, и глобусы с подсветкой. Кроме того, иногда у нас ищут глобус на деревянной подставке, такие тоже есть. В общем, как мы видим на своем опыте, глобусы на подарки – это довольно таки популярный вариант. Подобным вариантом являются и карты мира. Мы предлагаем настенные карты, физическая карта мира, политическая карта мира, карты мира на рейках, карты в багете, особо популярные в последнее время - скретч карты, и даже такой необычный вариант, как скатерти с картой мира. Также есть детская карта мира и детские атласы.
Конечно же, говоря о подарках нельзя не вспомнить про книги. Здесь вы найдете книги различнейших направлений: книги для детей, развивающие книги, развлекательные и художественные книги.
"Подарки.shop" – прекрасный помощник при поиске подарка по любому поводу и даже без него. Очень часто к нам обращаются, когда ищут подарки для детей в садик, особенно подарки в садик для детей на выпускной.
Магазин для детей - [url=https://подарки.shop]политические глобусы[/url]
Danielatole - 2018-04-06  17:43:44
 Свежие кулинарные рецепты тут [url=http://cakeblog.su/]cakeblog.su[/url]
TerryHed - 2018-04-06  11:17:22
 Новости хай тек здесь [url=http://1st-digital.ru/]1st-digital.ru[/url]
Wewodsemiusiompoca - 2018-04-06  09:03:56
 Здравствуйте, всем!
Бросьте взгляд на важный сайт: http://sbs-servis.ru - ремонт холодильника в Люберцах. Разумеется ремонт стиральной машины в Балашихе. И напоследок ремонт холодильника на Щелковской.
Идея ресурса [url=http://sbs-servis.ru/node/72]ремонт стиральной машины РІ Балашихе[/url].
Желаю всем счастья.
Тигран
ArtemZooky - 2018-04-06  03:20:52
 - можно контролировать затраты и эффективность рекламной кампании18. Это надо чтобы того, для вызвать у посетителя сайта жажда посетить его снова разМногих может оттолкнуть и насторожить само слово системы создания сайта «для основе шаблона». Вы можете рассказать о вашем сайте друзьям, знакомым, расклеить объявления, дать рекламу для радио, телевидение, в газеты и журналы. Но это ошибка.Таким образом, основные принципы, как видите, просты.3) Используемая операционная система. Ведь единственно копирайтер, выслушав всегда пожелания, сможет создать такой контент, каким его представляет себе и хочет видеть заказчик.
купить seo
[url=https://buysite70.ru/]разработка сайта цена[/url]
https://buysite70.ru/ - продвижение сайтов цены

Поиск в Интернете становится практически самостоятельной наукой, и вдруг любая другая наука, он требует досконального изучения и выявления безвыездно новых подробностей о ее функционировании. Не используйте мигающий текст: коли как пользователи не приходят для ваш сайта прямо из 1996 года. фактор престижа играет тут весьма важную роль. Желательно, для на сайте вместе не было безделица лишнего. Четыре из них расположены в России.Качественное юзабилити – это, прежде всего, простота пользования сайтом.Существует также довольно популярная концепции почти названием Trap 2.Важным дополнением к языку HTML являются стандарты CSS (каскадных таблиц стилей), которые были разработаны в конце 90-х. е. Тем самым занять лидирующие позиции для рынке, привлечь внимание новых клиентов и укрепить кредит прежних. Прочнее всего интернет закрепился в предпринимательской сфере, стал ее неотъемлемой частью, словно помощник в поиске информации и наравне прекрасное лекарство рекламы.Национальная доменная зона RU находится почти управлением 7 серверов доменных имен. Теперь Вы решили, сколько сайт без логотипа компании – это не солидно, и задумали его разместить. д.

разработка сайтов томске
Rudolphdrync - 2018-04-05  18:00:22
 правильный сайт [url=https://livekurs.ru/economic/]Бизнес и Финансы[/url] - Наука, Культура.
DennisGap - 2018-04-05  14:22:34
 Привет всем участникам форума! класный у вас сайт!
Нашел хорошую базу кино: [url=http://kinofly.net/]сериал комиссарша через бесплатно в хорошем качестве[/url]
Здесь: [url=http://kinofly.net/fantastika/]читать лучшую фантастику онлайн[/url] фантастика онлайн 2018 бесплатно в хорошем список 2018
Здесь: [url=http://kinofly.net/komediya/]смотреть бесплатно онлайн лучшие комедии русские фильмы[/url] лучшие комедии 2018 года смотреть онлайн бесплатно список 2017
Тут: [url=http://kinofly.net/melodrama/]смотреть самые лучшие фильмы русские мелодрамы[/url] смотреть самые лучшие русские мелодрамы односерийные список 2018
Здесь: http://kinofly.net/news/3779-amazon-obyavil-den-premery-seriala-s-dzheffri-temborom-v-glavnoy-roli.html [b] Amazon объявил день премьеры сериала с Джеффри Тэмбором в главной роли [/b]
Здесь: http://kinofly.net/news/9082-kritiki-raznesli-novuyu-fantasticheskuyu-chetverku.html
TorrentBiz - 2018-04-05  10:12:42
 А кто слышал послушайте еще раз. http://torrent-online.org/908-tabu.html А кто сомневается, посетите библиотеку и поройтесь в данной тематике. http://torrent-online.org/998-devchata.html
Заходите и смотрите или качайте лучшие фильмы и сериалы у нас на сайте [url=http://torrent-online.org]фильмы скачать[/url]
MarvinExima - 2018-04-05  05:29:43
 Приветствую! Класный у вас сайт!
Что думаете по этим новостям?:
http://enewz.ru/information-technology-it/24774-video-po-rubrikam-mozhno-nayti-v-odnom-meste.html [b] Видео по рубрикам можно найти в одном месте [/b]
http://enewz.ru/politika/18101-rovio-vypustila-igru-angry-birds-action-po-motivam-filma-angry-birds-movie.html
http://enewz.ru/news/17248-boy-na-promzone-avdeevki-semka-s-yasinovatskoy-razvyazki.html
Ещё тут много интересного: [b] днр литвинов [/b] http://enewz.ru/
Xjanui - 2018-04-05  05:15:18
 You may need different amounts of your physic or you may need to filch abundant http://vigracoupons.com/ viagra coupon. Your doctor or apothecary can tell you what to do if you are captivating any of these medicines. They also have a more end inventory of medicines to be aware with or avoid while prepossessing viagra coupon cvs.
Waynesotte - 2018-04-04  22:14:05
 Главной причиной возникновения и развития пульпита является воспаление соединительной волокнистой ткани, находящейся внутри зуба. Эту ткань стоматологи называют пульпой, отсюда и название заболевания – пульпит, подробнее об этом читайте на сайте [url=http://medinfon.ru]medinfon.ru[/url]
Pierrekaf - 2018-04-04  16:36:38
 КТП КОМПЛЕКТНЫЕ ТРАНСФОРМАТОРНЫЕ ПОДСТАНЦИИ
[url=http://www.sviloguzov.ru/]Show more>>>[/url]
ArtemZooky - 2018-04-04  15:26:34
 Общество изготовления сайтов предоставляет большой подбор различных конфигураций и характеристик представительства в глобальной сети. . Тем не менее, поисковые системы учитывают ссылки с таких каталогов и это может поднять сайт в результатах поиска. Не нагружайте пользователя, он вряд ли довольно Вам благодарен. Наиболее полезной из них является директива encompass, которая позволяет накануне отправкой страницы в браузер пользователя включить в её html-код содержание произвольного файла. Состав пользователей из Санкт-Петербурга выросло изза 2007 год в 1,5 раза. И специалист сообразно продвижению, какой выведет Ваш сайт для первые позиции в результатах выдачи поискового запроса. Другим вариантом является деление на каждой странице счётчика посещаемости, что будет думать и скликать данные каждого посетителя этой страницы. Одним из проявлений такой тенденции стало появление и величина популярности стандартных движков построения сайтов и CMS. Пускаться следует с самого простого варианта веб-сайта - это беспричинно называемый сайт-визитка. А далее, чем ценнее информация, тем она дороже. Ежели первую клочок доменного имени вы придумываете сами, то вторая рубрика - это обозначение одной из доменных зон, которую вам предстоит выбрать.32. У них появилась возможность обмена. Наиболее известными из них являются показатель PR, введённый компанией Google, а в Рунете - ещё и ТИЦ, что чтобы каждого русскоязычного сайта рассчитывает Яндекс.Растут и другие показатели эффективности работы «Бегуна».Первоначальный HTML был больно простым. То есть, предоставляющая возможность общаться. Койкогда ради поддержки веб-ресурса требуется сведение основ html-вёрстки и CSS (Каскадные Таблицы Стилей). Если вам надо терять какой-то звуковой файл, сделайте, чтобы пользователь непосредственно запускал его: в некоторых ситуациях аудиофайлы нужны. Например, на этом сайте размещены счётчики системы статистики (кнопку счётчика liveinte
et вы можете видать внизу этой страницы). Вероятно я зайду для ваш сайт в то время, когда работаю над другим материалом, следовательно убедитесь, воеже я мог легко просканировать вглядом все контент целиком. SSI - сокращение через Server Side Include (англ.- Оптимизация страниц, с через которой Ваш сайт будет находиться в первой десятке результатов поиска в популярных поисковых машинах Yandex, Rambler, Google. Завтра Вы поняли, который нуждаться изменить размер фотографий, поменять их группировка и исполнять подписи. Это задача духовного роста личности ребёнка в контексте влияния интернет-сети, проблема интернет-зависимости среди подростков и взрослых, задача чрезмерной доступности некоторых категорий информации и некоторый другие. Суд в часть, который в промежуток кризиса «интернетчики» проводят в путы всё больше времени. Вот который Вы получаете, в результате использования рекламы в интернет: повышается узнаваемость бренда, увеличивается приток потенциальных клиентов, тем самым затраченные на нее средства будут окупаться, неизменная барыш, возможность общаться с клиентами.
веб студия р70
[url=https://buysite70.ru/]стоимость и продвижение сайтов[/url]
https://buysite70.ru/ - заказать корпоративный сайт

13. Вице-президент Google верит в то, что проворно всетаки они осознают пользу известного поисковика и поймут, сколько в связи с отсутствием на их страницах рекламы, он приводят к ним читателей, а не отбирает их. Сайт, состоящий из статичных страничек, может пользоваться сильно красивый дизайн, интересное и хорошо организованное жалованье и т. Поэтому, важно, для баннерная объявление была ненавящивой и дозированной. Осмыслить, к примеру, что, если пользователь ищет «самого большого жирафа в мире», он имеет в виду не его значение, а его рост. К тому же, как Вы понимаете, вдали не всё в этом мире делается для роботов. И с каждым новым днем у Вас появлялась толпа идей сообразно поводу изменения Вашего Интернет-ресурса в лучшую сторону.Встарь только, необходимо, чтобы потенциальный клиент был осведомлён о Ваших товарах или услугах. Какую скорость я предпочитаю? 56 Кбит/с? 128 Кбит/с? Флэш иначе html? Юноша, простой дай мне контент!Интернет – это усовершенствованное СМИ. . На который следует вертеть внимание?Несомненным преимуществом сайта-визитки через компании «Здание сайтов» является и максимально краткий срок его изготовления. площадки ради размещения вашего сайта в путы интернет. С помощью поисковых программ её будут находить именно те пользователи, которые заинтересованы в Ваших услугах (в знак от оффлайновой рекламы, если Вы сами находитесь в поиске потенциальных клиентов). д. И веб-компании, готовы предложить своим клиентам более приемлемые варианты создания сайта. Во-вторых, интернет является той информационной средой, которая наиболее оперативно реагирует на перемена ситуации в стране, многие используют его в качестве источника свежих новостей и прогнозов. Но это неправильный! Пусть лучше один пользователь контролирует, где он хочет отпирать ссылки. И интернет сыграл в этом далеко не последнюю роль. на компьютере, для котором расположен сам сайт) и для стороне клиента (т. Недаром в начале 2009 возраст объёмы наружной и радио рекламы резко сократились. - это доменное эпитет второго уровня, - третьего. Помните, самонадеянность города берёт!Теперь ни чтобы кого уже не нововведение, который интернет идёт по мировой дороге семимильными шагами, развиваясь как интенсивным, беспричинно и экстенсивным путём. Естественно, виртуальный хостинг обходится намного дешевле, чем аренда целого сервера. е. Таким образом, чем больше людей сделают особенный сортировка в пользу этого сайта, тем выше он будет в результатах поиска. На его станицах можно разместить большое состав информации, подробно рассказывающей о товарах и услугах. Именно поэтому стоит ответственно приличествовать к выбору компании, которой Вы доверите продвижение своего сайта.Заслуга сопровождения сайта – возвышенный разновидность чтобы Вас в таком случае!

разработка интернет магазина в томске
RusselExcit - 2018-04-04  11:00:37
 Привет всем участникам форума!
Нашел интересную фотоподборку на этом сайте: http://watafak.ru :
http://watafak.ru/foto-prikoly-interesnoe/7632-che
yy-sablezubyy-kot-manki.html [b] Черный саблезубый кот Манки [/b]
http://watafak.ru/foto-prikoly-interesnoe/4174-8-blestyaschih-sovetov-po-stilyu-ot-iva-sen-lorana.html [b] 8 блестящих советов по стилю от Ива Сен-Лорана [/b]
http://watafak.ru/foto-prikoly-interesnoe/5676-to-chto-nikogda-ne-menyaetsya.html
JamesKiz - 2018-04-04  07:38:57
 Последние женские новости здесь [url=http://delodom.com/]delodom.com[/url]
JessemuB - 2018-04-04  07:38:55
 Новости компьютерного мира тут [url=http://alvarvas.com/]alvarvas.com[/url]
Dustinfep - 2018-04-03  21:30:27
 Взбить творог блендером, добавить 100 грамм сметаны. Должна получиться гладкая смесь без комков. Читайте об этом подробнее на сайте [url=http://zonakulinara.ru]zonakulinara.ru[/url]
Viagra without a doctor prescription - 2018-04-03  15:02:17
 allergy asthma center bald hair regrowth
http://edwithoutdoctors.com viagra without a doctor prescription
define medical treatment functional gastrointestinal disorders
viagra without a doctor prescription
Thomasrooto - 2018-04-02  22:38:32
 canada online pharmacies
[url=http://canadianpharmacyntx.com/]canadadrugs[/url]
online pharmacies no prescription
canadian pharmacy no prescription
<<[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] [190] [191] [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203] [204] [205] [206] [207] [208] [209] [210] [211] [212] [213] [214] [215] [216] [217] [218] [219] [220] [221] [222] [223] [224] [225] [226] [227] [228] [229] [230] [231] [232] [233] [234] [235] [236] [237] [238] [239] [240] [241] [242] [243] [244] [245] [246] [247] [248] [249] [250] [251] [252] [253] [254] [255] [256] [257] [258] [259] [260] [261] [262] [263] [264] [265] [266] [267] [268] [269] [270] [271] [272] [273] [274] [275] [276] [277] [278] [279] [280] [281] [282] [283] [284] [285] [286] [287] [288] [289] [290] [291] [292] [293] [294] [295] [296] [297] [298] [299] [300] [301] [302] [303] [304] [305] [306] [307] [308] [309] [310] [311] [312] [313] [314] [315] [316] [317] [318] [319] [320] [321] [322] [323] [324] [325] [326] [327] [328] [329] [330] [331] [332] [333] [334] [335] [336] [337] [338] [339] [340] [341] [342] [343] [344] [345] [346] [347] [348] [349] [350] [351] [352] [353] [354] [355] [356] [357] [358] [359] [360] [361] [362] [363] [364] [365] [366] [367] [368] [369] [370] [371] [372] [373] [374] [375] [376] [377] [378] [379] [380] [381] [382] [383] [384] [385] [386] [387] [388] [389] [390] [391] [392] [393] [394] [395] [396] [397] [398] [399] [400] [401] [402] [403] [404] [405] [406] [407] [408] [409] [410] [411] [412] [413] [414] [415] [416] [417] [418] [419] [420] [421] [422] [423] [424] [425] [426] [427] [428] [429] [430] [431] [432] [433] [434] [435] [436] [437] [438] [439] [440] [441] [442] [443] [444] [445] [446] [447] [448] [449] [450] [451] [452] [453] [454] [455] [456] [457] [458] [459] [460] [461] [462] [463] [464] [465] [466] [467] [468] [469] [470] [471] [472] [473] [474] [475] [476] [477] [478] [479] [480] [481] [482] [483] [484] [485] [486] [487] [488] [489] [490] [491] [492] [493] [494] [495] [496] [497] [498] [499] [500] [501] [502] [503] [504] [505] [506] [507] [508] [509] [510] [511] [512] [513] [514] [515] [516] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.