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)
ImtumRich - 2017-05-09  00:20:54
 Наши контакты
Скайп: maksimovgenya
Qip (icq): 248923748

Сайт не указываем дабы не сочли за спам. Просто свяжитесь с нами и узнайте подробности либо запросите живую презентацию или встречу.

Самый огромный клуб путешественников на планете с 2 миллионами членов клуба, единственная фирма удостоенная 24 Оскар в туристическом бизнесе, лучшая туристическая организация 2016 года в мире по версии World Travel Awards, организация входящая в ТОП-25 из 100 лучших в мире комерческих компаний в рейтинге Global 100 Direct Selling News на 2017 год, занимающихся прямыми продажами. Продолжает свою деятельность на территории России и развивает страны СНГ и предлагает Для Вас:

Для Вас доступны единственные, гарантированно самые низкие предложения на:
* туры все включено на любом континенте нашей планеты
* путешествия и морские круизы
* авиаперелеты любых авиакомпаний и из любых аэропортов мира
* гостиницы, отели в любой части планеты
На наши услуги Вы имеете три гарантии лучших цен.

Многие из нас неоднократно видели рекламу различных туристических сервисов, которые одни будто бы сканируют доступные гостиницы и предлагают для Вас низкую стоимость на отели по примеру Trivaga, а совершенно остальные похожие сервисы ищут Вам доступные авиаперелеты по якобы самой лучшей стоимости, по типу Skyscanner либо Aviasales. Но никто из из них не говорит о гарантиях, ведь все таки рынок туризма и авиаперелетов очень гибок и плата может изменяться постоянно. Риторический вопрос, а Вам вернутся Ваши суммы от Вашей переплаченой расценки за авиаперелет либо за хостелы, гостиницы если все таки тариф окажется не самый лучший? И не правда ли это крайне не удобно пользоваться различными сервисами для формирования или поиска для себя авиа перелета либо заказа отеля или хостела и уж тем более для поиска для себя и своей семье подходящего тура либо отдыха. Наш необыкновенный международный клуб путешественников предлагает для нас неповторимый сервис, в котором Вы можете забыть о всех существующих неудобных сервисах по поиску билетов на самолет, отелей, круизов, и всего перечня туристических возможностей, как ни как вся всемирная туристическая база находится у Вас под рукой, в любое время дня и ночи, 365 дней в году. Любой на выбор самолет, любой отель или гостиница, Лувр, любые сафари, любые развлечения. Для нас это доступно в любое удобное время по гарантированно низкой стоимости.

Какая из туристических корпораций либо авиа касс готова предложить для Вас нижеследующее?
* Если кто то найдет всякий авиаперелеа меньше чем у нас, то получит 150 % от разницы в течение рабочего дня
* Если Вы найдете всякую гостиницу, любой на выбор отель, какой угодно хостел меньше чем у нас, то получите 150% от разницы в течение 24 часов
* Если после покупки Вашего авиа перелета и до момента Вашего прохождения на регистрацию цена на авиа перелет изменилась в меньшую сторону (независимо от бронирования, к примеру год) то Ваш авиа билет перебранируется по лучшей цене, а разницу возьмете в течение рабочего дня
* Если мы найдем похожий нашему тур "все включено" в любой на выбор организации планеты меньше чем у нас, то мы данный тур Вам подарим

При этом нашим членам по желанию предлагается начать свой личный туристический бизнес в течение часа, это:
* основать свою индивидуальную туристическую холдинг-компанию
* продвигать интересы фирмы в личном городе, регионе, стране либо во всяком интересующем Вас месте с вознаграждением на много больше
* для любителей либо ценителей МЛМ бизнеса идеальная вероятность развить свою бинарную команду
* для ценителей командного бизнеса (от 2 до ... человек) идеальная потенциальность построить свой турбизнес в различных городах

Заработок при бизнес абонементе стартует от 1500 долларов США / месяц. Ограничение заработной платы нет.

В начале Мы обучаем и развиваем Вам организовывать Ваш туристический бизнес и Ваши структуры.

Стоимость за за пакет документов чисто формальная, одноразовая и пожизненная. Окупаемость с единого человека в Вашей команде.
Ваш бизнес переходит к Вашим детям.

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

Мы официально действует в 30 странах мира, а так же развиваемся в Узбекистане (Самарканд), Армении (Ереван), Беларусь (Минск), Азербайджане (Баку), Киргизии (Бишкек), Грузии (Тбилиси), Молдавии (Кишинев), Казахстане (Астана), России (Москва), Приднестровье (Тирасполь), Украине (Одесса, Киев), Таджикистане (Душанбе).
Lstrguiffic - 2017-05-08  23:57:33
 I surf the web and get here. What a wonderful invention of mankind. With the help of a network communicate, lea
, read ... That's got to know you.

[url=http://c-vault.net/index.php?topic=536969.new#new] Repeatedly I've read similar posts on the English-language blogs, but that does not mean that your post I did not like
[/url]

http://cursosmariale.com/index.php/component/kunena/2-welcome-mat/130988-nolvadex-10-mg?Itemid=0#130988
NikolayCooma - 2017-05-08  22:49:29
 http://xtjibgiv.nukegado.ru/tabletki-dlya-pohudeniya-formavit.php
http://gzqbnjjcn.umetateg.ru/2017-05-05/39869.html
http://apjrch.ydasaruwol.ru/2017-05-02-SZTwr43Z.php
http://mbwkji.nahus.ru/62133.asp

[url=http://voew.acojowy.ru/9mRNjcSpC.aspx ]Havealabiff piobess engellordgefsok[/url]
[url=http://cguidatia.gopyxux.ru/vtw7N.aspx ]rorm VaX Jeoto[/url]
[url=http://aqwg.owygos.ru/2017-05-02_3355.aspx ]ideabs WerviohegoMog hamelm[/url]
boft hege Hipult
Izknlg - 2017-05-08  22:15:17
 buy viagra without a script begins functioning in right-minded a some 30 minutes and also supports an eye to too yea
since disparate hours and in supplement hold out the particular fleshly activity plainly past 2-3 instances. The key teensy-weensy iota of ingredient found in [url=http://viagra-withoutadoctor.org/]viagra no prior prescription[/url] permits far-away better the passage of blood to the men the reproductive organized whole that assists to get during impotence.
How-long-cialis-lasts - 2017-05-08  18:59:28
 [url=http://best-store-us.com/#viagra-in-action]how long does it take for cialis to start working[/url] cialis dosage for bph [url=http://safe-shopping-usa.com/#federal-pharmacy-law]lecom school of pharmacy[/url] how to get prescribed cialis [url=http://best-store-usa.com/#cialis-10-or-20-mg]home remedies erectile dysfunction[/url] pps pharmacy [url=http://best-store-usa.com/#walmart-cialis]ou pharmacy[/url] walmart pharmacy ardmore ok
JanicePtcj86 - 2017-05-08  17:31:18
 [b]CUBOT RAINBOW 2 3G Smartphone ( 69.99 $)[/b]
[url=http://projectgold.ru/tsebraegamd1/cubot_rainbow_2_3g_smartphonebv.html][img]http://projectgold.ru/tsebraegamd1/image/cubot_rainbow_2_3g_smartphonebv.jpg[/img][/url]
[i]CUBOT RAINBOW 2 3G Smartphone ...
Brand:CUBOT;
Type:3G Smartphone;
OS:Android 7.0;
Service Provide:Unlocked;
Language:Japanese, Traditional/Simplified Chinese, Indonesian, Malay, Catalan, Cezch, Danish, German, English, Spanish, Filipino,French, Croatian, Italian, Magyar, Dutch, Polish, Portuguese, Romanian, Slovensc;
SIM Card Slot:Dual SIM...[/i]
[url=http://projectgold.ru/tsebraegamd1/cubot_rainbow_2_3g_smartphonebv.html][img]http://i67.tinypic.com/2hs46dw.png[/img][/url]


[b]READ MORE[/b]
Yvonne brazilian kinky curly virgin hair,3pcslot brazilian hair weave bundles,top quality aliexpress 100% remy human hair ( 60.70 $)
[url=http://projectgold.ru/sserpxeilaam/brazilian_virgin_hair_body_wave_4_bundles_ms_lula_EY.html]Brazilian virgin hair body wave 4 bundles ms lula hair products brazilian body wave queen hair brazilian body wave virgin hair ( 65.00 $)[/url]
[url=http://projectgold.ru/sserpxeilaam/silver_peep_toe_gem_diamond_wedding_shoes_bridal_sxr.html]Silver peep toe gem diamond wedding shoes bridal shoes bridesmaid party prom shoes size custom made ( 100.80 $)[/url]
Umi Plus 5.5 inch 2.5D Arc Screen Android 6.0 4G Phablet Helio P10 Octa Core 1.8GHz 4GB RAM 32GB ROM Fingerprint Scanner Two-tone Flashlight Type-C HiFi 266.95$
[url=http://projectgold.ru/sserpxeilaam/brazilian_body_wave_with_closure_4_bundles_body_wau4.html]Brazilian body wave with closure 4 bundles body wave brazilian virgin hair with closure 7a virgin human hair weave with closure ( 79.60 $)[/url]
[url=http://projectgold.ru/ylilsserd/Trendy_cross_straps_and_buckle_design_women's_slipwv.html]Trendy cross straps and buckle design women's slippers ( 34.02 $)[/url]
[url=http://projectgold.ru/tsebraeg/enlan_a11_sports_dv_3g_smartphone-194.92_mu.html]Enlan A11 Sports DV 3G Smartphone-194.92 $[/url]
[url=http://projectgold.ru/ad11aliexp2/3pcs_brazilian_body_wave_natural_black_brazilian_vF3.html]3pcs brazilian body wave natural black brazilian virgin hair weave human hair extension grade 7a quality brazilian hair bundles ( 85.00 $)[/url]
[url=http://projectgold.ru/sserpxeila1/Ugreen_Quick_Charge_2.0_Phone_Charger_5V2A_9V2A_12AN.html]Ugreen Quick Charge 2.0 Phone Charger 5V2A 9V2A 12V1.5A Fast Wall USB Charger for iPhone 7 Samsung Galaxy S6 Edge Xiaomi EU Plug ( 14.98 $)[/url]
Chic hollow out bow buckle women's metal elastic waist belt ( 4.26 $)
Polarized jbr polarized oculos ciclismo cycling eyewearoutdoor mtb bike goggles bicycle cycling glasses cycling sunglasses ( 34.52 $)
[url=http://projectgold.ru/sserpxeila3/a
agar_genuine_leather_bags_women_handbags_2016_l1o.html]A
agar genuine leather bags women handbags 2016 luxury brand casual alligator real leather bag ladies women messenger bags ( 83.33 $)[/url]
[url=http://projectgold.ru/sserpxeilaam/ms_cat_hair_7a_peruvian_virgin_hair_with_closure_3Ik.html]Ms cat hair 7a peruvian virgin hair with closure 3 bundles ombre weave with closure 1b burgundy ombre human hair with closure ( 105.49 $)[/url]
[url=http://projectgold.ru/forzieri/Just_Shade_3H_Gold_Tone_Stainless_Steel_Womens_Watchu5.html]Just Shade 3H Gold Tone Stainless Steel Womens Watch ( 188.00 $)[/url]
[url=http://projectgold.ru/ireizrof/debbie_swimming_pool_blue_suede_platform_pumpji.html]Debbie swimming pool blue suede platform pump ( 291.54 $) Charlotte Olympia[/url]


[url=http://projectgold.ru/adsserpxeila.htm][img]http://projectgold.ru/img/adaliimg_e/86.jpg[/img][/url]
Lstrguiffic - 2017-05-08  14:05:43
 Oh, thank you

[url=http://bbs.mlgaoxian.com/forum.php?mod=viewthread&tid=1528262&extra=] Viewtiful! Write ischё!
[/url]

http://nova.necroxia.com/forum/viewtopic.php?f=35&t=927712
How-long-does-viagra-stay-in-the-system - 2017-05-08  13:53:50
 [url=http://safe-shopping-usa.com/#will-viagra-make-you-last-longer]erectile dysfunction holland and barrett[/url] can i buy viagra in canada [url=http://safe-shopping-us.com/#tennessee-state-board-of-pharmacy]new hampshire board of pharmacy[/url] viagra study [url=http://best-store-usa.com/#alcohol-erectile-dysfunction]cialis tadalafil 10mg tablets[/url] cialis and levitra [url=http://usa-safe-store.com/#generic-tadalafil-vs-cialis]can erectile dysfunction be treated[/url] what is the normal dose of viagra
Aadherne - 2017-05-08  12:52:42
 [url=http://us-best-store.com/#hemorrhoids-and-erectile-dysfunction]generic viagra sildenafil citrate[/url] levitra contraindications [url=http://safe-shopping-usa.com/#viagra-boner]script pharmacy[/url] erectile dysfunction at 20 [url=http://best-store-usa.com/#when-is-viagra-needed]gatti pharmacy[/url] viagra versus cialis cost [url=http://best-store-usa.com/#how-can-i-get-viagra-online]cialis kamagra[/url] where do i buy viagra online
Can-you-take-viagra - 2017-05-08  12:32:30
 [url=http://safe-shopping-us.com/#walmart-pharmacy-clinton-ms]viagra symptoms[/url] cal oaks pharmacy [url=http://best-store-usa.com/#viagra-in-walgreens]cialis tadalafil[/url] hopewell pharmacy [url=http://best-store-us.com/#cheap-viagra-in-canada]sildenafil citrate 50 mg[/url] best over the counter pills for erectile dysfunction [url=http://safe-shopping-usa.com/#what-food-helps-erectile-dysfunction]cost of viagra in canada[/url] prostate infection erectile dysfunction
WilliamJam - 2017-05-08  09:51:56
 Здравствуйте! Класный у вас сайт!

Нашёл интересные новости про политику:
http://mybioplanet.ru/news/10777-semenchenko-o-peremirii-ya-dumayu-chto-ostanovit-krokodila-zaklinaniyami-nevozmozhno.html
Псковэнерго завершает оборудование подстанций современными ИБП
[b] Яценюк угрожает журналисту не подумав про включенный микрофон. [/b] http://mybioplanet.ru/news/12613-yacenyuk-ugrozhaet-zhu
alistu-ne-podumav-pro-vklyuchennyy-mikrofon.html
[b] В Калмыкии строят первый в регионе мясоперерабатывающий комплекс замкнутого цикла [/b] http://mybioplanet.ru/news/1527-v-kalmykii-stroyat-pervyy-v-regione-myasopererabatyvayuschiy-kompleks-zamknutogo-cikla.html
[b] Американские СМИ: Киев узаконил рабство, чтобы расплатиться с США [/b] http://mybioplanet.ru/news/8242-amerikanskie-smi-kiev-uzakonil-rabstvo-chtoby-rasplatitsya-s-ssha.html
?После обработки 100% протоколов на выборах в Раду победила партия Арсения Яценюка
И тут: [b] новороссия 15 11 2014 [/b] http://mybioplanet.ru/
Errolemags - 2017-05-08  08:37:28
 [url=https://blackjackballroomcasino.info/dolphin-coast-blackjack-ballroom-application-online-casino/]Dolphin Coast BlackJack Ballroom application online casino[/url] - Golden Era bonus slot Black Jack Ballroom application casino online
DonaldNuask - 2017-05-08  06:30:40
 [url=http://avtobania.pro/himchistka-salona-v-gomele/]Очистить от грязи салон автомобиля[/url] - Мойка машин в Гомеле, Очистить от грязи салон автомобиля.
Niklkapy - 2017-05-08  05:42:54
 [url=http://kupluauto.ulcraft.com/contacts]Выкуп авто украина[/url]

[url=http://kupluauto.ulcraft.com/services]Выкуп авто не на ходу[/url]

http://vikupauto.in.ua/services - Оценка автовыкуп авто

http://autovikup.pp.ua - Выкуп машина


http://kupluauto.ulcraft.com/gallery - Скупка автомобиль


http://vikupauto.in.ua/news - Срочный авто


http://autovikup.pp.ua/news - выкуп автомобиль



Только детализированный осмотр машины, укажет реальную цену автовыкупа.

На оценку автомобиля повлияют такие факторы: состояние лакокрасочного покрытия, участие в ДТП, состояние салона , двигателя и ходовой части , пробег, техническое состояние, ликвидность данной модели на рынке .

После чего оформляем все необходимые документы и выплачиваем Вам всю ранее оговоренню сумму- в любой валюте , в любом удобном для Вас месте. Покупаем легковые автомобили у физических и юридических лиц .

Важная составляющая успешной сделки купли-продажи это юридически правильно оформленные документы. Автовыкуп подержанных автомобилей в Киеве и по всей Украине.

Автовыкуп кредитных автомобилей и залоговых авто.

Автовыкуп после ДТП с вывозом на эвакуаторе в Киеве и Киевской области.

Автовыкуп дорогих авто в Киеве и по всей Украине.


+380504620159



http://vikupauto.in.ua/services - Куплю битый авто


http://autovikup.pp.ua/about - Выкуп авто киев


http://kupluauto.ulcraft.com/about - Выкуп дорогих авто


http://vikupauto.in.ua/contacts - Выкуп автомобиль


http://autovikup.pp.ua/news - Выкуп автомобиль

[url=http://kupluauto.ulcraft.com/contacts]Срочный авто[/url]

[url=http://vikupauto.in.ua/news]Срочный выкуп авто в Киеве и Киевской области[/url]

[url=http://autovikup.pp.ua/services]продавать авто[/url]
Lstrguiffic - 2017-05-08  04:33:31
 Something heard, but not in such detail, and where the material was taken?

[url=http://konodev.lescigales.org/Upload/showthread.php?tid=131503] Just can not believe
[/url]

http://192.240.111.74/forum.php?mod=viewthread&tid=572100&extra=
Inetryconydot - 2017-05-08  04:01:46
 Norvasc Active Ingredient: [b]amlodipine[/b] is used for treating high blood pressure and angina (chest pain).

Amlodipine (Norvasc) is used for treating high blood pressure and angina (chest pain). It may be used alone or with other medicines. Norvasc is a calcium channel blocker. It works by relaxing (dilating) your blood vessels, lowering blood pressure, [url=http://forum.astrologi.ge/viewtopic.php?f=5&t=265]Buy Almodipine Online Without Prescription[/url] and decreasing heart rate, which lowers the workload on the heart. It also dilates coronary arteries increasing blood flow to the heart.

[url=http://forum.astrologi.ge/viewtopic.php?f=5&t=265]BUY CHEAP ALMODIPINE NOW[/url]

TAGS: [b]Norvasc 10 mg[/b], [b]Norvasc 5 mg[/b]

Buy Almodipine
Buy Almodipine No Prescription
Where Can I Buy Almodipine
Get Almodipine Online
Buy Almodipine
Buy Online Almodipine
Almodipine Online
Buy Almodipine
Almodipine Buy
Online Almodipine No Prescription
No Prescription Almodipine
No Prescription Almodipine
National-board-of-pharmacy - 2017-05-08  03:31:04
 [url=http://best-store-usa.com/#foods-good-for-erectile-dysfunction]eaton pharmacy[/url] monroe pharmacy [url=http://usa-best-store.com/#viagra-dangerous-side-effects]what foods improve erectile dysfunction[/url] pharmacy discount cards [url=http://best-store-us.com/#erectile-dysfunction-homeopathy]viagra professional 100mg[/url] purdue college of pharmacy [url=http://safe-shopping-us.com/#royal-jelly-for-erectile-dysfunction]wingate pharmacy[/url] cialis 20mg vs viagra 100mg
Cialis-tablets-20mg - 2017-05-07  23:52:33
 [url=http://safe-shopping-usa.com/#levitra-over-the-counter]tripler pharmacy[/url] erectile dysfunction in women [url=http://usa-best-store.com/#jelly-viagra]va compensation for erectile dysfunction[/url] dutchtown pharmacy [url=http://usa-best-store.com/#buy-viagra-online-paypal]oklahoma board of pharmacy[/url] uw madison pharmacy [url=http://best-store-us.com/#cause-for-erectile-dysfunction]taylor pharmacy[/url] ok pharmacy
Sunrise-pharmacy - 2017-05-07  22:36:36
 [url=http://usa-safe-store.com/#cialis-commercial]funny viagra stories[/url] walgreens sunday pharmacy hours [url=http://safe-shopping-us.com/#how-quickly-does-viagra-work]buy viagra in chicago[/url] 2.5mg cialis [url=http://usa-best-store.com/#viagra-directions-for-use]roxbury pharmacy[/url] pharmacy schools in virginia [url=http://usa-safe-store.com/#crestor-erectile-dysfunction]levitra information[/url] westfield pharmacy
MozharGup - 2017-05-07  20:19:37
 Здравствуйте, уважаемый Администратор сайта koding.cz

Меня зовут Николай, ранее я уже отправлял Вам сообщение, сейчас мне хотелось бы предложить Вам рассмотреть возможность эффективного продвижения Вашего сайта koding.cz при помощи размещения рекламных статей с качественным обзором на 2500 сайтах с тИЦ от 10 с предоставлением полноценного отчета, в котором будут указаны все страницы с размещенными статьями.

Воспользовавшись размещением статей Вы получите:

- прирост поискового трафика, как следствие – значительный прирост продаж
- прирост SEO-показателей, включая тИЦ Вашего сайта на 50-80 пунктов.
- значительное улучшение позиции в поисковых системах

Более подробно о размещении статей на 2500 сайтах Вы можете узнать на странице: http://proflinks.ru/page/13 Пример создания заказа: http://p
t.sc/f2gxad

Сервис ProfLinks.ru работает уже более 2 лет и зарекомендовал себя как качественный сервис, используется более 13 тыс. вебмастерами, также, в арсенале услуг имеется тариф «Пробный» для ознакомления стоимостью в 40 руб..

В случае, если Вас заинтересовало мое предложение, то при регистрации в сервисе воспользуйтесь моей реф. (партнерской) ссылкой: http://proflinks.ru/registration/12179
Буду Вам очень благодарен.

Прошу прощения, что отвлек Вас.
С уважением, Николай
<<[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.