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ářů(10301)
JusikaSmure - 2018-01-20  22:19:03
 Добрый вечер мы предлагаем зайти на официальный магазин UGG Австралия в РФ. Угги на сегодня считаются очень известной демесезонной обувью и их реально покупать в зимний период.

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

У нас на сайте [url=http://ugg.msk.ru/shop/folder/detskiye-uggi]угги натуральный мех купить[/url] вы сможете найти большое количеств качественных предложений. К тому же, сейчас действуют sales на большое количество вариантов.

Отдельно надо сказать, что разные мужские и женские угги есть в распродаже.
Угги, которые мы реализуем – считаются качественной обувью, которую мы получаем от подрядчиков.

Сегодня в РФ это – особенность. Выбрать комфортные угги [url=http://ugg.msk.ru/shop/folder/detskiye-uggi]куплю детские угги натуральные[/url] реально на ugg.msk.ru, ведь на портале представлен масштабный ассортимент угг и не только.

Отдельно надо сказать, что у нас на сайте на этой недели новая поставка, где вы можете найти крутые uggi 2018 года.
Haroldboype - 2018-01-20  21:36:56
 О том, что зубы нужно чистить дважды в день, минимум 2–3 минуты, знает каждый. Но придерживаются этого правила только 50% людей. Более того, исследования шведских ученых показали, что чистит зубы по всем правилам, рекомендованным стоматологами, только один человек из десяти, подробнее читайте на сайте [url=http://nalatty.com]nalatty.com[/url]
ClallTarwoot - 2018-01-20  21:26:32
 Привет, посетители сайта!
Посмотрите симпатичный сайт: http://sbs-servis.ru - ремонт холодильника в Люберцах. Конечно ремонт стиральной машины Железнодорожный. И понятно ремонт холодильника в Перово.
Тема сайта [url=http://sbs-servis.ru]ремонт стиральной машины Дзержинский. Кроме того ремонт холодильника Железнодорожный. И еще ремонт стиральной машины на Щелковской[/url].
Желаю всем удачи.
Дмитрий
RandyAlick - 2018-01-20  17:45:18
 [b]binary options atm review movies dunkirk

Options Online
[/b]
[b]Go to Site: -->[/b] http://t.co/wT0UZBaUhQ
Aaronnaw - 2018-01-20  16:01:24
 Отличные строительные советы здесь [url=http://akvakraska.ru/]akvakraska.ru[/url]
TimothytiErs - 2018-01-20  15:39:47
 Последние новости Томской области здесь [url=http://tom3.ru/]tom3.ru[/url]
ChesterTed - 2018-01-19  23:10:09
 Новости строительного мира тут [url=http://lakkk.com/]lakkk.com[/url]
Lanceedivy - 2018-01-19  22:31:56
 Вопрос о том, когда отношения можно считать по-настоящему счастливыми, давно волнует исследователей, причем каждый старается развить собственную теорию, пишет Die Welt (перевод на Inopressa.ru), подробнее об этом читайте на сайте [url=http://xozyaika.com]xozyaika.com[/url]
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
<<[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.