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ářů(10302)
Jeffreymut - 2017-07-27  13:11:16
 Привет всем! класный у вас сайт!
Зацените, нашёл супер базу кино онлайн в хорошем качестве: [b] [url=http://inspacefilm.ru/]2017 в хорошем качестве hd лучшие мультфильмы[/url]
Здесь: [b] смотреть онлайн лучшие фантастика [/b] http://inspacefilm.ru/luchshaya-fantastika-spisok-filmov/
Тут: [b] в хорошем качестве hd лучшая фантастика [/b] http://inspacefilm.ru/luchshaya-fantastika-spisok-filmov/
[url=http://inspacefilm.ru/multfilmy/] новые смотреть онлайн лучшие мультфильмы [/url]
[b] лучшие триллеры смотреть онлайн [/b] http://inspacefilm.ru/triller/
[b] фантастика смотреть онлайн [/b] http://inspacefilm.ru/luchshaya-fantastika-spisok-filmov/
[url=http://inspacefilm.ru/novinki/] лучшие новинки кино в хорошем качестве [/url]
[url=http://inspacefilm.ru/drama/2663-udacha-fart-luck-2012.html] Удача / Фарт / Luck (2012) [/url]
[b] Бесы (2014) [/b] http://inspacefilm.ru/detektiv/7000-besy-2014.html
Здесь: [b] Объявлены номинанты на премию PGA [/b] http://inspacefilm.ru/newskino/622-obyavleny-nominanty-na-premiyu-pga.html
и Тут: http://inspacefilm.ru/istoricheskiy/229-faraon-faraon-1965.html
Danieldar - 2017-07-27  11:08:15
 Dyeing fabrics http://allchemicals.info/index.php?option=com_xmap&view=html&id=1 is giving the fibers a regimented color that has a guaranteed politesse of strength. The methods of dyeing are unquestionably heterogeneous, depending on the properties of the dyes and the dyed fibers.

Dyeing of fibrous materials http://allchemicals.info/index.php?option=com_xmap&view=html&id=1 until the halfway fraction of the 19th century was produced within undisturbed reach moderate dyes of machinery and execrable sling (craps, hematipes, indigo, cochineal) and partly mineral (iron blanca, chromic yellow, Berlin depressed).
Aeiheguu - 2017-07-27  11:04:44
 drugs to terminate early pregnancy [url=http://mataisa45.tumblr.com/#74272]mataisa45-tumblr[/url] when is iud inserted
Michaelpah - 2017-07-27  09:25:10
 Натуральный камень традиционно ассоциируется с роскошью, богатством, а также надежностью и долговечностью. Особенно это относится к мрамору. Солидный внешний вид в сочетании с отличными физико-техническими свойствами делает изделия из мрамора чрезвычайно популярными в вопросах обустройства интерьера.
Но, как в прочем и все остальное, мрамор также требует к себе соотвествующего ухода. В первую очередь, наиболее подходящим стилем следует отметить классический интерьер и все смежные варианты.
Также, мраморные изделия могут отлично вписаться в минималистические стили или хай-тек, но только при очень тщательной проработке их роли. Но следует отметить что все современное не настроено на визуальную роскошь, поэтому изделия из мрамора нужно максимально продумано внедрять в такие стили.
Отметим наиболее распространенные варианты использования мрамора в интерьере (не касаясь отделки стен, полов или лестниц):
[b]1. Столешницы.[/b]
Мраморные столешницы – это долговечность, санитарная безопасность и стойкость к различным негативным факторам, характерным для кухни (запахи и т.д.).
[b]2. Ванны.[/b]
Ванна из мрамора, это безусловно элемент роскоши и далеко не каждому такое изделие по карману, но не смотря на это, ванны из мрамора набирают все большую популярность.
[b]3. Подоконники.[/b]
Изделия из мрамора в виде подоконников отлично подходят к интерьерам серьезных представительских зданий (головной офис компании), театров, музеев и прочих культурных объектов.
Конечно все вышеперечисленное имеет просто фантастичекий вид и будет прекрасно смотреться абсолютно везде.
При помощи изделий из мрамора очень хорошо получается заполнить пространство и обеспечить сочетание стилей. [url=http://parthenongroup.ru/o-kompanii]производители мрамора в россии[/url]
Raymondalbum - 2017-07-27  03:51:10
 Приветствую всех! Класный у вас сайт!
Нашел интересные материалы для владельцев частных домов и не только: [b] [url=http://35stupenek.ru/]балюстрада балясины[/url]

Здесь: [b] балясины минск [/b] http://35stupenek.ru/balyasiny-iz-dereva.html
Здесь: [url=http://35stupenek.ru/mebelnyj-shhit-iz-sosny.html] мебельные щиты сосна купить [/url]
Здесь: http://35stupenek.ru/perila-dlya-lestnicy.html
[b] сорта мебельный щит [/b] http://35stupenek.ru/prajs-list
http://35stupenek.ru/reznye-balyasiny-i-stolby.html
Тут: [b] резные балясины из дерева [/b] http://35stupenek.ru/reznye-balyasiny-i-stolby.html
Тут: [b] балясины из дуба [/b] http://35stupenek.ru/reznye-balyasiny-i-stolby.html
Lstrguiffic - 2017-07-27  02:55:58
 "Thanks for the post, which is the theme of"

[url=http://sm.mystictreehouse.com/index.php?topic=1102877.new#new] not sure it is so) although Spasib
[/url]

http://www.hcsanddrags.com/forums/viewtopic.php?f=3&t=586154
Sonjafar - 2017-07-27  02:48:24
 hearing aids [url=https://wowhearingaids.com/]hearing aid at walmart prices behind the ear[/url] hearing aid batteries size 312a
costco kirkland hearing aids reviews [url=https://wowhearingaids.com/best-hearing-aids.html]hearing aid prices in canada[/url] siemens hearing aids reviews 2017
comparison prices on hearing aids [url=https://wowhearingaids.com/hearing-aids-prices.html]hearing aid batteries[/url] hearing aids for sale on ebay
prices on hearing aids at walmart [url=https://wowhearingaids.com/hearing-aids-reviews.html]review of costco hearing aids[/url] siemens hearing aids manual

rechargeable hearing aid batteries review hearing aids hearing aid batteries 312
best hearing aids reviews 2017 hearing aid at walmart prices behind the ear md hearing aids reviews consumer reports
hearing aid prices tv hearing aids at walmart md hearing aids reviews consumer reports
hearing aid prices comparison hearing aids for sale cheap used hearing aids for sale by owner
Robertgog - 2017-07-27  01:58:37
 Кто нуждается в материальной помощи, получение кредита онлайн на карту через 25 минут. Заказать кредит здесь: https://goo.gl/1SMV7Y




oko@
Antoniospaft - 2017-07-27  01:57:27
 Привет! Класный у вас сайт!
Что скажете по поводу этих новостей?
[url=http://energynews.su/7908-pervye-mashiny-gumanita
ogo-konvoya-pribyli-na-granicu.html] Первые машины гуманитарного конвоя прибыли на границу [/url]
[b] Наследие Пайетта. The Ukraine в ожидании нового управляющего [/b] http://energynews.su/22699-nasledie-payetta-the-ukraine-v-ozhidanii-novogo-upravlyayuschego.html
http://energynews.su/27224-poroshenko-poobeschal-ne-ostavlyat-bez-podderzhki-zhiteley-kryma.html
[url=http://energynews.su/2560-velikobritaniya-razreshila-iranskoy-kompanii-vozobnovit-dobychu-gaza-na-mestorozhdenii-rhum.html] Великобритания разрешила иранской компании возобновить добычу газа на месторождении Rhum [/url]
[b] Более 90 тыс. жителей Канады подписали петицию против продажи корпорациям воды по бросовой цене [/b] http://energynews.su/11844-bolee-90-tys-zhiteley-kanady-podpisali-peticiyu-protiv-prodazhi-korporaciyam-vody-po-brosovoy-cene.html
http://energynews.su/9047-pod-oknami-poroshenko-sobralsya-avtomaydan.html
Ещё тут много интересного: [b] Новости политики, Россия США Украина Белоруссия Новороссия Донбасс ЛНР ДНР [/b] [url="http://energynews.su/"]http://energynews.su/[/url]
[b] украина гражданская война от lerss [/b] http://energynews.su/novorossiya-novosti-svodki/
LIzahiele - 2017-07-27  00:30:11
 [url=http://fidiprest.com/antibiotics/cheap-trimox/]Athletics | Paul Quinn College[/url]
FrancisPak - 2017-07-26  23:52:42
 Цитата - это речь какого-либо творца из его текстов или же просто чьё-либо суждение из интервью. Свои корни термин цитата берёт от латинского слова citatio, какое включает в себя множество значений. К примеру в юридической латыни данное выражение трактуют как "доказываю правоту". Данное значение демонстрирует первостепенную роль цитирования: полагаясь на чьё-то мнение, цитата способствует обосновать собственную точку зрения или подвести подтверждения в пользу той или иной догадки. В русском языке слово "цитата" стало возникать в 1820-х годах, а в разнообразных словарях и того позже.

Citata.in - известный web-сайт лучших афоризмов и цитат знаменитых людей, которые внесли своё имя в историю. У нас вы сумеете найти действительно любую популярную личность и прочесть её выражения. По цитатам можно более лучше понять характер человека, почувствовать его отношение к тому или иному явлению. Из выражений знаменитых людей можно узнать разные подробности их бытия, трудные времена в карьере. Прочитайте лучшие из лучших цитаты именитых личностей вместе с нами !


[url=http://citata.in/citaty-po-temam/citaty-pro-dom.html]цитаты о доме[/url]
EarnestHah - 2017-07-26  21:53:38
 [url=http://fly-bra-bay.ru/samokleyushiysya-byustgalter-nevidimka-fly-bra.html]самоклеющийся бюстгальтер невидимка fly bra[/url]
[url=http://fly-bra-bay.ru/silikonoviy-byustgalter-fly.html][img]http://fly-bra-bay.ru/flybra-video2.jpg[/img][/url]

Бюстгалтер-невидимка Флай Бра – революционное изобретение, пришедшее женщинам на помощь! Мягкий, естественный, многоразового использования, легко моющийся, без бретелек, с открытой спиной!
Это изобретение японских специалистов отвечает многим женским запросам, помогает выглядеть раскованно и уверенно! Шнуровка между чашечками позволяет придать груди более пышную форму, создавая "ложбинку" или эффект "приподнятой груди".

Читать полностью на [url=http://fly-bra-bay.ru]fly-bra-bay.ru[/url]

Доставка [url=http://rostov-na-donu.fly-bra-bay.ru/]Fly Bra Ростов-на-Дону[/url] и по всей России!
http://fly-bra-bay.ru/nevidimiy-byustgalter-fly.html
лифчик невидимка отзывы fly bra
Stephenher - 2017-07-26  19:47:40
 Новая информация о строительстве [url=http://distroy.ru/]distroy.ru[/url]
BrandonFauby - 2017-07-26  19:28:00
 Привет всем участникам! Класный у вас сайт!
Нашёл прикольный сериальчик:
[url=http://www.misfits.su/otbrosi-misfits-season-2/] сериал отбросы сезон 2 [/url]
[b] сериал отбросы сезон 5 [/b] http://www.misfits.su/poslednie-novosti-seriala-misfits-otbrosy/otbrosy-5-sezon-2013-promo-i-data-vyhoda-seriala.html
[b] сериал misfits все сезоны смотреть онлайн [/b] http://www.misfits.su/serial-online/
И тут:
[b] сериал отбросы все сезоны [url="http://www.misfits.su/"] сериал отбросы сезон 5 [/url]
Ещё тут много интересного:
http://www.misfits.su/otbrosi-photo-galleries/album-for-download/otbrosy417-4195.html
[url=http://www.misfits.su/otbrosi-photo-galleries/album-for-download/otbrosimisfits8-5121.html] Галерея - otbrosi_misfits_8 - Фотоальбом для загрузок [/url]
http://www.misfits.su/otbrosi-photo-galleries/album-for-download/otbrosydlds390-1683.html [b] Галерея - otbrosy_dlds3_90 - Фотоальбом для загрузок [/b]
http://www.misfits.su/otbrosi-photo-galleries/album-for-download/otbrosy4chetvertiyseasoncomingsoon31-3821.html [b] Галерея - Otbrosy_4_chetvertiy_season_coming_soon_31 - Фотоальбом для загрузок [/b]
HarryGrers - 2017-07-26  16:22:07
 В аэропорту Барселоны [url=http://viptour-transfer.com]трансферы и такси в Барселоне[/url] всегда много автомобилей такси. Для того, чтобы сесть в такси необходимо встать в очередь и ждать, пока вас не направят к конкретной машине. "Голосовать" [url=http://viptour-transfer.com]трансферы и такси в Барселоне[/url] на стоянке такси аэропорта Барселоны нельзя. Стоянки такси находятся как напротив Терминала 1 (Т1), так и Терминала 2 (Т2) аэропорта Барселоны.
MichealRep - 2017-07-26  15:43:03
 Привет! Крутой у вас сайт!
Нашёл интересную инфу для садоводов:
[url=http://www.ogorodniky.ru/otkrytyy-grunt/sort-avgustin/pechat.html] Сорт томата АВГУСТИН | Сорта томата. Открытый грунт. [/url]
http://www.ogorodniky.ru/chastnaya-selektsiya-tomata/3.1-osnovnye-trebovaniya-k-sortam-tomata-dlya-seve
yh-regionov-rossii/stranitsa-4.html [b] Страница 4 | 3.1 Основные требования к сортам томата для северных регионов России. | ЧАСТНАЯ СЕЛЕКЦИЯ ТОМАТА [/b]
http://www.ogorodniky.ru/otkrytyy-grunt/sort-charovnitsa/pechat.html
Ещё тут много интересного:
[b] Томаты для открытого грунта [/b] [url="http://www.ogorodniky.ru/"]http://www.ogorodniky.ru/[/url]
Lstrguiffic - 2017-07-26  15:41:07
 not sure it is so) although Spasib

[url=http://orchidsperuflora.com/viewtopic.php?f=33&t=2437759] Repeatedly I've read similar posts on the English-language blogs, but that does not mean that your post I did not like
[/url]

http://163.15.202.98/FOP/QQ/QQ_14/modules/newbb/newtopic.php?forum=1
IrinaTok - 2017-07-26  15:20:53
 [url=https://www.048.ua/list/95177]Видеокамеры для дома[/url] - https://www.048.ua/list/95177
Познавательная статья по видеонаблюдению. Рекомендую.
EssayNug - 2017-07-26  13:37:28
 [url=http://bit.ly/2uOZjRP][img]http://plitkagranit.com/CustomWriting.gif[/img][/url]

Best Custom Writing Service: persuasive essay writing for any topic! 25% Discount For Your Orders - WPMMEFY2237 [b][url=http://bit.ly/2uOZjRP]ORDER[/url][/b]

If you're like many of our clients, you're here because you're a busy student who needs an extra set of hands. With so many disconnected, multifaceted, and unreasonable expectations on you, it can be hard, if not impossible, to get assignment writing done on time. The difference is in our best custom writing assignments. We don't have a library of papers we sell, nor do we apply a one-size-fits-all treatment of our clients. We make sure that customized essays we provide fully match your instructions. We consider each assignment and student individually and treat it as if it were our own. Our experts take time searching for relevant information to present high-quality customized essays.

[url=http://bit.ly/2uOZjRP][img]http://plitkagranit.com/Essay.jpg[/img][/url]

Key Tags: cheapest essays writing services paper writer services top rated essay writing services who will write my essay for me chronological order for essay college essay proofreading service college essays writing service essay writing service australia benefits of paraphrasing nursing essay help writing services for college papers good essay writing website custom written essays paraphrasing in communication help me write my research paper help with writing a paper for college essay help online chat world order essay legal studies help me with my paper research paper on consumer buying behaviour coursework plagiarism essays order buy essays online australia college papers help coursework service writing a thesis dissertation accession or order number online essay writers
Abaatoat - 2017-07-26  07:32:33
 std symptoms for female [url=http://mataisa45.tumblr.com/#79345]misoprostol price[/url] icd 10 code for preeclampsia
<<[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.