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ářů(10915)
Chobrearers - 2017-06-28  16:17:59
 [url=https://orsk.price-gnb.ru/zapchastignb/738-gnb-surgut-vakansii.html]РіРЅР± СЃСѓСЂРіСѓС‚ вакансии[/url]
[url=https://sumki.lend-money.ru/veche
ie/14330-kupit-paket-dlya-sumki.html]купить пакет для сумки[/url]
[url=https://velosiped.zapravka-kartridjey-kazan.ru/go
iye/8798-kupit-kameru-na-velosiped-novosibirsk.html]купить камеру на велосипед новосибирск[/url]
[url=https://kosmetika.lend-money.ru/uhod/766-kitayskaya-kosmetika-kupit-deshevo.html]китайская косметика купить дешево[/url]
[url=https://sumki.lend-money.ru/sport/14300-kupit-nedorogo-sumku-polar.html]купить недорого сумку polar[/url]
[url=https://doma.1cbit.net/srubpodkluch/7769-dom-pod-kluch-iz-kirpicha-spb.html]дом под ключ из кирпича спб[/url]
[url=https://muzhskayaodezhda.1cbit.net/bryuki/1502-angliyskiy-metod-konstruirovaniya-i-modelirovaniya-muzhskaya-odezhda-skachat.html]английский метод конструирования и моделирования мужская одежда скачать[/url]
[url=https://shkafy-kupe.lend-money.ru/radiusnyj/14295-napravlyauschaya-dlya-shkafa-kupe-gamma.html]направляющая для шкафа купе gamma[/url]
[url=https://loan.renthop.net/fhaloan/9777-asb-loan-maybank-jadual-2015-form.html]asb loan maybank jadual 2015 form[/url]
[url=https://odezhda.1cbit.net/kupitodezhdu/5093-diskont-magazinov-detskoy-odezhdy-ya.html]дисконт магазинов детской одежды я[/url]
[url=https://spinner.lend-money.ru/kakigrat/891-spinner-kupit-v-kazani.html]спиннер купить в казани[/url]
[url=https://putevka.1cbit.net/tur/7695-chelyabinsk-goryaschie-tury-egipet.html]челябинск горящие туры египет[/url]
[url=https://komsomolsk-na-amure.price-gnb.ru/zapchastignb/759-gnb-ustanovka-malaya.html]гнб установка малая[/url]
[url=https://omsk.price-gnb.ru/ustanovkignb/732-tehnologiya-prokladki-kabeley-metodom-gnb.html]технология прокладки кабелей методом гнб[/url]
[url=https://kaluga.price-gnb.ru/ustanovkignb/737-zapchasti-dlya-burovyh-ustanovok-gnb.html]запчасти для буровых установок гнб[/url]
[url=https://kaluga.price-gnb.ru/zapchastignb/738-gnb-surgut-vakansii.html]гнб сургут вакансии[/url]
[url=https://sochi.price-gnb.ru/zapchastignb/759-gnb-ustanovka-malaya.html]гнб установка малая[/url]
Curtissr - 2017-06-28  16:17:15
 vhrcpwl

http://www.harlingen-havenstad.nl/palladium-schoenen-combineren-654.html
http://www.professionalplan.es/skechers-brillantes-071.php
http://www.wellnessanco.nl/541-yeezy-nederland.php
http://www.active-health.nl/timberland-boots-sale-619.htm
http://www.ptbg.nl/374-adidas-superstar-grey-suede.html

[url=http://www.harlingen-havenstad.nl/clarks-dames-zomer-730.html]Clarks Dames Zomer[/url]
[url=http://www.tr-online.nl/654-adidas-flux-grijs.php]Adidas Grijs[/url]
[url=http://www.sarbot-team.es/403-ralph-lauren-mujer.php]Ralph Mujer[/url]
[url=http://www.softwaretutor.co.uk/682-adidas-ultra-boost-on-feet-white.htm]Adidas Ultra Boost On Feet White[/url]
[url=http://www.ehev.es/961-zapatos-dolce-gabbana-hombre.htm]Zapatos Gabbana[/url]
Lexusmavavto - 2017-06-28  14:35:35
 Предприятие О.О.0 МАВ советует обладателям автомобилей Lexus LS 600 h L HYBRID мы предоставляем услугу полной механической и компьютерной диагностики с последующим ремонтом.
Официально все данные на автомобили Lexus, будут заноситься в электронную базу по обслуживанию вашего автомобиля, с записью на ключ.

[url=https://mavavto.ru/lexus-ls-460] Ремонт Лексус LS 460[/url]

[url=https://mavavto.ru/avtoservis-lexus]https://mavavto.ru/avtoservis-lexus[/url]
Территория по адресу: г. Москва, Метро Калужская, ул. Обручева 42.
[Url=https://mavavto.ru/avtoservis-lexus] автосервіс Лексус Москва[/Url]


Тел:+7(915) 164-13-69
Тел:+7(915) 163-90-27

Территория автосервиса по адресу: г. Москва, Метро Павелецкая, Садовническая набережная.

Компания ООО МАВ является авторизованным дилером, предоставляющим полный комплекс услуг по техническому обслуживанию и ремонту автомобилей Lexus.
Первоклассные специалисты.
Все сотрудники сервисной зоны, от механиков до мастеров, прошли обязательное обучение в техническом центре Lexus и выполняют все работы в четком соответствии с технологией, рекомендованной Lexus AG. Передовое оборудование. Дилерский центр оснащен передовым оборудованием, рекомендованным производителем для ремонта и диагностики автомобилей.
Оригинальные запчасти.
При обслуживании Вашего автомобиля Lexus мы используем только оригинальные запасные части и строго по рекомендованным ценам Lexus RT. Именно такие детали устанавливаются на автомобиль при его сборке на конвейере.
Гарантия.
Гарантийный срок на все виды работ, производимых в нашем центре, составляет 6 месяцев или 10000 км пробега.
Chobrearers - 2017-06-28  14:14:36
 [url=https://nizhnevartovsk.price-gnb.ru/ustanovkignb/732-tehnologiya-prokladki-kabeley-metodom-gnb.html]технология прокладки кабелей методом РіРЅР±[/url]
[url=https://loan.renthop.net/studentloanconsolidation/9733-co-op-bank-professional-and-career-development-loan.html]co op bank professional and career development loan[/url]
[url=https://bizhuteriya.1cbit.net/kupitpodvesku/6290-neonovye-braslety-kupit-odessa.html]неоновые браслеты купить одесса[/url]
[url=https://zap.exkavator.net/inomarkoff/4308-zapchasti-na-avtobus-faw-6600-v-ust-kamenogorsk.html]запчасти на автобус faw 6600 в усть каменогорск[/url]
[url=https://bag.zapravkakartridzhejkazan.ru/man/658-kupit-rukzak-s-ortopedicheskoy-spinkoy-rasprodazha.html]купить рюкзак с ортопедической спинкой распродажа[/url]
[url=https://bag.zapravkakartridzhejkazan.ru/woman/614-kupit-turisticheskiy-rukzak-ufa.html]купить туристический рюкзак уфа[/url]
[url=https://odezhda.1cbit.net/nedorogayaodezhda/5013-kupit-detskuu-odezhdu-prom-ua.html]купить детскую одежду пром юа[/url]
[url=https://cash.renthop.net/lineofcredit/13621-can-assume-a-mortgage-loan.html]can assume a mortgage loan[/url]
[url=https://kosmetika.lend-money.ru/uhod/715-kakuu-kupit-kosmetiku-na-phukete.html]какую купить косметику на пхукете[/url]
[url=https://igrushki.1cbit.net/novorozhdennyj/657-detskiy-klub-igrushki-domodedovskiy.html]детский клуб игрушки домодедовский[/url]
[url=https://mods.lend-money.ru/modydlyaworldoftanks/8353-skachat-mody-na-igru-sains-rou-3.html]скачать моды на игру саинс роу 3[/url]
[url=https://cash.renthop.net/lineofcredit/13629-can-dependents-use-va-loan.html]can dependents use va loan[/url]
[url=https://armavir.price-gnb.ru/zapchastignb/759-gnb-ustanovka-malaya.html]гнб установка малая[/url]
[url=https://omsk.price-gnb.ru/zapchastignb/759-gnb-ustanovka-malaya.html]гнб установка малая[/url]
[url=https://angarsk.price-gnb.ru/ustanovkignb/737-zapchasti-dlya-burovyh-ustanovok-gnb.html]запчасти для буровых установок гнб[/url]
[url=https://orel.price-gnb.ru/zapchastignb/759-gnb-ustanovka-malaya.html]гнб установка малая[/url]
[url=https://tyumen.price-gnb.ru/zapchastignb/738-gnb-surgut-vakansii.html]гнб сургут вакансии[/url]
ThomBymn - 2017-06-28  13:52:49
 растворимый кофе Эквадор по лучшей цене
http://alfa-coffee.com.ua/g7597927-rastvorimyj-kofe-ekvador

[url=https://alfa-coffee.com.ua/]Альфа-Кофе[/url]
Lstrguiffic - 2017-06-28  13:05:01
 Rated 5, bazaar zero

[url=http://community.velvetsundown.com/index.php?topic=110164.new#new] And you wrote this article for a long time?
[/url]

http://lemonitalyx.altervista.org/forum/showthread.php?tid=275988
Chobrearers - 2017-06-28  12:11:57
 [url=https://saint-petersburg.price-gnb.ru/ustanovkignb/737-zapchasti-dlya-burovyh-ustanovok-gnb.html]запчасти для буровых установок РіРЅР±[/url]
[url=https://lendup.renthop.net/boatloans/7831-where-can-find-horses-for-loan.html]where can find horses for loan[/url]
[url=https://addon.lend-money.ru/addonynagarrismod/8347-addony-na-vov-pandariya-5-4-8.html]аддоны на вов пандария 5 4 8[/url]
[url=https://bizhuteriya.1cbit.net/kupitbraslet/6285-fu
itura-dlya-bizhuterii-kupit-samara.html]фурнитура для бижутерии купить самара[/url]
[url=https://velosiped.zapravka-kartridjey-kazan.ru/trehkolesniye/8656-velosipedy-vo-pskove-kupit.html]велосипеды во пскове купить[/url]
[url=https://yuveli
yeukrasheniya.1cbit.net/braslety/57-esli-iz-zolotogo-kolca-vypal-kamen-zaschita-prav-potrebitelya.html]если из золотого кольца выпал камень защита прав потребителя[/url]
[url=https://clock.cartridge-refilling.ru/kidsclock/10017-kupit-naruchnye-chasy-zhenskie-s-silikonovym-remeshkom.html]купить наручные часы женские с силиконовым ремешком[/url]
[url=https://igrushki.1cbit.net/detskieigrushki/591-kupit-igrushki-robokar-poli-v-inte
et-magazine-v-ukraine.html]купить игрушки робокар поли в интернет магазине в украине[/url]
[url=https://mods.lend-money.ru/modydlyaworldoftanks/8335-skachat-mody-na-var-tander-la-5f.html]скачать моды на вар тандер ла 5ф[/url]
[url=https://clock.cartridge-refilling.ru/nastennyje/10044-chasy-shveycarskie-bu-kupit-kiev.html]часы швейцарские бу купить киев[/url]
[url=https://mods.lend-money.ru/modynamaynkraft/8338-kak-skachat-mody-ot-dzhova-0-9-12.html]как скачать моды от джова 0 9 12[/url]
[url=https://mods.lend-money.ru/farmingsimulator/8358-skachat-mody-na-maynkraft-1-6-4-robotov-paukov.html]скачать моды на майнкрафт 1 6 4 роботов пауков[/url]
[url=https://ba
aul.price-gnb.ru/zapchastignb/759-gnb-ustanovka-malaya.html]гнб установка малая[/url]
[url=https://nizhniy-novgorod.price-gnb.ru/zapchastignb/759-gnb-ustanovka-malaya.html]гнб установка малая[/url]
[url=https://saratov.price-gnb.ru/zapchastignb/759-gnb-ustanovka-malaya.html]гнб установка малая[/url]
[url=https://ulan-ude.price-gnb.ru/ustanovkignb/737-zapchasti-dlya-burovyh-ustanovok-gnb.html]запчасти для буровых установок гнб[/url]
[url=https://kurgan.price-gnb.ru/ustanovkignb/737-zapchasti-dlya-burovyh-ustanovok-gnb.html]запчасти для буровых установок гнб[/url]
JamesWraps - 2017-06-28  09:22:49
 Would like to recommend you some interesting topic.
How to multiply your Bitcoins hundredfold in a day?
Just click into the link as being shown below to get some more details about it!
http://universepro.info/

[url=http://savepic.ru/14474559.htm][img]http://savepic.ru/14474559m.png[/img][/url]
JamesWraps - 2017-06-28  09:22:48
 Would like to recommend you some interesting topic.
How to multiply your Bitcoins hundredfold in a day?
Just click into the link as being shown below to get some more details about it!
http://universepro.info/

[url=http://savepic.ru/14474559.htm][img]http://savepic.ru/14474559m.png[/img][/url]
JamesWraps - 2017-06-28  09:22:47
 Would like to recommend you some interesting topic.
How to multiply your Bitcoins hundredfold in a day?
Just click into the link as being shown below to get some more details about it!
http://universepro.info/

[url=http://savepic.ru/14474559.htm][img]http://savepic.ru/14474559m.png[/img][/url]
JamesWraps - 2017-06-28  09:22:42
 Would like to recommend you some interesting topic.
How to multiply your Bitcoins hundredfold in a day?
Just click into the link as being shown below to get some more details about it!
http://universepro.info/

[url=http://savepic.ru/14474559.htm][img]http://savepic.ru/14474559m.png[/img][/url]
Ajiripashim - 2017-06-28  05:26:29
 medication to stop sickness tenze24-domperidone can you still have breast milk not pregnant
Worthingtondq - 2017-06-28  02:29:21
 [url=http://www.keycollection.com/?how=cialis-cheapest-price-uk ]cialis cheapest price uk [/url]
[url=http://www.keycollection.com/?see=viagra-coupons-deals ]viagra coupons deals [/url]
[url=http://www.keycollection.com/?pi=viagra-letter ]viagra letter [/url]
[url=http://www.keycollection.com/?pc=inhaling-viagra ]inhaling viagra [/url]
[url=http://www.keycollection.com/?ac=viagra-color-of-pill ]viagra color of pill [/url]
Lstrguiffic - 2017-06-28  01:06:03
 Still awesome invention - a blog. It would seem an ordinary website but changed the flow of information, the site passed into the hands of one person, and opened another facet of communication with the world.

[url=http://www.myidealbox.com/forum/viewtopic.php?f=2&t=397368&p=460914#p460914] Very simply in words but in reality, much to inadequate, is not all rosy!
[/url]

http://piccolino.rocks/forum/viewtopic.php?f=11&t=139866
Chobrearers - 2017-06-28  00:04:18
 [url=https://nizhnevartovsk.price-gnb.ru/zapchastignb/738-gnb-surgut-vakansii.html]РіРЅР± СЃСѓСЂРіСѓС‚ вакансии[/url]
[url=https://anketa.lend-money.ru/obrazec/13844-ambassy-anketa-na-vizu-v-ameriku.html]ambassy анкета на визу в америку[/url]
[url=https://zhenskayaodezhda.1cbit.net/nedorogayaodezhda/4649-vivid-magazin-zhenskoy-odezhdy.html]vivid магазин женской одежды[/url]
[url=https://loan.renthop.net/studentloanforgiveness/9334-de-acum-incolo-uita-mine-adrian-minune-zippy-loan.html]de acum incolo uita mine adrian minune zippy loan[/url]
[url=https://clock.cartridge-refilling.ru/womanclock/9633-kupit-25-chas-energetik.html]купить 25 час энергетик[/url]
[url=https://clock.cartridge-refilling.ru/kidsclock/9663-inte
et-magazin-kupit-komandirskie-chasy-naruchnye.html]интернет магазин купить командирские часы наручные[/url]
[url=https://addon.lend-money.ru/addonynagarrismod/7981-skachat-addony-wow-enemy-cast-bar.html]скачать аддоны wow enemy cast bar[/url]
[url=https://clock.cartridge-refilling.ru/mankravz/9663-kupit-naruchnye-chasy-sssr-v-krasnoyarske.html]купить наручные часы ссср в красноярске[/url]
[url=https://xiaomi.lend-money.ru/gadzhety/13962-xiaomi-redmi-note-3-pro-32-gb-gde-kupit.html]xiaomi redmi note 3 pro 32 gb где купить[/url]
[url=https://conditioner.kartridzhej-zapravka.ru/mashina/8484-kupit-kondicioner-v-cherkassah-bu.html]купить кондиционер в черкассах бу[/url]
[url=https://visa.avto-signal.ml/biznes/5755-spravka-sponsora-s-raboty-dlya-shengenskoy-vizy-obrazec-oformleniya.html]справка спонсора с работы для шенгенской визы образец оформления[/url]
[url=https://anketa.lend-money.ru/anketyrabota/14023-zapolnyat-za-drugih-anketu.html]заполнять за других анкету[/url]
[url=https://kirov.price-gnb.ru/zapchastignb/738-gnb-surgut-vakansii.html]гнб сургут вакансии[/url]
[url=https://dzerzhinsk.price-gnb.ru/zapchastignb/738-gnb-surgut-vakansii.html]гнб сургут вакансии[/url]
[url=https://kirov.price-gnb.ru/ustanovkignb/737-zapchasti-dlya-burovyh-ustanovok-gnb.html]запчасти для буровых установок гнб[/url]
[url=https://engels.price-gnb.ru/zapchastignb/759-gnb-ustanovka-malaya.html]гнб установка малая[/url]
[url=https://bratsk.price-gnb.ru/ustanovkignb/732-tehnologiya-prokladki-kabeley-metodom-gnb.html]технология прокладки кабелей методом гнб[/url]
CarolCen - 2017-06-27  21:55:01
 Good afte
oon Fuck me like a slut and cum on my face my nickname (Albina45)

Copy the link and go to me.... bit.ly/2s4zWdO

8115935
Avito50caw - 2017-06-27  21:19:00
 [url=http://rrr.regiongsm.ru/38
[img]https://4.bp.blogspot.com/-wHnPeRjH-Bo/WVJBSTbweoI/AAAAAAAAAGk/OeRjYIdBApUuQK3UQBa7W6S5JXK-CC7PQCLcBGAs/s1600/%25D0%25B0%25D0%25B2%25D0%25B8%25D1%2582%25D0%25BE.PNG[/img]
[/url]

-------------------------------
пополнение кошелька авито через сбербанк онлайн
как отменить пополнение кошелька на авито
способы пополнения кошелька на авито
способ пополнения кошелька на авито
способы пополнения кошелька авито
пополнение кошелька авито
пополнение кошелька на авито
пополнение кошелек в авито
пополнение авито со скидкой
пополнение денег на авито
авито пополнение кошелька
пополнение кошелька авито
пополнение авито кошелька
кошелек авито пополнение
пополнение счета авито
пополнение денег авито
пополнение авито
Chobrearers - 2017-06-27  19:28:22
 [url=https://kaliningrad.price-gnb.ru/ustanovkignb/732-tehnologiya-prokladki-kabeley-metodom-gnb.html]технология прокладки кабелей методом РіРЅР±[/url]
[url=https://clock.cartridge-refilling.ru/umniyechase/9604-zapchasti-ot-chasov-kupit.html]запчасти от часов купить[/url]
[url=https://mynefcu.renthop.net/overdraft/13209-masten-construction-loan.html]masten construction loan[/url]
[url=https://cvety.1cbit.net/zakazatdostavku/6059-kupit-vaz-2114-novyy-cvet.html]купить ваз 2114 новый цвет[/url]
[url=https://cash.renthop.net/lineofcredit/13099-bb-car-loan-payment-center.html]bb car loan payment center[/url]
[url=https://loan.renthop.net/obamastudentloanforgiveness/9276-oklahoma-student-loan-authority-mailing-address.html]oklahoma student loan authority mailing address[/url]
[url=https://anketa.lend-money.ru/anketybank/13711-anketa-lusi-hartfiliya.html]анкета люси хартфилия[/url]
[url=https://mods.lend-money.ru/modydlyaworldoftanks/7868-skachat-mody-rp-dlya-crmp-0-3e.html]скачать моды рп для crmp 0 3e[/url]
[url=https://nogti.1cbit.net/strazydlyanogtej/6977-gel-lak-blise-hameleon.html]гель лак blise хамелеон[/url]
[url=https://kanctovary.1cbit.net/ruchki/982-kupit-ruchku-sharikovuu-penagain.html]купить ручку шариковую penagain[/url]
[url=https://kvartiry.lend-money.ru/dvuhkomnatniye/8239-kupit-kvartiru-v-krasnogorske-moskovskoy-oblasti-novostroyka.html]купить квартиру в красногорске московской области новостройка[/url]
[url=https://book.zapravkakartridzhejkazan.ru/psycho/7143-kupit-novye-knigi-vilmont.html]купить новые книги вильмонт[/url]
[url=https://kemerovo.price-gnb.ru/ustanovkignb/732-tehnologiya-prokladki-kabeley-metodom-gnb.html]технология прокладки кабелей методом гнб[/url]
[url=https://volgodonsk.price-gnb.ru/zapchastignb/738-gnb-surgut-vakansii.html]гнб сургут вакансии[/url]
[url=https://cherepovets.price-gnb.ru/ustanovkignb/732-tehnologiya-prokladki-kabeley-metodom-gnb.html]технология прокладки кабелей методом гнб[/url]
[url=https://astrakhan.price-gnb.ru/zapchastignb/759-gnb-ustanovka-malaya.html]гнб установка малая[/url]
[url=https://kaliningrad.price-gnb.ru/zapchastignb/738-gnb-surgut-vakansii.html]гнб сургут вакансии[/url]
Lstrguiffic - 2017-06-27  17:58:19
 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://www.jujubegrowerswa.com.au/forum/index.php?topic=228893.new#new] not sure it is so) although Spasib
[/url]

http://needypeople.org/forums/viewtopic.php?f=2&t=131334
Chobrearers - 2017-06-27  16:04:07
 [url=https://price-gnb.ru/ustanovkignb/732-tehnologiya-prokladki-kabeley-metodom-gnb.html]технология прокладки кабелей методом РіРЅР±[/url]
[url=https://stomatolog.lend-money.ru/lecheniekariesa/7902-lechenie-zubov-v-kredit-bryansk.html]лечение зубов в кредит брянск[/url]
[url=https://vdolg.lend-money.ru/megafon/13682-kto-dast-v-dolg-gorode-nalchike.html]кто даст в долг городе нальчике[/url]
[url=https://lendup.renthop.net/boatloans/7237-tvs-sport-bike-loan-in-kolkata.html]tvs sport bike loan in kolkata[/url]
[url=https://stomatolog.lend-money.ru/lecheniekariesa/7857-chto-vhodit-v-lechenie-kariesa.html]что входит в лечение кариеса[/url]
[url=https://clock.cartridge-refilling.ru/kidsclock/9455-chasy-s-izmeritelem-pulsa-i-schetchikom-kaloriy-kupit.html]часы с измерителем пульса и счетчиком калорий купить[/url]
[url=https://sportpit.lend-money.ru/nabormassy/13661-reyting-sportivnogo-pitaniya-po-effektivnosti.html]рейтинг спортивного питания по эффективности[/url]
[url=https://visa.avto-signal.ml/shengenskayaviza/5562-deystvuet-li-shengenskaya-viza-v-ispanii.html]действует ли шенгенская виза в испании[/url]
[url=https://visa.avto-signal.ml/rabochayaviza/5610-shablon-spravki-s-mesta-raboty-ot-ip-dlya-vizy.html]шаблон справки с места работы от ип для визы[/url]
[url=https://velosiped.zapravka-kartridjey-kazan.ru/detskiye/8195-detskiy-velosiped-s-ruchkoy-ot-3-do-5-let-kupit-deshevo.html]детский велосипед с ручкой от 3 до 5 лет купить дешево[/url]
[url=https://zap.exkavator.net/inomarkoff/4298-zapchasti-na-avtomobil-faw-1083-v-ulan-ude.html]запчасти на автомобиль faw 1083 в улан удэ[/url]
[url=https://cvety.1cbit.net/kupitcvety/6017-maska-dlya-uluchsheniya-cveta-lica-kupit.html]маска для улучшения цвета лица купить[/url]
[url=https://price-gnb.ru/zapchastignb/738-gnb-surgut-vakansii.html]гнб сургут вакансии[/url]
[url=https://price-gnb.ru/ustanovkignb/737-zapchasti-dlya-burovyh-ustanovok-gnb.html]запчасти для буровых установок гнб[/url]
[url=https://price-gnb.ru/ustanovkignb/732-tehnologiya-prokladki-kabeley-metodom-gnb.html]технология прокладки кабелей методом гнб[/url]
[url=https://price-gnb.ru/zapchastignb/759-gnb-ustanovka-malaya.html]гнб установка малая[/url]
[url=https://price-gnb.ru/ustanovkignb/737-zapchasti-dlya-burovyh-ustanovok-gnb.html]запчасти для буровых установок гнб[/url]
<<[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] [517] [518] [519] [520] [521] [522] [523] [524] [525] [526] [527] [528] [529] [530] [531] [532] [533] [534] [535] [536] [537] [538] [539] [540] [541] [542] [543] [544] [545] [546] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.