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ářů(8993)
Imini - 2018-01-19  21:54:55
 Extra technically savvy users, nevertheless, might find its limitations frustrating.
Since MSI launched U100 018US we all have been completely anticipating this time and now it's here, lastly we are able to simply put our own hands on new MSI U100 netbook.

[url=http://otc-inhaler.com/catalog/Asthma/Deltasone.htm]prednisone and osteoarthritis[/url]

After your self obtain Dubai, maintain upon monitoring the community newspapers and publications for buying interesting specials.
Considering going to a different space to take a look at the areas and experience a complete new method of life is thrilling.

[url=http://kamagra-store.com/]sildenafil order[/url]

A perfume brand will be half the price online because it prices in the stores.
The discuss appears to be like to pertain solely to generic variants and never the branded ones.

http://leo-translate.com.ua/nzedyv-b2612-pvnobdq-ppgcmrppos-h25477-apid/

fktrpr94f
Writer: terrowhite Give your house an elegant look by hanging an elegant and distinctive piece of Tapestry in your wall.
The greatest benefit nonetheless is that the decreased amount of distortion and enhanced clarity that improved picture high quality that LCD televisions bring along with them.
RandyAlick - 2018-01-19  16:46:31
 [b]binary options uk brokers honestly lyrics stryper sympathy

Forex Micro
[/b]
[b]Go to Site: -->[/b] http://t.co/wT0UZBaUhQ
Niklkapy - 2018-01-19  11:11:38
 bit trade

bitbon bit.tradeБиржа Bittrade
Купить Битбон
Купить Битбон можно частным образом на нашей бирже Bitbon
Продать Битбон
Продать Битбон можно частным образом на нашей бирже Bitbon
Биржа Bittrade
Частная биржа Bitbon на которой публикуются частные обьявления пользователей о покупке и продаже Bitbon
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ СИСТЕМЫ BITBON
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ СИСТЕМЫ BITBON(описание из патента № PCT/UA2017/000050 «Способ управления имущественными правами на Активы и система для его осуществления»)Способ управления имущественными правами на Активы успешно реализован в Системе Bitbon[1], в состав которой входит сеть аппаратно-программных комплексов, содержащих Блокчейн, данные о номинале, идентификаторы
Как работать на бирже Bittrade
1Купить битбонИспользуя сервисы и инструменты Системы Bitbon, каждый желающий может приобрести Bitbon — ограничений нет. Bitbon можно использовать исходя из собственных целей и потребностей, например, оплачивать услуги и товары. При этом только при наличии Bitbon у Вас есть возможность стать Контрибьютором бизнес-проектов и получать дополнительный доход.
2Initial Business Offer (Initial Business Offer — первичное бизнес-предложение)Представьте, что у Вас есть цель инициировать интересный и прибыльный бизнес-проект. Соответственно, для этого Вам необходимо привлечь средства для его реализации. В этом случае Вы можете обратиться в Bitup-Агентство, которое примет решение о допуске Вашего проекта к IBO. И как только Ваш проект будет опубликован, он будет представлен всем участникам Системы Bitbon с предложением стать Контрибьюторами с целью помочь Вам в реализации Вашего бизнес-проекта.
3Став КонтрибьюторомСтав Контрибьютором, Вы можете извлечь дополнительную выгоду в Системе Bitbon. Для этого нужно выбрать самый оптимальный для себя бизнес-проект или даже несколько и обменять свои Bitbon на определенную долю в Projectbon выбранного Вами бизнес-проекта. Станьте успешным Контрибьютором — содействуйте продвижению прогрессивных идей!
4свое Bitup-АгентствоЗарегистрируйте в Системе Bitbon свое Bitup-Агентство и получайте доход от сопровождения и реализации каждого бизнес-проекта. Станьте неотъемлемой частью мира цифровой экономики на базе современных технологий!Подробнее о базовых функциях Bitup-Агентства Вы можете узнать, перейдя по ссылке Термины и определения.
5Подключить АПИ(Application Programming Interface — программный интерфейс приложения)Мы предоставляем комплексные программные решения, которые дадут возможность банкам проводить эквайринг платежей, биржам — обслуживать транзакции Bitbon, Projectbon и продвигать IBO, торговым учреждениям — использовать все преимущества платежной системы на базе технологии Блокчейн в новой цифровой экономике.
https://bitbon.club/birzha_bittrade

https://bitbon.club/bittrade
https://bitbon.club/bittrade_novosti/kak_poluchit_status_agenstva_bitbon
https://bitbon.club/bittrade_novosti/zagholovok_stat_i0
https://bitbon.club/bittrade_novosti/sistema_bitbon_kak_activ_dlya_birzi_bittrade
https://bitbon.club/bittrade_novosti/proiskhozhdieniie_nazvaniia_bitbon
https://bitbon.club/birzha_bittrade
https://bitbon.in.ua/bittrade
https://bitbon.in.ua/bittrade_novosti/kak_poluchit_status_agenstva_bitbon
https://bitbon.in.ua/bittrade_novosti/zagholovok_stat_i0
https://bitbon.in.ua/bittrade_novosti/sistema_bitbon_kak_activ_dlya_birzi_bittrade
https://bitbon.in.ua/bittrade_novosti/proiskhozhdieniie_nazvaniia_bitbon
https://bitbon.in.ua/birzha_bittrade

[url=https://bitbon.in.ua/birzha_bittrade]bit.trade битбон[/url]

https://bitbon.club/birzha_bittrade - bit.trade bitbon

https://bitbon.in.ua/bittrade_novosti/kak_poluchit_status_agenstva_bitbon - bit.trade
биржа+битбон

[url=https://bitbon.club/bittrade_novosti/proiskhozhdieniie_nazvaniia_bitbon]bit trade биржа[/url]

[url=https://bitbon.club/bittrade_novosti/proiskhozhdieniie_nazvaniia_bitbon]биржа битбон[/url]

биржа битбон

[url=https://bitbon.club/bittrade_novosti/kak_poluchit_status_agenstva_bitbon]bitbon биржа[/url]

bit.trade битбон

[url=https://bitbon.in.ua/bittrade_novosti/proiskhozhdieniie_nazvaniia_bitbon]bit.trade битбон[/url]

https://bitbon.in.ua/bittrade_novosti/proiskhozhdieniie_nazvaniia_bitbon - битбон bittrade
Fedorunjuh - 2018-01-19  10:47:14
 [url=https://botlab.su/tseny/parsing][img]https://botlab.su/images/uslugi/parsing_code_1.png[/img][/url]

[u][b]парсинг aliexpress[/b][/u], это процесс автоматизированный, а вот ручная обработка, это очень сложная цель, особенно, когда речь идет об информации технической, каких-то специализированных данных, которые человек воспринимает с большим трудом, и легко допускает ошибки, в процессе работы с такой информацией. Лучше всего это автоматизировать, и поэтому предлагаем вам [url=https://botlab.su/tseny/parsing]парсинг aliexpress[/url]
WalterTef - 2018-01-19  10:21:40
 АЛКОВЕРИН АКТИВИРУЕТ РЕЖИМ АЛКОГОЛЬНОГО ОТТОРЖЕНИЯ
С ALCOVIRIN выпить ПРОСТО НЕ УДАСТСЯ!

Это первый биогенный растительный комплекс, способствующий выработке непереносимости алкоголя при совместном приеме капель и спиртных напитков, вызывая тошноту и его полное отторжение организмом!

Кроме того, он оказывает мощное оздоровительное действие, устраняя алкогольную интоксикацию и способствуя восстановлению правильной работы органов и систем.

Официальный сайт: http://alcovirin.bxox.info
София - 2018-01-19  06:16:48
 Платим за лайки! - Ежедневные выплаты!

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

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

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

Вам достаточно просто зарегистрироваться на нашем сервисе. > www.click-likes.tk <

Вывод заработанных средств ежедневно в течении нескольких минут.
WalterTef - 2018-01-19  03:57:41
 АЛКОВЕРИН АКТИВИРУЕТ РЕЖИМ АЛКОГОЛЬНОГО ОТТОРЖЕНИЯ
С ALCOVIRIN выпить ПРОСТО НЕ УДАСТСЯ!

Это первый биогенный растительный комплекс, способствующий выработке непереносимости алкоголя при совместном приеме капель и спиртных напитков, вызывая тошноту и его полное отторжение организмом!

Кроме того, он оказывает мощное оздоровительное действие, устраняя алкогольную интоксикацию и способствуя восстановлению правильной работы органов и систем.

Официальный сайт: http://alcovirin.bxox.info
JamesCrade - 2018-01-18  20:06:01
 Шампанское ассоциируется у людей с праздником. Среди разных его сортов особое место занимает брют. Этот напиток родом из Шампани (провинция во Франции) имеет легкий вкус и свежий аромат. Читайте об этом подробнее на сайте [url=http://ladystory.ru]ladystory.ru[/url]
Duncanskefe - 2018-01-18  19:41:04
 Не удивительно, что женихи с периферии тоже желают выглядеть модно и красиво, как и столичные. Поскольку в центральную Россию поступают товары из-за рубежа по прямым анналам, то поставки в центре существенно определяют моду и направление стилистики ассортимента для всей страны, подробнее читайте на сайте [url=http://dom-lady.ru]dom-lady.ru[/url]
CraigGom - 2018-01-18  11:36:36
 Приобрести можно на веб-сайте http://tedsjkpb.bestseller-super.ru

Предлагаем нашим покупателям чудодейственное средство для похудения сироп Мангустина. С его помощью можно сбросить около 10 кг за 14 дней.

Растение мангостин растет на Шри-Ланке. Плоды растения имеют удивительные особенности. В банке содержится более 20 плодов данного замечательного дерева. Плоды с дерева мангостин помогают убрать излишнею жировую ткань. Также замечательно воздействуют на организм в комплексе. Технология изготовления препарата, и уникальная упаковка позволяют сберечь все удивительные свойства плодов.

Основным компонентом сиропа Mangoosteen являются плоды с дерева мангустин, в которых имеется огромное число полезных микроэлементов. Благодаря компоненту окиси дифениленкетона, которое в огромных количествах содержатся во фрукте, значительно тормозятся процессы окисления в теле. Ксантон считается одним из самых мощных антиокислителей. В плодах растения гарциния также есть разные витамины и элементы. Купить сироп Mangoosteen можно на интернет-сайте http://tedsjkpb.bestseller-super.ru.
Michaelner - 2018-01-18  06:10:31
 Новости медицины тут [url=http://griskomed.ru/]griskomed.ru[/url]
CraigGom - 2018-01-18  05:47:08
 Приобрести можно на веб-сайте http://tedsjkpb.bestseller-super.ru

Хотим предложить вам чудодейственное средство для похудения сироп Мангустина. При помощи него возможно избавиться от 10 килограмм за 14 суток. Растение мангкут произрастает на Филиппинах. Плоды этого растения имеют замечательные особенности. Во флакончике содержится около 25 плодов данного замечательного дерева. Плоды с дерева мангостин помогают растопить лишнюю липидную ткань. А также отлично воздействуют на человека в целом. Технология производства средства, а также специальная упаковка помогают сберечь все удивительные свойства мангустина. Главным веществом сиропа Мангустина являются фрукты с дерева мангостан, в них имеется большое число полезных микроэлементов. Благодаря компоненту окиси дифениленкетона, которое в громадных дозах имеется в плоде, сильно тормозятся процессы окисления в организме. Ксантон признана одним из наиболее сильных антиоксидантов. В плоде дерева мангостин вдобавок имеются разные группы витаминов и микроэлементы. Купить сироп Mangoosteen возможно на сайте http://xurls.in/c1x
VincentVed - 2018-01-17  21:01:21
 Последние строительные советы здесь [url=http://495realty.ru/]495realty.ru[/url]
Olgabromo - 2018-01-17  09:47:08
 Может ли [b]знание английского[/b] полностью изменить вашу жизнь?
подумайте об этом…
Что вы можете, зная английский?
Вы выглядите уверенным и успешным!
Конечно, налаживаете новые контакты!
Получаете истинное удовольствие от просмотра любимейших и не очень инстранных фильмов
Делаете деньги :) Заводите новых партнеров, привлекаете новых инвесторов из разных стран и развиваете свой бизнес со всех сторон!
Я уже купила и не разу не пожалела об этом, хочу посоветовать и вам этот замечтальный курс!
[url=http://vloti.com/affiliate]Ознакомиться с курсом[/url]
[url=http://vloti.com/buy]Опробывать курс[/url]
Rolandsisee - 2018-01-17  09:33:28
 Привет всем участникам форума! прикольный у вас сайт!
Нашел интересную базу кино: [url=http://kinoserialtv.net/]Новинки в хорошем качестве hd лучшие сериалы[/url]
Тут: http://kinoserialtv.net/melodrama/5544-barhatnye-volny-nezn233-vlny-2013.html [b] Смотреть Бархатные волны / Nezné vlny (2013) онлайн бесплатно [/b]
Тут: http://kinoserialtv.net/melodrama/4207-tretya-persona-third-person-2013.html
http://kinoserialtv.net/fentezi/ [b] смотреть фильмы 2015 фэнтези [/b]
[url=http://kinoserialtv.net/anime/] Лучшие аниме онлайн [/url]
[url=http://kinoserialtv.net/uzhasy/] Лучшие ужасы 2017 список [/url] Лучшие ужасы 2017 список
HerbertNet - 2018-01-17  06:19:11
 Последние новости андроид здесь [url=http://hi-android.net/]hi-android.net[/url]
Patrickoress - 2018-01-17  05:59:28
 Последние женские новости здесь [url=http://french-foto.ru/]french-foto.ru[/url]
DennisBix - 2018-01-17  05:25:18
 positive website [url=https://chrome.google.com/webstore/detail/assassins-creedorigins-wa/egoklfbapbagaogchndhcdjbgogdhemg?hl=ru]Assassins Creed:Origins Wallpapers HD Themes[/url]
ArtemZooky - 2018-01-17  04:36:26
 В {заключение|приговор} хотелось {бы|желание} отметить, {что|который|сколько} {для|чтобы|ради} стабильного успеха {необходимо|надо|нуждаться|должен} {постоянно|неослабно|неусыпно|неутомимо} и {регулярно|точный} тестировать {свой|частный|особенный|принадлежащий} сайт. Разместить сайт {на|для} бесплатном хостинге проще и быстрее. {Все|Совершенно|Всегда|Всетаки} процессы {по|сообразно} созданию Интернет-ресурса должны {осуществляться|исполняться} профессиональными людьми, знающими {толк|способность|польза|общество} в своем деле, умеющими {применять|употреблять|приспособлять} {свои|приманка} знания {на|для} практике. ). н. А {через|сквозь|вследствие|путем} неделю Вы решили их обновить, {так|беспричинно} {как|якобы|чистый|наравне} изображённое {на|для} них {оборудование|обстановка} устарело, {или|сиречь|иначе|разве} Вам показалось, {что|сколько|который} {вместо|взамен} изображений техники {на|для} сайт лучше поместить фото сотрудников – это настраивает посетителей {на|для} доверительный лад. {Есть|Нагрузиться|Пожирать|Уписывать} метод борьбы с этим печальным явлением – {постоянный|обыкновенный|повседневный|непрерывный} контроль сайта со стороны оптимизатора.Без лишних сомнений, {можно|позволительно|дозволительно|дозволено} {сказать|говорить}, {что|сколько|который} {выбор|отбор|подбор|избрание} доменного имени также важен, {как|наравне|вроде|словно} {выбор|избрание|круг|коллекция} названия самого предприятия. {Преимущество|Превосходство|Первенство|Право} первой состоит в {том|часть|книга}, {что|сколько|который} {весь|гуртом|всецело|огулом} объём информации, которую хранит интернет, доступен абсолютно всем. {Если|Буде|Когда|Ежели} платные хостинги требуют денег {за|ради|изза|после} {размещение|деление|положение} сайта ({как|точно|только|подобно} {правило|принцип|обыкновенный|статут}, это некая фиксированная {сумма|совокупность|итог|число}, выплачиваемая ежегодно), то бесплатные никакой платы не требуют, а дают каждому разместить {свой|особенный|принадлежащий|частный} сайт в интернете {совершенно|вконец|начисто|всецело} {свободно|вольно|развязно|непринужденно}, {на|для} неограниченно долгое время. А вот у Вас {будет|довольно} {гораздо|значительно|несравненно|много} меньше хлопот {по|сообразно} обслуживанию Вашего сайта. {Вряд|Сомнительно|Навряд} ли Вы сможете восстановить их самостоятельно. {Конечно|Ясно|Вестимо|Действительно}, {можно|позволительно|дозволительно|дозволено} всю необходимую информацию {хранить|скрывать|держать|прятать} в файлах, {но|однако|только}, {когда|если} её становится {слишком|чрезвычайно|чрезмерно|чересчур} {много|гибель|мириады|прорва} и {когда|если} возникает {необходимость|обязанность|нужда} в её структурировании, без базы данных {обойтись|быть|привыкать} сложно, {поэтому|следовательно} {знакомство|опытность|знание}, {хотя|чтобы|что|хоть} {бы|желание} {на|для} базовом уровне, с языком запросом {для|чтобы|ради} базы MySQL {будет|довольно} {весьма|очень} нелишним {для|чтобы|ради} начинающего веб-мастера. А в прошлом году Россия стала лидером {по|сообразно} приросту интернет-пользователей {среди|между} европейских государств. {Однако|Впрочем|Все|Всетаки} {очевидно|конечно|бесспорно|ясный}, {что|сколько|который} {владелец|владетель|собственник|обладатель} сайта {должен|повинен|обязан|вынужден} {стремиться|влечься|тяготеть|ринуться} к тому, {чтобы|дабы|воеже|для} сайт находился {по|сообразно} запросам, связанным с тематикой его сайта, а {для|чтобы|ради} этого {нужно|нуждаться|надо}, {чтобы|воеже|дабы|для} в результатах поиска, т. redstyle {{Несомненно|Точный|Непременно|Бесспорно}, обновление Вашего сайта {будет|довольно} {значительно|гораздо} {способствовать|помогать} продвижению.Ваш бизнес подобен живому организму. Благодаря тому, {что|который|сколько} поисковики ежечасно получают безграничное {количество|наличность|состав|число} сведений о посетителях {Сети|Силок|Путы|Козни}, {как|только|наравне|якобы} в геометрической прогрессии {будет|довольно} {расти|прозябать|возрастать|вырастать} их {преимущество|достоинство|превосходство|право} {перед|предварительно|пред|накануне} небольшими интернет-компаниями. Потому {как|якобы|вроде|подобно} здесь вы можете {найти|встречать} {все|безвыездно|всегда|совершенно}, {от|через} политики {до|предварительно|прежде|перед} порнографии, {но|однако|только} {при|быть|присутствие|около} этом, информация не навязывается пользователю, {каждый|отдельный|круг} выбирает то, {что|сколько|который} ему интересно. Последнее {время|век|эра|эпоха} поисковики предъявляют {все|весь|совершенно|безвыездно} более и более жесткие требования к сайтам, в {том|книга|часть} числе к текстовому наполнению. {Кроме|Помимо|Опричь|Выключая} этого, {на|для} языке java {можно|дозволено|позволительно|дозволительно} {создавать|делать} java-апплеты, маленькие автономные программы, которые {можно|дозволительно|дозволено|позволительно} вызвать в html-коде и {выполнение|устройство|действие} которых обеспечивается браузером.Понимая это, владельцы сайтов уделяют повышенное {внимание|забота|почтение|уважение} информационному наполнению, {но|однако|только}… {Есть|Нагрузиться|Трескать|Пожирать} одно маленькое «{но|только|однако}». {Как|Чистый|Подобно|Словно} {правило|принцип|обычай|обыкновенный}, он не содержит объёмных каталогов и сложных модулей, {что|который|сколько} абсолютно не означает, {что|который|сколько} информации, размещённой {на|для} таком сайте, {будет|довольно} {недостаточно|мало} {или|либо|тож|разве} пользователи будут лишены каких-то удобств. . Это {действительно|взаправду|впрямь|бесспорно} возможно.
заказать сайт визитку
[url=https://buysite70.ru/]продвижение сайта томск[/url]
https://buysite70.ru/ - разработка сайтов россия

1) Цена хостинга. 10 лет обратно, если возникла поисковая система Google, некоторый пришли к выводу, сколько задача поиска в Сети отныне будет решена. Быть желании у Вас будет доступ к информации, срок давности которой, истек десятки лет назад. Даже запрошенные пользователем поп-апы это плохая мысль, приводящая к увеличению числа блокировщиков поп-апов. Если вы встретите для различных форумах многочисленные жалобы клиентов этого хостинга о том, что их сайты иногда недоступны, сколько неослабно падает база, сколько возникают постоянные проблемы в работе скриптов, на которые техподдержка не спешит реагировать и т. Убедитесь, сколько ваш сайт имеет единственную, простую структуру навигации. Убедитесь, что ссылки имеют контрастный колер (стандартный синий окраска оптимален в большинстве случаев).И многие другие услуги.какой вводится пользователем в строку поиска.Хочется также отметить, который сокращаются темпы роста стоимости одной рекламной кампании. А мы в свою очередь будем реализовывать услугу проводы ради 1999 рублей в луна, а также будем передавать скидки тем, кто заключает договор сроком на 1 год. ru, позволяющее отобразить содержание Ваших Web-страниц из любой точки мира любому пользователю Сети. Использование выпадающих список может запутать и спрятать от пользователя ту информацию, которую он ищет.Изготовление сайта - это страшно востребованная благодеяние, и воеже удовлетворить весь возникающие у клиента потребности в сфере интернет-технологий, сумма веб-студий растет отдельный день.
Jeromepef - 2018-01-17  04:11:26
 Приветствую всех! интересный у вас сайт!
Нашел интересную базу кино: [b] Лучшая фантастика 2017 в хорошем качестве hd [/b] [url=http://kinofly.net/]http://kinofly.net/[/url]
Тут: http://kinofly.net/drama/7211-zver-the-beast-sezon-1-2009.html [b] Смотреть Зверь / The Beast (Сезон 1) (2009) онлайн бесплатно [/b]
Тут: http://kinofly.net/news/7941-tom-henksu-nashli-partnershu-v-ex-machina.html
Тут: http://kinofly.net/multfilmy/ [b] 2017 онлайн лучшие мультфильмы [/b]
Здесь: [url=http://kinofly.net/fantastika/] Новинки в хорошем качестве hd лучшая фантастика [/url]
Здесь: [url=http://kinofly.net/multfilmy/] Лучшие мультфильмы новые 2017 [/url] Лучшие мультфильмы новые 2017
<<[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] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.