Systém komentářů pomocí jQuery a Ajax.

 2012-10-27 00:00:00
 Dmitry Burobin

Dnes vytvoříme systém komentářů s automatickou kontrolou vstupních dat pomocí technologie Ajax a přidáváním nového komentáře s použitím jQuery bez znovunačtení stránky.

Série článků:
1) Systém komentářů pomocí jQuery a Ajax.
2) Lajkování neboli karma u komentářů.
3) Strankování.

Vytvoření tabulky a připojení k databázi.

Vytvoříme si tabulku comments, do které budeme ukládat: identifikátor komentáře ( id ), identifikátor rodičovského komentáře ( parent_id ), jméno ( name ), text komentáře ( text ) a datum přidání komentáře ( date ).

CREATE TABLE `comments` (
`id` INT ( 5 ) NOT NULL AUTO_INCREMENT,
`parent_id` INT ( 5 ) NOT NULL,
`name` VARCHAR ( 255 ) NOT NULL,
`komentar` TEXT,
`date` DATETIME,
PRIMARY KEY(`id`)
)ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci

Taktéž si vytvořte soubor db.php, pro připojení k databázi.
<?php
$DBSERVER 'localhost'//server, který bude použít pro navázáníspojení s DB 
$DBUSER 'root'//Váš mysql login, nejspíš je stejný jako u mě pro localhost, tudiž root 
$DBPASS '****'//heslo, které jste zadaval při instalaci MySQL 

$DB 'test'//databáze, s kterou budeme pracovat 

//navazení spojení pomoci mysql_connect  
$link mysql_connect($DBSERVER$DBUSER$DBPASS)  or die("Could not connect: " mysql_error()); 
//vybírame databázi 
mysql_select_db($DB$link) or die ('Can\'t use test : ' mysql_error()); 
//řekněme MySQL, že všechná data jsou ve formatu UTF-8 
mysql_query("SET NAMES UTF8");
?>

index.php

Hlavní stránka bude obsahovat formulář pro přidávání komentářů s polem pro jméno, zprávu a skryté pole, do kterého budeme ukálát identifikátor rodičovského komentáře, pokud někdo bude odpovídat na nějaký komenář. Soubor index.php vypadá takto:

<?php
/*Soubor pro vybírání komentářů z databáze*/
require_once 'comment.php';
?>
<!DOCTYPE html>
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">

<
head>
    <
title>Systém komentářů.</title>
    <
meta charset="utf-8" >
    
    <
link rel="stylesheet" href="style.css"> <!-- soubor se styly -->
    <
script src="jquery-1.7.1.min.js"></script> <!-- připojení jquery -->
    <script src="comment.js"></script> <!-- funkce potřebné pro přidávání komentářů -->
    
</head>
<body>
<ul id="commentWrapper">
<?php
/*Zde v proměnné $comments jsou komentáře*/
echo $comments;
?>
<!-- formulář pro přidávání komentářů -->
</
ul>    
    <
div id="commentBox">
        <
input class="validate" type="text" name="name" >
        <
input id="parent" type="hidden" name="parent_id" value="">
        <
div class="commentText">
            <
textarea name="text"></textarea>
        </
div>
        <
button>Přidat</button><img class="loader" src="loader.gif">
    </
div>
</
body>
</
html>

Styly a knihovna jQuery

Pro správné fungování potřebujeme připojit knihovnu jQuery. Tu buď stáhnete z oficiálního webu nebo z archivu s tímto článkem. Pak, aby komentáře líp vypadali přidáme styly, nic složitého v nich není, proto je nebudu popisovat:

body
{
    
margin:0;
    
padding:0;
}
ulli
{
    list-
style-type:none;
}
.
loader
{
    
display:none;
}
#commentBox
{
    
width:400px;
    
padding:10px;
}
#commentBox input
{
    
width:250px;
    
height:25px;
    
padding0 5px;
    
margin:5px;
    
bordersolid 1px #ccc;
    
background:#f1f1f1 url(bg_input.png) no-repeat;
    
font400 12pt/14pt Ume Gothic O5;
}
#commentBox textarea
{
    
width:250px;
    
height:100px;
    
margin5px;
    
padding5px;
    
bordersolid 1px #ccc;
    
background:#f1f1f1 url(bg_koment.png) no-repeat;
    
font400 12pt/14pt Ume Gothic O5;
}
#commentBox button
{
    
height:30px;
    
width:85px;
    
margin-left183px;
    
margin-top:0px;
    
font:700 12pt/14pt Ume Gothic O5;
}
#commentWrap
{
    
width:350px;
    
padding:10px;
    
padding-bottom:3px;
    
margin:10px;
    
border1px solid #ccc;
    
border-radius:10px;
    
background:#f7f7f7;
}
#commentWrap .komentar
{
    
padding:5px;
    
padding-left:0px;
    
border-top:1px solid #ccc;
    
margin-bottom:10px;
    
font:400 12pt/14pt Times New Roman;
}
#commentWrap .replay
{
    
margin-left:270px;
    
font:700 10pt/12pt Ume Gothic O5;
}
#commentWrap a
{
    
text-decoration:none;
}
#commentWrap .commentName
{
    
font:700 10pt/12pt Ume Gothic O5;
}
#commentWrap .commentDate
{
    
font:400 11pt/13pt Times New Roman;
}
.
repName
{
    
font:400 12pt/14pt Times New Roman;
    
font-style:italic;
}
.
repText
{
    
font:700 10pt/12pt Ume Gothic O5;
}
.
repDate
{
    
font:400 9pt/11pt Times New Roman;
    
font-style:italic;
}

comment.php

Tento soubor je určen pro vybírání dat z databáze a vkládání těchto dat do šablony.

<?php
// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce ) 
require_once 'db.php';

// Vybereme komentáře z databáze
$query mysql_query("
         SELECT `id`,`parent_id`,`name`,`komentar`, 
         DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add
         FROM `comments` ORDER BY `id` ASC 
         "
);
         
// Pokud při vykonání příkazu nastané chyba vypišeme ji
if(!$query) { echo mysql_error() . " - " mysql_errno(); }
else {

// Jinak pomocí cyklusu projdeme všechny záznamy v tabulce
        
while($result mysql_fetch_assoc($query))
        {
            
// a uložíme je do pole $data  
            
$data[$result['id']] = $result;
        }

// Funkce pro vkládání dat ( komentářů ) do šablony
function commentsToTemplate($comment)
{
// $comment - pole komentáře - id, parent_id, name, text, date 
    
// Zapneme bufferování výstupu, aby šablona nebyla zobrazená v místě volání funkce
    
ob_start();  
      
// Připojíme šablonu comment_template.php, do které vložíme data z pole $comment
    
require_once 'comment_template.php';                     
  
// Získáváme obsah bufferu jako řetězec   
    
$comments_string =  ob_get_contents(); 

// Vymažeme všechno z bufferu
    
ob_end_clean();

// Vrácíme komentář jako řetězec   
    
return $comments_string;    
}

// Funkce pro zpracování pole $data, které
// bude rozděleno do jednotlivých komentářů a odesláno funkci 
// commentsToTemplate
function commentsString($data)
{
    foreach(
$data as $w
    {
        
$string .= commentsToTemplate($w);
    }
 
return 
$string
}  

// proměnná $comments obsahuje naše komentáře, které zobrazujeme na hlavní stránce
$comments commentsString($data);

// vynulujeme proměnnou $data 
$data null;
}
?>

comment_template.php

Toto je vlastně šablona jednotlivého komentáře.

<?php
// Do této šablony se načítají data z pole $data, která jsou odesláná funkci commentsToTemplate
echo '<li id="comment'.$comment['id'].'">
    <div id="commentWrap">'
;
        
// Pokud existuje parent_id, pak zobrazíme, že se jedna o odpověď
        
if($comment['parent_id']!=0)
        {
// Vybereme z DB jméno a datum rodičovského komentáře
            
$q mysql_query("SELECT `name`, DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add FROM `comments_my` WHERE `id`='".$comment['parent_id']."'");
            
$r mysql_fetch_assoc($q);
            echo 
'<span class="repText">Odpověď na komentář</span> <span class="repName">
            '
.$r['name'].'
            </span> <span class="repText">from</span> <span class="repDate">
            '
.$r['date_add'].'
            </span><br>'
;
        }
        
// Zobrazíme jméno a datum přidání
echo    '<span class="commentName">'.$comment['name'].'</span> - <span class="commentDate">'.$comment['date_add'].'</span>
        <div class="komentar">
<!--Zobrazíme text komentáře-->
            '
.$comment['komentar'].'
        </div>
<!--Pokud zmačkneme na tento odkaz, pak se do skrýteho pole s názvem parent_id přidá
identifikátor tohoto komentáře. 
Použil jsem zde JS událost onClick, tzn. pokud je tlačítko zmačknuté, pak najdi prvek s 
id parent ( což je skrýte pole parent_id ) a do hodnoty přidej id komentáře, na který chcete odpovědět-->
        <a class="replay" href="javascript:;"
        onClick="document.getElementById(\'parent\').value='
.$comment['id'].';">Odpovědět</a>
    </div>
</li>'
;
?>

comment.js

Tento soubor je určen pro odesílaní dat na server a přidávání do databáze

$(document).ready(function(){
    
// Objekt commentBox bude obsahovat data pro odesílání na server
    
var commentBox = {};
    
// Po kliknutí na tlačítko přidat      
     
$('#commentBox button').live('click',function(){
         
// Do objektu commentBox bude přidána hodnota skrýteho pole input s názvem parent_id,
// které obsahuje id rodičovského komentáře a pokud je prázdné tak bude 0, což znamená, že
// se jedná o nový komentář bez reakci na něj ( toto se bude ověřovat až odešleme data na server ).   
        
commentBox.parent_id = $('#commentBox').find("input[name='parent_id']").val();
        
// Taktéž přidáme do objektu commentBox hodnotu pole name a zprávu
        
commentBox.name = $('#commentBox').find("input[name='name']").val();        
        
commentBox.text = $('#commentBox').find("textarea").val();
// Abyste to lépe pochopili syntaxe toho, jak přidáváme hodnoty do objektu je:
// Objekt.název_proměnné = hledáme input nebo textarea.hodnota pole

// Funkce pro odesílání dat na server        
        
sendData();
     });
    

function 
sendData()
{
// Najdeme tlačítko schováme jej a zobrazíme loader ( ten si můžete stáhnout z archivu )
    
$('#commentBox').find('button').hide().next().show();

// Odešleme    data metodou post na server
    
$.post(
// Soubor, ve kterém se provádí ověřování dat a přidávání komentářů     
        
"addkoment.php",
// Objekt s proměnnými (parent_id, name a text)
        
commentBox,
        function(
data){
// Pokud jsou nějaka data, to znamená, že nastala chyba
            
if(data)
            {
// Převedeme tento řetězec JSON do objektu JS
                
data = $.parseJSON(data);
                
// Vytvoříme proměnnou errors, která bude obsahovat název chyby
                
var errors '';

// Použijeme cyklus pro zobrazení všech chyb najednou.
// Použil jsem tuto konstrukci, protože nejprvé jsem zobrazoval všechny chyby, ale
// nakonec jsem to změnil a teď se bude zobrazovat jenom jedna konkretní chyba     
// Kdybyste chtěli zobrazit všechny chyby tak použijte konstrukci
// errors += val+'\n'; - každá chyba se zobrazí na samostatném řádku.
// i - obsahuje název chybného pole a val - popis chyby
            
                
$.each(data, function(ival)
                {
                    
errors += i;
                });

// Uložil jsem do proměnné errors jenom název chybného pole a
// cyklusem switch procházim všechny varianty a přidávam červený rámeček 
// pokud pole je prázdné nebo jestli komentář nebyl přidan tak zobrazim hlášení                    
                   
switch (errors
                   {
                      case 
'name':
                        $(
'#commentBox').find("input[name='name']").css('border','2px solid red');
                        break
                      case 
'text':
                        $(
'#commentBox').find("textarea").css('border','2px solid red');
                        break
                      case 
'not_add':
                        
alert('Komentář nebyl přidan.')
                        break
                      default:
                        
alert('Něco je špatně')
                  }

// Najdeme loader ( ten si můžete stáhnout z archivu ) schováme jej a zobrazíme tlačítko přidat     
                
$('#commentBox').find('button').show().next().hide();

// Jinak, pokud žadná chyba nenastala, tak voláme funkci addComment, která zobrazí
// komentář bez znovunačtení stránky a vynuluje hodnoty vstupních poli
            
} else {
                
addComment();        
            }
        }
    
    )

}


function 
addComment()
{
// Na konec prvků s id commentWrapper ( což je ul ) přidame tag <li></li>,
// ve kterém se bude nacházet nový komentář
    
$("#commentWrapper").append('<li></li>');

// Najdeme poslední tag <li>, který jsme teď vytvořili a
// načteme do něj poslední komentář
    
$("#commentWrapper li:last").load('new_comment.php');
// Najdeme loader ( ten si můžete stáhnout z archivu ) schováme jej a zobrazíme tlačítko přidat     
    
$('#commentBox').find('button').show().next().hide();

// Vynulujeme hodnoty vstupních poli
    
$('#commentBox input').val('');
    $(
'#commentBox textarea').val('');

}


});

addkoment.php

Tento skript zpracovává data poslána na server pro zpracování.

<?php
// Ověříme, zda se jedna o odeslána POST data nebo si člověk jen tak otevřel tuto stránku
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {

// Pokud ano, pomocí funkci sleep přidame efekt zpoždění, abyste 
// viděl loader, jinak, protože pracujeme na lokálním serveru
// se ten loader hned schová  
     
sleep(2);

// Ověříme vstupní data     
// Pokud je pole name nebo textové pole prázdné do pole $error uložíme text chyby
// ukončíme skript a odešleme tuto chybu v JSON formátu  
     
if(!isset($_POST['name']) OR empty($_POST['name']))
     {
        
$error['name'] = "Zadejte jméno.";
        exit(
json_encode($error));
     } else {
        
$name htmlspecialchars(stripslashes(trim($_POST['name'])));
     }
     
     if(!isset(
$_POST['text']) OR empty($_POST['text']))
     {
        
$error['text'] = "Zadejte zprávu.";
        exit(
json_encode($error));
     } else {
        
$text stripslashes(htmlspecialchars(trim($_POST['text'])));
     }
     
// V tomto případě, když parent_id je prázdné pole tak mu přiřadime hodnotu 0
// to znamená, že se jedná o nový komentář, který není odpovědí na něčí jiný  
     
if(!isset($_POST['parent_id']) OR empty($_POST['parent_id']))
     {
        
$parent_id 0;
     } else {
        
$parent_id stripslashes(htmlspecialchars(trim($_POST['parent_id'])));
     }
     
// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce )  
     
require_once 'db.php';
     
// Přidame komentář do databáze a vrátíme false, tzn.
// že chyba nenastala a komentář byl přidán.
     
$q mysql_query("
     INSERT INTO `comments`(`parent_id`,`name`,`komentar`,`date`)
     VALUES('"
.$parent_id."','".$name."','".$text."', NOW())
     "
);
     if(!
$q) { $error['not_add'] = "Komentář nebyl přidan."; exit(json_encode($error));}
     else { exit(
false); }

}
?>

new_comment.php

V tomto souboru vybírame poslední komentář, abysme ho následně zobrazili po úspěšnem ověření vstupních dat.

<?php
// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce ) 
require_once 'db.php';
// Vybereme maximální ( poslední přidáný ) id
$max mysql_query("SELECT MAX(`id`) FROM `comments_my`");
// Pak vybereme všechny související údaje s tímto identifikátorem
$query mysql_query("
         SELECT `parent_id`,`name`,`komentar`, 
         DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add
         FROM `comments_my` WHERE `id` = '"
.mysql_result($max,0)."'
         "
);
$comment mysql_fetch_assoc($query);

// A stejně, jak jsme zobrazovali komentáře před tím, zobrazíme poslední přidáný
echo '<li id="comment'.mysql_result($max,0).'">
    <div id="commentWrap">'
;
        
        if(
$comment['parent_id']!=0)
        {
            
$q mysql_query("SELECT `name`, DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add FROM `comments_my` WHERE `id`='".$comment['parent_id']."'");
            
$r mysql_fetch_assoc($q);
            echo 
'<span class="repText">Odpověď na komentář</span> <span class="repName">
            '
.$r['name'].'
            </span> <span class="repText">from</span> <span class="repDate">
            '
.$r['date_add'].'
            </span><br>'
;
        }
        
echo    
'<span class="commentName">'.$comment['name'].'</span> - <span class="commentDate">'.$comment['date_add'].'</span>
        <div class="komentar">
            '
.$comment['komentar'].'
        </div>
        <a class="replay" href="javascript:;"
        onClick="document.getElementById(\'parent\').value='
.mysql_result($max,0).';">Odpovědět</a>
    </div>
</li>'
;
?>

Závěr

Probrali jsme, jak můžeme zpracovávát formuláře bez znovunačtení stránky. Doufám, že se Vám tento článek líbil a byl pro Vás přínosný.

Systém Orphus
Napište komentář.
Celkem komenrářů(10301)
Brokersordef - 2017-07-02  14:37:46
 fx-brokers-review.com/index_ie.html bróicéirí barr Forbhreathnú mhargadh Forex
Chobrearers - 2017-07-02  13:27:02
 [url=https://ivanovo.dengivdolg.ml/chastnyykredit/1076-elektronnye-dengi-v-dolg-ot-chastnyh-lic.html]электронные деньги РІ долг РѕС‚ частных лиц Рі. Иваново[/url]
[url=https://mynefcu.renthop.net/gogreenchecking/15644-online-home-loan-comparison.html]online home loan comparison[/url]
[url=https://center.renthop.net/rooms/4818-houses-for-rent-in-bell-gardens-califo
ia.html]houses for rent in bell gardens califo
ia[/url]
[url=https://shakhty.dengivdolg.ml/podraspisku/1017-zhenschina-prosit-v-dolg-deneg.html]женщина просит в долг денег г. Шахты[/url]
[url=https://mynefcu.renthop.net/gogreenchecking/15648-online-money-loan-companies.html]online money loan companies[/url]
[url=https://center.renthop.net/condos/4780-morris-il-60450-for-rent.html]morris il 60450 for rent[/url]
[url=https://moscow.dengivdolg.ml/bystryyzaym/1043-astrologiya-i-dengi-pravilno-brat-v-dolg-i-otdavat.html]астрология и деньги правильно брать в долг и отдавать г. Москва[/url]
[url=https://tv.cartridge-refilling.ru/oled/2544-kupit-televizor-dlya-avtomobiley.html]купить телевизор для автомобилей[/url]
[url=https://center.renthop.net/apartments/4820-barratt-developments-london-office-rent.html]barratt developments london office rent[/url]
[url=https://nizhniy-tagil.dengivdolg.ml/dolg/1050-kak-zakazat-dengi-na-mts-v-dolg.html]как заказать деньги на мтс в долг г. Нижний Тагил[/url]
[url=https://loan.renthop.net/fhaloan/11603-compare-car-loan-rates-india-2011.html]compare car loan rates india 2011[/url]
[url=https://center.renthop.net/studio/4821-rooms-for-short-term-rent-in-accra.html]rooms for short term rent in accra[/url]
[url=https://yekaterinburg.dengivdolg.ml/podraspisku/1017-zhenschina-prosit-v-dolg-deneg.html]женщина просит в долг денег г. Екатеринбург[/url]
[url=https://kuhni.lend-money.ru/kuhniizmassiva/11571-remont-vannyh-i-kuhni-moskva.html]ремонт ванных и кухни москва[/url]
[url=https://center.renthop.net/place/4823-winfield-houses-for-rent.html]winfield houses for rent[/url]
[url=https://kostroma.dengivdolg.ml/podraspisku/1017-zhenschina-prosit-v-dolg-deneg.html]женщина просит в долг денег г. Кострома[/url]
[url=https://tv.cartridge-refilling.ru/uhd/2536-kupit-televizor-lg-42la620v.html]купит телевизор lg 42la620v[/url]
[url=https://center.renthop.net/place/4823-winfield-houses-for-rent.html]winfield houses for rent[/url]
Erskybdus - 2017-07-02  13:12:29
 Я извиняюсь, но, по-моему, Вы допускаете ошибку.

---

Монеты России [url=http://www.art-jewel.com/index.php?option=com_k2&view=itemlist&task=user&id=55944]тут[/url]
Lstrguiffic - 2017-07-02  09:38:02
 The author has a very nice style

[url=http://forumhokibos.com/thread-150357.html] Thank you - for the warm welcome)
[/url]

http://codbwforums.icyboards.net/showthread.php?tid=105456&pid=202093#pid202093
DavidEmind - 2017-07-02  08:08:45
 Hello friends! Who want to find me and to talks I moved here:
http://web4424381.m3yun.mydnns.com/home.php?mod=space&uid=149133
Lstrguiffic - 2017-07-02  03:54:56
 Excellent article thanks

[url=http://www.forum.npoa.org.uk/showthread.php?tid=7800&pid=105088#pid105088] Something heard, but not in such detail, and where the material was taken?
[/url]

http://ritualafricanart.com/index.php/forum/site-feedback/42762-ambien-mas-alta-calidad-gratuitas#42757
Jimmyeduro - 2017-07-02  02:17:16
 Последние автомобильные новости здесь [url=http://drivim.ru/]drivim.ru[/url]
Hiksiss - 2017-07-02  01:46:06
 Мы ценим ваше время и делим с вами общие цели. Ваши продажи для нас главный приоритет.
сео продвижение сайта) логин скайпа SEO2000[/url]

оращайтесь договримся есть примеры работ логин скайпа SEO2000
Karenviame - 2017-07-01  23:48:18
 welcome you Like to blow my nickname (Lida93)

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

8428248
Lstrguiffic - 2017-07-01  22:25:53
 Thank you, lea
ed a lot of useful information.

[url=http://www.xn--53-mlcai5bagn4j.xn--p1ai/viewtopic.php?f=2&t=753566] Yeah ... Suffice controversial, would argue with the author ...
[/url]

http://163.15.202.98/FOP/QQ/QQ_14/modules/newbb/newtopic.php?forum=2
Chobrearers - 2017-07-01  17:22:22
 [url=https://belgorod.dengivdolg.ml/podraspisku/824-dengi-bezrabotnym-v-dolg.html]деньги безработным РІ долг Рі. Белгород[/url]
[url=https://kanctovary.1cbit.net/bloknot/3241-kupit-rabochie-tetradi-dlya-shkoly-v-inte
et-magazine-nedorogo-v-spb.html]купить рабочие тетради для школы в интернет магазине недорого в спб[/url]
[url=https://center.renthop.net/homes/4636-tillers-for-rent-austin.html]tillers for rent austin[/url]
[url=https://kaluga.price-gnb.ru/ustanovkignb/1276-ustroystvo-zakrytyh-perehodov-metodom-gnb.html]устройство закрытых переходов методом гнб г. Калуга[/url]
[url=https://book.zapravkakartridzhejkazan.ru/psycho/9402-proschay-berlin-kniga-kupit.html]прощай берлин книга купить[/url]
[url=https://center.renthop.net/homes/4636-tillers-for-rent-austin.html]tillers for rent austin[/url]
[url=https://kirov.dengivdolg.ml/podraspisku/824-dengi-bezrabotnym-v-dolg.html]деньги безработным в долг г. Киров[/url]
[url=https://platya.1cbit.net/koktejlnyeplatya/3089-kupit-veche
ee-plate-moskve-nedorogo.html]купить вечернее платье москве недорого[/url]
[url=https://center.renthop.net/moving/4637-triplexes-for-rent-in-seattle.html]triplexes for rent in seattle[/url]
[url=https://arkhangelsk.dengivdolg.ml/podraspisku/824-dengi-bezrabotnym-v-dolg.html]деньги безработным в долг г. Архангельск[/url]
[url=https://muzhskayaodezhda.1cbit.net/rubashki/3181-brendy-na-muzhskie-rubashki.html]бренды на мужские рубашки[/url]
[url=https://center.renthop.net/moving/4637-triplexes-for-rent-in-seattle.html]triplexes for rent in seattle[/url]
[url=https://taganrog.dengivdolg.ml/chastnyykredit/845-mozhno-li-perekinut-dengi-vzyatye-v-dolg.html]можно ли перекинуть деньги взятые в долг г. Таганрог[/url]
[url=https://putevka.1cbit.net/tur/9383-goryaschie-tury-2015-po-rossii.html]горящие туры 2015 по россии[/url]
[url=https://center.renthop.net/condos/4635-mira-nila-homes-for-rent.html]mira nila homes for rent[/url]
[url=https://kostroma.dengivdolg.ml/podraspisku/824-dengi-bezrabotnym-v-dolg.html]деньги безработным в долг г. Кострома[/url]
[url=https://anketa.lend-money.ru/obrazec2/16284-anketa-pri-prieme-na-sluzhbu-v-prokuraturu.html]анкета при приеме на службу в прокуратуру[/url]
[url=https://center.renthop.net/townhouses/4638-houses-for-rent-in-philadelphia-19141-zip-code.html]houses for rent in philadelphia 19141 zip code[/url]
Brianwek - 2017-07-01  17:04:22
 * You should consume high fibrous foods such as fruits and vegetables for flushing out toxins from your body, which will consequently treat hyper pigmentation and other complications. "Staleness" is the great enemy of players who play long seasons.Commercial Real Estate Made Simple. Believe it or not, it is preferable to see a doctor foremost before taking any one of them pills.”)Can you do that elsewhere? Have you observed this take place just before.Nursing faculties themselves offer financial help to scholars. It can bring you huge profits, but it can also take away that profit away from you.Yet still here is the probably a kind of scarce cinema in which he's not manage.htmlArticle Source:&nbsp;Nationals Add Soriano To Bullpen - RealGM WiretapThe Nationals have agreed to a two-year, $28 million deal with Rafael Soriano, [url=http://www.cheapjerseyswholesalenfl.com/]Cheap NFL Jerseys Wholesale[/url],[url=http://www.cheapjerseyswholesalenfl.com/]Wholesale NFL Jerseys China[/url], according to a source.[url=http://www.cheapjerseyswholesalenfl.com/]Wholesale NFL Jerseys From China[/url]. For instance, ask anyone on how they log in into their account. We require toward find their ideals and evaluations and make your mind up what they are basing them upon. It&rsquo;s only matter of time before these areas get better too.Visit my site??http://www.cheapjerseyswholesalenfl.com/
Lstrguiffic - 2017-07-01  16:58:16
 That's it for this article begin to read this blog. Plus one subscriber :)

[url=http://24monitor.ru/forum/lrrsluri783282/] great idea ... we would adopt ... great.
[/url]

http://singcere.net/demo/mood/forum.php?mod=viewthread&tid=10415321&extra=
Romancit - 2017-07-01  15:42:04
 Как хорошо, что наткнулся на ваш сайт, очень много информации почерпнул [url=http://blitz-remont.ru]blitz-remont.ru[/url]
Vikt#oriagennick[Wyqobuxejfvniwuj,2,5] - 2017-07-01  15:35:21
 Нужная для управляющего подборка важной информации
Глубокое изложение всех рабочих схем уменьшения Налогов к уплате

Вся информация о милицейских и налоговых проверках, законное противодействие отжимам, рейдерам, наездам и прочим неадекватам

[url=http://nalogifizlucha.ru]виды налоговых схем[/url]
Chobrearers - 2017-07-01  15:10:26
 [url=https://nizhnevartovsk.price-gnb.ru/ustanovkignb/1255-prokladka-truboprovodov-metodom-gnb-smeta.html]прокладка трубопроводов методом РіРЅР± смета Рі. Нижневартовск[/url]
[url=https://stomatolog.lend-money.ru/lecheniezubov/10134-lechenie-kariesa-u-rebenka-moskva.html]лечение кариеса у ребенка москва[/url]
[url=https://center.renthop.net/beds/4648-enterprise-rent-a-car-career-benefits.html]enterprise rent a car career benefits[/url]
[url=https://penza.price-gnb.ru/zapchastignb/1304-chertezhi-golovki-gnb.html]чертежи головки гнб г. Пенза[/url]
[url=https://xiaomi.lend-money.ru/telephone/16128-xiaomi-urban-backpack-kupit.html]xiaomi urban backpack купить[/url]
[url=https://center.renthop.net/rooms/4640-houses-for-rent-bearfield-columbia-mo-mall.html]houses for rent bearfield columbia mo mall[/url]
[url=https://saransk.dengivdolg.ml/bystryyzaym/799-srochno-nuzhny-dengi-v-dolg-100000-segodnya-s-plohoy-kreditnoy-istoriey.html]срочно нужны деньги в долг 100000 сегодня с плохой кредитной историей г. Саранск[/url]
[url=https://loan.renthop.net/publicserviceloanforgiveness/11552-hdfc-home-loan-principal-outstanding-balance-credit.html]hdfc home loan principal outstanding balance credit[/url]
[url=https://center.renthop.net/studio/4637-room-to-rent-in-goodwood-cape-town.html]room to rent in goodwood cape town[/url]
[url=https://taganrog.dengivdolg.ml/dolg/801-zagovor-na-polucheniya-deneg-v-dolg.html]заговор на получения денег в долг г. Таганрог[/url]
[url=https://shkafy-kupe.lend-money.ru/uglovoj/16013-polki-dlya-shkafov-kupe-s-boku.html]полки для шкафов купе с боку[/url]
[url=https://center.renthop.net/rent/4638-huntsville-al-airport-rent-a-car.html]huntsville al airport rent a car[/url]
[url=https://tyumen.dengivdolg.ml/podraspisku/798-dengi-v-dolg-u-kievstara.html]деньги в долг у киевстара г. Тюмень[/url]
[url=https://visa.avto-signal.ml/ceny/8008-obrazec-spravki-s-mesta-raboty-na-vizu-v-estoniu.html]образец справки с места работы на визу в эстонию[/url]
[url=https://center.renthop.net/rooms/4638-houses-for-rent-barack-point-nsw-lotteries.html]houses for rent barack point nsw lotteries[/url]
[url=https://podolsk.lend-money.ru/kreditonlayn/518-centralnyy-ofis-banka-evrositibank.html]Центральный офис банка Евроситибанк г. Подольск[/url]
[url=https://velosiped.zapravka-kartridjey-kazan.ru/speed/10564-kupit-velosiped-rebnku-12-let.html]купить велосипед ребёнку 12 лет[/url]
[url=https://center.renthop.net/living/4637-room-for-rent-in-bf-resort-las-pinas.html]room for rent in bf resort las pinas[/url]
Chobrearers - 2017-07-01  13:01:48
 [url=https://chelyabinsk.lend-money.ru/zaympodpts/487-centralnyy-ofis-banka-kreditekspressbank.html]Центральный офис банка Кредитэкспрессбанк Рі. Челябинск[/url]
[url=https://lendup.renthop.net/autoloans/9627-loan-documentation-specialist-2-salary.html]loan documentation specialist 2 salary[/url]
[url=https://center.renthop.net/townhouses/4640-houses-for-rent-in-philadelphia-19150-zip-code.html]houses for rent in philadelphia 19150 zip code[/url]
[url=https://kemerovo.price-gnb.ru/zapchastignb/1292-ceny-na-gnb-prokoly.html]цены на гнб проколы г. Кемерово[/url]
[url=https://igrushki.1cbit.net/detskieigrushki/2425-inte
et-magazin-detskih-razvivauschih-nastolnyh-igrushek.html]интернет-магазин детских развивающих настольных игрушек[/url]
[url=https://center.renthop.net/studio/4634-room-to-rent-in-durban-south-beach.html]room to rent in durban south beach[/url]
[url=https://voronezh.dengivdolg.ml/podraspisku/779-dengi-v-dolg-srochno-otzyvy.html]деньги в долг срочно отзывы г. Воронеж[/url]
[url=https://kvartiry.lend-money.ru/dvuhkomnatniye/10555-kvartiry-v-krasnodare-kupit-ot-zastroyschika-v-novostroyki.html]квартиры в краснодаре купить от застройщика в новостройки[/url]
[url=https://center.renthop.net/apartments/4634-apartments-rent-city-heights-nottingham.html]apartments rent city heights nottingham[/url]
[url=https://chita.dengivdolg.ml/dolg/789-esli-svadebnye-dengi-dali-v-dolg.html]если свадебные деньги дали в долг г. Чита[/url]
[url=https://bizhuteriya.1cbit.net/kupitbraslet/8133-braslet-ot-komarov-kupit-v-rostove.html]браслет от комаров купить в ростове[/url]
[url=https://center.renthop.net/homes/4637-tiltman-place-flat-rent.html]tiltman place flat rent[/url]
[url=https://ba
aul.lend-money.ru/kreditonlayn/501-centralnyy-ofis-banka-pervyy-respublikanskiy-bank.html]Центральный офис банка Первый Республиканский Банк г. Барнаул[/url]
[url=https://muzhskayaodezhda.1cbit.net/bryuki/3238-kupit-zimniy-kostum-muzhskoy-do-minus-30-gradusov-sportivnyy.html]купить зимний костюм мужской до минус 30 градусов спортивный[/url]
[url=https://center.renthop.net/beds/4649-enterprise-rent-a-car-career-salaries.html]enterprise rent a car career salaries[/url]
[url=https://podolsk.dengivdolg.ml/podraspisku/779-dengi-v-dolg-srochno-otzyvy.html]деньги в долг срочно отзывы г. Подольск[/url]
[url=https://cash.renthop.net/onlineloans/15469-rate-busters-home-loan-calculator.html]rate busters home loan calculator[/url]
[url=https://center.renthop.net/living/4636-room-for-rent-in-baguio-city-near-sm.html]room for rent in baguio city near sm[/url]
ThomBymn - 2017-07-01  11:02:00
 кофе Кимбо с доставкой по лучшей цене
http://alfa-coffee.com.ua/g3970372-kofe-kimbo

[url=https://alfa-coffee.com.ua/]Альфа-Кофе[/url]
Chobrearers - 2017-07-01  10:54:06
 [url=https://dzerzhinsk.price-gnb.ru/zapchastignb/1276-futlyar-dlya-trub-gnb.html]футляр для труб РіРЅР± Рі. Дзержинске[/url]
[url=https://bizhuteriya.1cbit.net/kupitpodvesku/8021-serebryanyy-braslet-kupit-cena.html]серебряный браслет купить цена[/url]
[url=https://center.renthop.net/rooms/4638-houses-for-rent-barack-point-nsw-lotteries.html]houses for rent barack point nsw lotteries[/url]
[url=https://nizhnekamsk.price-gnb.ru/zapchastignb/1276-futlyar-dlya-trub-gnb.html]футляр для труб гнб г. Нижнекамск[/url]
[url=https://anketa.lend-money.ru/anketynal/16143-diversity-lottery-anketa.html]diversity lottery анкета[/url]
[url=https://center.renthop.net/homes/4638-timacuan-homes-for-rent.html]timacuan homes for rent[/url]
[url=https://volzhskiy.dengivdolg.ml/chastnyykredit/762-kak-snyat-dengi-v-dolg-s-karty-kukuruza.html]как снять деньги в долг с карты кукуруза г. Волжский[/url]
[url=https://parfumeriya.lend-money.ru/man/16155-kupit-v-simferopole-elitnuu-parfumeriu.html]купить в симферополе элитную парфюмерию[/url]
[url=https://center.renthop.net/homes/4639-timbarra-lofts-for-rent.html]timbarra lofts for rent[/url]
[url=https://angarsk.dengivdolg.ml/podraspisku/767-dengi-v-dolg-v-kalinkovichah.html]деньги в долг в калинковичах г. Ангарск[/url]
[url=https://bizhuteriya.1cbit.net/kupitsergi/8085-bizhuteriya-babochki-kupit.html]бижутерия бабочки купить[/url]
[url=https://center.renthop.net/townhouses/4640-houses-for-rent-in-philadelphia-19150-zip-code.html]houses for rent in philadelphia 19150 zip code[/url]
[url=https://syktyvkar.dengivdolg.ml/dolg/765-dom-v-dolg-dengi-pod-procenty-po.html]дом в долг деньги под проценты по г. Сыктывкар[/url]
[url=https://putevka.1cbit.net/kupitputevku/9450-kupit-putevku-iz-moskvy-v-hurgadu.html]купить путевку из москвы в хургаду[/url]
[url=https://center.renthop.net/apartments/4635-apartments-rent-close-conestoga-college.html]apartments rent close conestoga college[/url]
[url=https://saransk.lend-money.ru/zaympodpts/467-centralnyy-ofis-banka-rosevrobank.html]Центральный офис банка Росевробанк г. Саранск[/url]
[url=https://stomatolog.lend-money.ru/lecheniezubov/10150-lechenie-ot-ogoleniya-ko
ey-zubov.html]лечение от оголения корней зубов[/url]
[url=https://center.renthop.net/rooms/4638-houses-for-rent-barack-point-nsw-lotteries.html]houses for rent barack point nsw lotteries[/url]
EdwardHurne - 2017-07-01  10:26:33
 Рульно!

---

песни для дедушки на день рождения от внучки слушать, что можно подарить невесте от дружки или [url=http://chizhiga.xyz/]http://chizhiga.xyz/[/url]
[url=http://loshes.xyz/]http://loshes.xyz/[/url]
[url=http://ezovij.ru/]http://ezovij.ru/[/url]
[url=http://nirota.ru/]http://nirota.ru/[/url]
[url=http://alarey.ru/]http://alarey.ru/[/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] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.