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ářů(9084)
Generic viagra without a doctor prescription - 2017-03-21  19:55:10
 Excipients:
http://viagrawithoutprescriptionadoctor.com/ viagra without a doctor prescription
Composition of the film shell:
viagra without a doctor prescription
Patient use:
[url=http://viagrawithoutprescriptionadoctor.com/]viagra without a doctor prescription[/url]
Leonardcourf - 2017-03-21  17:15:33
 Я решила, своему мужу, что ему нужно купить коллекционную игру, однако свободных денег не было и я обратилась сюда https://goo.gl/EtgKh1. Может и вам повезет! Оформление заняло 5 минут и сразу на карту
Charlesgaf - 2017-03-21  16:46:45
 Первая цифра обозначает степень защиты от попадания твердых частиц, вторая – от попадания воды http://kirpich174.ru/publications/my-tips-for-wall-mounting-your-tv.html.
DavedeInpum - 2017-03-21  15:32:32
 Можно поподробней?
П.С.
[url=https://cashbuzz.ru/]купить полис осаго в Мытищи[/url]
JoshuaToure - 2017-03-21  10:56:34
 auto owners insurance lansing mi jobs
settling with auto insurance claims
car insurance for young drivers under ?1000
car insurance 25 male
home auto insurance best rates
auto insurance nj vs nc
cheap auto insurance okc

[url=http://carsgetyourinsurances.org/#insurance]the general car insurance number[/url]
car insurance in nj
car insurance general information
progressive auto insurance denver colorado
temporary car insurance 5 months
o'sullivan car insurance clonmel
progressive auto insurance hawaii office
no deposit car insurance phone numbers
car insurance cost in califo
ia
auto insurance jobs florida
auto insurance rates in nj
car insurance full coverage
LearGuase - 2017-03-21  09:04:21
 [color=green][size=18]загрузить в одноименный документ и сравнить с учетными данными по нажатию одной кнопки.[/size][/color]
Запрос на выяснение принадлежности платежа (ф. 0531808); [url=https://1cbit.net/1c-predpriyatie/1s-predpriyatie-8-v-kieve.html]1с предприятие 8 в киеве[/url] основных средств (ф. 0504032), актов о приеме-передаче объектов нефинансовых активов (ф. 0504101), списании объектов [url=https://1cbit.net/1c-predpriyatie/1s-predpriyatie-uchebnik-administrirovanie.html]1с предприятие учебник администрирование[/url]
Учет списания продуктов питания ведется по категориям довольствующихся, источникам и видам финансового обеспечения [url=https://1cbit.net/1c-predpriyatie/1s-predpriyatie-chem-spravochniki.html]1с предприятие чем справочники[/url] Предусмотрено формирование Накопительной ведомости по приходу продуктов питания (ф. 0504037), Накопительной ведомости п
формирование единой кассовой книги (ф. 0504514) по наличным денежным средствам и денежным документам с е [url=https://1cbit.net/1c-predpriyatie/1s-predpriyatie-8.html]1с предприятие 8[/url] Заявка на кассовый расход (ф. 0531801); [url=https://1cbit.net/1c-predpriyatie/programma-1s-predpriyatie-kratko.html]программа 1с предприятие кратко[/url]
ежедневная регистрация категорий довольствующихся и их количества по учреждению; [url=https://1cbit.net/1c-predpriyatie/1s-predpriyatie-administrirovanie-kursy.html]1с предприятие администрирование курсы[/url] нефинансовых активов (кроме транспортных средств) (ф. 0504104).
[url=https://1cbit.net/1c-predpriyatie/]Предусмотрена загрузка в электронном виде в форматах Федерального казначейства, формирование и печать следующих документов:[/url]
[url=https://1c.ru/]Поддерживается хранение информации, необходимой для внесения сведений в реестр федерального имущества (постанов[/url]
[url=http://v8.1c.ru/]Для проведения электронных расчетов через учреждения Банка России и кредитные организации поддерживаются форматы УФЭБС и "1С:Предприятие – Клиент банка" соответственно.[/url]
[url=http://1cbit.ru/1csoft/]имостью до 3 000 руб. включительно (кроме основных средств, не списываемых при вводе в эксплуатацию, например, би[/url]
[url=https://www.1c-interes.ru/]Приказом Казначейства России от 30.06.2014 № 10н, и отражение на счетах учета операций при использовании счета № 40116 "Средства для выплаты наличных денег организациям".[/url]
DavidKip - 2017-03-21  03:38:15
 Изготовление светодиодных табло для спорта, бегущих строк, табло для АЗС. http://ledbelgorod.ru
Timothybem - 2017-03-21  01:58:15
 [img]http://besplatno.skachat24.ru/uploads/55ca7314b588d00c565adf369c152072.jpg[/img]

Improve video quality and make your video visually energetic (New)
The new video enhancer function will enable you to improve the video quality and add more effects to your video. In the new video enhancer window, you can enhance the video quality from SD to HD, enhance the brightness and contrast or remove the annoying video noise. The video editing functions also allow you to adjust the video saturation, hue and volume. After editing, you will get a video in any effect you like, horror, romantic, funny, etc.

Rotate and flip your video to the right angle (New)
Now smart phones and tablets have replaced cameras to a large extent. Sometimes we may get some video that's filmed sideways and want to correct it to the right angle. The video rotating function allows you to easily make tweaks to the videos. It can rotate the video clockwise or counterclockwise, or flip the video files horizontally or vertically, solving the angle problem in one simple click.

Download online SD, HD and 4K UHD videos to your computer
Do you want to play back your favorite online videos when you are offline? Do you want to enjoy online videos on your iPhone, iPad or other portable video player? This all-in-one video software makes these tasks possible by downloading online videos to your computer. It supports downloading videos from all popular video sites, including YouTube, Yahoo, Vimeo, Dailymotion, etc. You can even use it as a 4K video downloader to download online 4K videos. After downloading, you can play it back on your computer or further convert it to your player.

Support HD and 4K UHD converting
Aiseesoft Video Converter Ultimate adopts the most advanced ke
el in the world. Now it supports all encoding formats, including H.265/HEVC, H.264, MPEG, Xvid, VP8, VP9, etc. With the latest ke
el, it will bring you fastest converting speed yet still maintaining the high quality. Whether you want to convert 4K to 1080p, convert HD to HD or just convert 4K formats, it is the best choice for you.

Information about the program:
Release year: 2017
Platform: Windows® 10/8/8.1/XP/Vista/7
File size: 54.51 MB

Download Aiseesoft Video Converter Ultimate 9.2.8 + Rus
[url=http://url-go.ru/turbobit.net/flrjz7vnd1w9/Aiseesoft.Video.Converter.9.2.8.rar.html]Download Turbobit.net[/url]
[url=http://url-go.ru/uploaded.net/file/tk4fk2qt]Download Uploaded.net[/url]
[url=http://url-go.ru/hitfile.net/LWG0Plg/Aiseesoft.Video.Converter.9.2.8.rar.html]Download Hitfile.net[/url]
Sergei#inkomoff[EdhuqesofzejsVI,2,4] - 2017-03-21  01:08:26
 Народ, это не спам. Ниже список сайтов-мошенников,
которые обманывают людей.
Все отзывы на них вымышленные.
Они сотрудничают с автосалонами-лохотронами
[url="http://avtosalon-review.ru/"]прон отзывы[/url]
[url="http://otzivalko.ru"]автосалоны отзывы [/url]
[url="http://kritika.su"]условный автосалоне[/url]
[url="http://rusavtodiler.ru"]отзывы[/url]
[url="http://xn--80aaf1bkbccckpk.xn--p1ai/"]автосалоны отзывы[/url]
[url="http://xn----8sbahbbnyi0aqgkcbs0akg.xn--p1ai/"]прон отзывы[/url]
DavidKip - 2017-03-20  18:21:05
 Производство светодиодных табло валют, бегущих строк, табло для АЗС. http://ledbelgorod.ru
RentManiaRip - 2017-03-20  17:39:51
 http://t.me/RentManiaBot?start=HWTMFHgI

Just try it in telegram!
JanicePtsy73 - 2017-03-20  03:47:04
 [b]JJRC H8 Mini Headless Mode 2.4G 4CH RC Quadcopter 6 Axis Gyro 3D Flip UFO One Key Retu
Aircraft ( 13.12 $)[/b]
[url=http://projectgold.ru/tsebraegamd1/jjrc_h8_mini_headless_mode_2.4g_4ch_rc_quadcopter_nt.html][img]http://projectgold.ru/tsebraegamd1/image/jjrc_h8_mini_headless_mode_2.4g_4ch_rc_quadcopter_nt.jpg[/img][/url]
[i]JJRC H8 Mini Headless Mode 2.4G 4CH RC Quadcopter 6 Axis Gyro 3D Flip UFO One Key Retu
Aircraft ...
Brand:JJRC;
Features:Radio Control;
Motor Type:Brushed Motor;
Functions:360 degrees spin,3D rollover,Forward/backward,Sideward flight,Tu
left/right,Up/down,Wings flap;
Night Flight:Yes;
Built-in Gyro:Yes;
Material:Alloy,Electronic Components...[/i]
[url=http://projectgold.ru/tsebraegamd1/jjrc_h8_mini_headless_mode_2.4g_4ch_rc_quadcopter_nt.html][img]http://projectgold.ru/buy.png[/img][/url]


[b]READ MORE[/b]
Colrovie woman blouses korean styles fashion blouses women streetwear pink mock neck frill trim long sleeve ( 14.97 $)
[url=http://projectgold.ru/ylilsserd/Geometric_gemstone_necklacerr.html]Geometric gemstone necklace ( 6.39 $)[/url]
[url=http://projectgold.ru/tsebraegamd1/onda_obook_20_plus_tablet_pcdg.html]Onda OBook 20 Plus Tablet PC ( 185.36 $)[/url]
Santa Monica Turquoise Embossed Lizard Leather Sneaker ( 154.00 $)
[url=http://projectgold.ru/ylilsserd/Trendy_push_up_pure_color_bikini_suit_for_womenzx.html]Trendy push up pure color bikini suit for women ( 18.72 $)[/url]
Original saufii usb type c cable for macbook oneplus 2 3 type c charger wire zuk ( 2.13 $)
[url=http://projectgold.ru/ylilsserd/Loose_fit_summer_solid_color_pockets_cargo_shorts_gw.html]Loose fit summer solid color pockets cargo shorts for men ( 23.21 $)[/url]
Narciso Lizard Embossed Leather Satchel bag ( 156.50 $)
[url=http://projectgold.ru/sserpxeila1/Slide_Wallet_Credit_Card_Slot_Phone_Case_For_SamsuVH.html]Slide Wallet Credit Card Slot Phone Case For Samsung Galaxy S3 S4 S5 S6 S7 S7 Edge NOTE 5 7 A5 A7 J5 J7 Grand Core Prime Covers ( 4.59 $)[/url]
[url=http://projectgold.ru/gearbestles/extra_spare_h6d___05_37v_380mah.html]Extra Spare H6D - 05 3.7V 380mAh Battery for JJRC H6D H6C H29G Remote Control Quadcopter ( $3.84 )[/url]
Q13586-c mini 250 fiberglass rc quadcopter mini cc3d atom emax 12a esc 2300kv motor 11.1v 30c 2200mah lipo diy fpv multirotor ( 102.46 $)
Hiwheel H - 1 Hoverboard Sitting Attachment-99.82 $
Womens Black Perforated Italian Leather Driving Gloves ( 98.00 $)
Vortice - Pink Swirling Murano Glass Bead Earrings ( 76.70 $)
Original ASUS Zenfone Pegasus 3 X008 32GB16GB ROM 5.2 ( 238.45 $)


[url=http://projectgold.ru/adsserpxeila.htm][img]http://projectgold.ru/img/adaliimg_e/16bb.png[/img][/url]
Porevocab - 2017-03-19  22:45:49
 Проститутки Киева http://links.orthodoxworld.ru/aaaakM студентки
BigBonusCot - 2017-03-19  22:24:24
 Get NoW your $1500 Bonus -> http://takemoney.pro
Albuterol inhaler - 2017-03-19  21:32:36
 Ventolin HFA is a prescription inhaled drug used to treat or prevent bronchospasm in people aged 4 years and older with reversible obstructive airways disease. ventolin is also used to prevent physical exercise of bronchospasm (EIB) in patients 4 years of age or older. It is not known whether Ventolin HFA is safe and effective in children under 4 years of age.
Margaritatut - 2017-03-19  15:49:15
 [center][b]Обмен Bitcoin по очень выгодному курсу![/b][/center]

[center][url]http://trust-btc.ml[/url][/center]

Продайте нам свои биткоины и заработайте на этом!

Наши преимущества:
- Один из самых выгодных курсов обмена Bitcoin!
- Обмен в любом направлении, мы поддерживаем большинство мировых платежных систем!
- Мы работаем круглосуточно без выходных и перерывов!
- Обмен составляет в среднем 5-15 минут!
- Обмен происходит автоматически!
- Большой резерв!
- Мы работаем с клиентами из любых стран мира!

[url=http://trust-btc.ml]Обмен Bitcoin по очень хорошему курсу![/url]

[url]http://trust-btc.ml[/url]
ThomikPobia - 2017-03-19  15:41:13
 Можно поподробней?
П.С.
[url=https://cashbuzz.ru/]купить полис осаго в Мытищи[/url]
Jamesslex - 2017-03-19  15:36:12
 Можно поподробней?
П.С.
Прошёл недавно [url=http://mrt-rus.info/]мрт химки цены[/url] приемлимые.
AlprepiliType - 2017-03-19  09:57:41
 [url=http://films-fans.ru/?userid=10970&template=movies_comments&film_id=29807][IMG]http://st03.kakprosto.ru//images/article/2012/4/9/1_52552e4d1e44c52552e4d1e48a.png[/IMG][/url]

Пристегните ремни — выговор продолжается. Гавана, Берлин, Нью-Йорк, для самой холодной команды в мире не иожет быть нисколько невозможного, пока они вместе. Но когда на их пути окажется одна из самых красивых женщин на планете и по совместительству королева киберпреступности, дороги друзей разойдутся…
Georgedrelt - 2017-03-19  00:15:38
 Prostitutes of Kiev http://links.orthodoxworld.ru/aaaaio с видео
<<[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] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.