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

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

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

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

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

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

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

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

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

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

index.php

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

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

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

Styly a knihovna jQuery

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

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

comment.php

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

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

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

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

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

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

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

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

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

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

comment_template.php

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

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

comment.js

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

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

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

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

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

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

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

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

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

}


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

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

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

}


});

addkoment.php

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

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

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

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

}
?>

new_comment.php

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

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

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

Závěr

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

Systém Orphus
Napište komentář.
Celkem komenrářů(9084)
Sal - 2017-08-25  11:08:35
 Бренд 2017 однокомпонентное жидкое стекло Silane Guard - для бережного ухода за внешним видом Вашего автомобиля!
Придает сияющий блеск кузову автомобиля в течении 1 года!
Придает устойчивый водоотталкивающий эффект.
Одной упаковки хватает на 2-4 автомобиля/слоя.
Предельно простое нанесение покрытия на поверхность авто.
Отлично скрывает мелкие царапины.
Быстрая доставка по всей России, оплата при получении.

Заказать по акции 55% [url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]здесь[/url]



[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]покрытие кузова автомобиля жидкой резиной[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]жидкое стекло willson silane guard купить украина[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]защитное покрытие кузова автомобиля отзывы[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]покрытие для кузова автомобиля[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]willson silane guard 95мл купить[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]покрытие кузова автомобиля жидким стеклом отзывы[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]silane guard willson ws 01275 отзывы[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]сравнение защитных покрытий кузова автомобиля[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]защитное покрытие кузова автомобиля цена[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]средство для полировки авто silane guard[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]покрытие кузова автомобиля керамикой отзывы[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]покрытие кузова автомобиля керамикой[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]восстановление лакокрасочного покрытия кузова автомобиля цена[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]wilson silane guard drive2[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]восстановление оцинкованного покрытия кузова автомобиля[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]защитное покрытие кузова автомобиля tekko[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]покрытие кузова автомобиля полимочевиной[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]silane guard willson купить в саратове[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]лучшее защитное покрытие кузова автомобиля[/url]
[url=http://vip-zzakazz.ru/silane-guard/?ref=25466&lnk=1388722]защитное покрытие кузова автомобиля раптором[/url]



средство для полировки авто silane guard
wilson silane guard купить в иркутске
лучшее защитное покрытие кузова автомобиля
wilson silane guard drive2
покрытие для кузова автомобиля silane guard
защитное покрытие кузова автомобиля отзывы
покрытие кузова автомобиля жидким стеклом
защитные покрытия кузова автомобиля купить
покрытие кузова автомобиля керамикой отзывы
жидкое стекло willson silane guard видео
лучшее покрытие кузова автомобиля
защитное покрытие кузова автомобиля спб
wilson silane guard нанесение
зеркальное покрытия кузова автомобиля
wilson silane guard оптом
покрытие кузова автомобиля полимером
гидрофобное покрытие для кузова автомобиля
bronix защитное покрытие кузова автомобиля
cquartz finest кварцево керамическое покрытие кузова автомобиля
покрытие кузова автомобиля жидким стеклом отзывы
EngladGof - 2017-08-25  09:59:55
 Зачем такие сложно[url=http://educationinuk.ru/].[/url]
Promobalp - 2017-08-25  09:24:54
 http://lms.naeyc.org/?cialis-program
http://lms.naeyc.org/?cialis-program-card
http://lms.naeyc.org/?cialis-program-promise
MatthewCit - 2017-08-25  02:58:53
 kewdaen

http://www.ajedrezlinares.es/adidas-nmd-hombre-precio-458.html
http://www.repartodecomidaadomicilio.es/tenis-fila-mercadolibre-863.html
http://www.acgproducciones.es/zapatillas-gucci-hombre-online-449.html
http://www.josecarlossomoza.es/auriculares-monster-beats-mercadolibre-peru-776.html
http://www.millagame.es/outlet-montblanc-madrid-796.php

[url=http://www.traductionservice.fr/512-adidas-jeremy-scott-ailes.aspx]Adidas Jeremy Scott Ailes[/url]
[url=http://www.probaiedumontsaintmichel.fr/063-new-balance-bleu-ciel-jaune.php]New Balance Bleu Ciel Jaune[/url]
[url=http://www.ajedrezlinares.es/adidas-zx-racer-306.html]Adidas Zx Racer[/url]
[url=http://www.commentair.es/adidas-verde-con-azul-459.html]Adidas Verde Con Azul[/url]
[url=http://www.doctoradoiberoamericano.es/adidas-de-mujeres-2016-077.html]Adidas De Mujeres 2016[/url]
HenryNuh - 2017-08-25  02:24:00
 good resource [url=http://torrentdownloads.bid/]torrentdownloads[/url]
Ronniejoist - 2017-08-25  02:23:58
 useful website [url=https://yts-yify.gold/browse-movies]yts-yify[/url]
Sonjafar - 2017-08-25  02:04:13
 CBD Gummies Side Effects CBD Gummies Side Effects [url=https://gummiescbd.us/]CBD Gummies Legal[/url] CBD Gummies Side Effects
CBD Side Effects on Liver amazon cbd gummies CBD Gummy Bears CBD Side Effects on Liver
JefferyGooxy - 2017-08-25  01:08:31
 Best Pharmacy of the [url=https://www.statescure.com]San Francisco[/url], Califo
ia
[url=https://www.statescure.com/tadalafil]Cialis[/url] Pharmacy is the [url=https://www.statescure.com]best online pharmacy[/url] to buy [url=https://www.statescure.com/tadalafil]cialis[/url] .
Why they are best to buy [url=https://www.statescure.com/tadalafil]cialis online[/url] because
they have several [url=https://www.statescure.com/tadalafil]branded cialis[/url] and [url=https://www.statescure.com/tadalafil]generic cialis[/url] and the [url=https://www.statescure.com]cialis price[/url] is cheaper than the [url=https://www.statescure.com]other pharmacy[/url].
Cialis is better medicines to [url=https://www.statescure.com]treat ED Problems[/url] from [url=https://www.statescure.com]Viagra[/url] and everyone can [url=https://www.statescure.com/tadalafil]buy cialis online[/url]. We have measured the [url=https://www.statescure.com]cialis cost[/url] is much lower with www.StatesCure.com

[url=https://www.statescure.com/tadalafil]canadian pharmacy cialis[/url]
[url=https://www.statescure.com/tadalafil]tadalafil online[/url]
[url=https://www.statescure.com/tadalafil]cialas[/url]
[url=https://www.statescure.com/tadalafil]generic cialis online[/url]
[url=https://www.statescure.com/tadalafil]cialis online pharmacy[/url]
[url=https://www.statescure.com/tadalafil]tadalafil generic[/url]
[url=https://www.statescure.com/tadalafil]online cialis[/url]
[url=https://www.statescure.com/tadalafil]cost of cialis 5 mg[/url]
[url=https://www.statescure.com/tadalafil]discount cialis[/url]
[url=https://www.statescure.com/tadalafil]generic tadalafil[/url]
[url=https://www.statescure.com/tadalafil]cialis from canada[/url]
[url=https://www.statescure.com/tadalafil]cialus[/url]
[url=https://www.statescure.com/tadalafil]cyalis[/url]
[url=https://www.statescure.com/tadalafil]where to buy cialis[/url]
[url=https://www.statescure.com/tadalafil]ciallis[/url]
[url=https://www.statescure.com/tadalafil]cialis prices[/url]
[url=https://www.statescure.com/tadalafil]cialis generic name[/url]
[url=https://www.statescure.com/tadalafil]cialias[/url]
[url=https://www.statescure.com/tadalafil]cialis on line[/url]
[url=https://www.statescure.com/tadalafil]cialis discount[/url]
[url=https://www.statescure.com/tadalafil]cialis prescription[/url]
[url=https://www.statescure.com/tadalafil]buy tadalafil online[/url]
[url=https://www.statescure.com/tadalafil]generic for cialis[/url]
[url=https://www.statescure.com/tadalafil]cialis 5mg price[/url]
[url=https://www.statescure.com/tadalafil]buy tadalafil[/url]
[url=https://www.statescure.com/tadalafil]cialis for sale online[/url]
Jamesger - 2017-08-24  23:51:24
 neporlh

http://www.denishirst.fr/nmd-femme-blanche-317.html
http://www.gite-beausejour.fr/lunette-de-soleil-ray-ban-wayfarer-rouge-335.php
http://www.msie25.fr/997-converse-blanc-homme-43.html
http://www.divland-gestion-site-inte
et.fr/puma-basket-grise-648.html
http://www.trioelegiaque.fr/adidas-zx-flux-noir-et-blanc-prix-030.html

[url=http://www.allo-paella-traiteur.fr/sac-longchamp-kate-moss-356.htm]Sac Longchamp Kate Moss[/url]
[url=http://www.roco-schweiz.ch/chaussures-new-balance-996-003.html]Chaussures New Balance 996[/url]
[url=http://www.soc16.fr/dior-chaussures-homme-401.asp]Dior Chaussures Homme[/url]
[url=http://www.as-assainissement.fr/chaussure-under-armour-cam-newton-514.php]Chaussure Under Armour Cam Newton[/url]
[url=http://www.soc16.fr/botte-burberry-ebay-997.asp]Botte Burberry Ebay[/url]
JefferyGooxy - 2017-08-24  22:28:44
 Best Pharmacy of the [url=https://www.statescure.com]San Francisco[/url], Califo
ia
[url=https://www.statescure.com/tadalafil]Cialis[/url] Pharmacy is the [url=https://www.statescure.com]best online pharmacy[/url] to buy [url=https://www.statescure.com/tadalafil]cialis[/url] .
Why they are best to buy [url=https://www.statescure.com/tadalafil]cialis online[/url] because
they have several [url=https://www.statescure.com/tadalafil]branded cialis[/url] and [url=https://www.statescure.com/tadalafil]generic cialis[/url] and the [url=https://www.statescure.com]cialis price[/url] is cheaper than the [url=https://www.statescure.com]other pharmacy[/url].
Cialis is better medicines to [url=https://www.statescure.com]treat ED Problems[/url] from [url=https://www.statescure.com]Viagra[/url] and everyone can [url=https://www.statescure.com/tadalafil]buy cialis online[/url]. We have measured the [url=https://www.statescure.com]cialis cost[/url] is much lower with www.StatesCure.com

[url=https://www.statescure.com/tadalafil]canadian pharmacy cialis[/url]
[url=https://www.statescure.com/tadalafil]tadalafil online[/url]
[url=https://www.statescure.com/tadalafil]cialas[/url]
[url=https://www.statescure.com/tadalafil]generic cialis online[/url]
[url=https://www.statescure.com/tadalafil]cialis online pharmacy[/url]
[url=https://www.statescure.com/tadalafil]tadalafil generic[/url]
[url=https://www.statescure.com/tadalafil]online cialis[/url]
[url=https://www.statescure.com/tadalafil]cost of cialis 5 mg[/url]
[url=https://www.statescure.com/tadalafil]discount cialis[/url]
[url=https://www.statescure.com/tadalafil]generic tadalafil[/url]
[url=https://www.statescure.com/tadalafil]cialis from canada[/url]
[url=https://www.statescure.com/tadalafil]cialus[/url]
[url=https://www.statescure.com/tadalafil]cyalis[/url]
[url=https://www.statescure.com/tadalafil]where to buy cialis[/url]
[url=https://www.statescure.com/tadalafil]ciallis[/url]
[url=https://www.statescure.com/tadalafil]cialis prices[/url]
[url=https://www.statescure.com/tadalafil]cialis generic name[/url]
[url=https://www.statescure.com/tadalafil]cialias[/url]
[url=https://www.statescure.com/tadalafil]cialis on line[/url]
[url=https://www.statescure.com/tadalafil]cialis discount[/url]
[url=https://www.statescure.com/tadalafil]cialis prescription[/url]
[url=https://www.statescure.com/tadalafil]buy tadalafil online[/url]
[url=https://www.statescure.com/tadalafil]generic for cialis[/url]
[url=https://www.statescure.com/tadalafil]cialis 5mg price[/url]
[url=https://www.statescure.com/tadalafil]buy tadalafil[/url]
[url=https://www.statescure.com/tadalafil]cialis for sale online[/url]
ReviaLek - 2017-08-24  19:46:01
 [url=http://red5.ghiddns.com/map1.html]http://red5.ghiddns.com/map1.html[/url]

http://red5.ghiddns.com/map1.html

http://red1.ghiddns.com/map1.html


[url=http://red4.ghiddns.com/video/30968-prostitutki-g-voronezha-ih-foto-i-telefony.html]проститутки г. воронежа их фото и телефоны[/url] где стоят в уфе на улицах проститутки проститутки г. воронежа их фото и телефоны где стоят в уфе на улицах проститутки http://red4.ghiddns.com/video/30968-prostitutki-g-voronezha-ih-foto-i-telefony.html Индивидуалки и проститутки москвы для интим досуга
[url=http://reddy3.spmuz1.ru/rabynja/32797-prostitutki-ot-2500-za-chas-na-vyezd.html]проститутки от 2500 за час на выезд[/url] универ новая общага где валя и проститутка проститутки от 2500 за час на выезд универ новая общага где валя и проститутка http://reddy3.spmuz1.ru/rabynja/32797-prostitutki-ot-2500-za-chas-na-vyezd.html Чего не делают с женой а с проституткой
[url=http://red3.ghiddns.com/kopro-vydacha/08457-gde-snjat-prostitutok-na-ulice-v-moskve.html]где снять проституток на улице в москве[/url] проститутки в уфе за 1500 в час где снять проституток на улице в москве проститутки в уфе за 1500 в час http://red3.ghiddns.com/kopro-vydacha/08457-gde-snjat-prostitutok-na-ulice-v-moskve.html Проститутки в наро фоминский район московской области
[url=http://red4.ghiddns.com/dopolnitelno/49594-gde-v-moskve-na-ulice-mozhno-snjat.html]где в москве на улице можно снять проститутку[/url] где стоят на улицах проститутки в воронеже где в москве на улице можно снять проститутку где стоят на улицах проститутки в воронеже http://red4.ghiddns.com/dopolnitelno/49594-gde-v-moskve-na-ulice-mozhno-snjat.html Проститутки за 1000 рублей ростов на дону
[url=http://reddy3.spmuz1.ru/igrushki/62088-prostitutki-ot-30-let-v-g-moskva.html]проститутки от 30 лет в г москва[/url] проститутка о том как вести себя в постели проститутки от 30 лет в г москва проститутка о том как вести себя в постели http://reddy3.spmuz1.ru/igrushki/62088-prostitutki-ot-30-let-v-g-moskva.html Чего не делают с женой а с проституткой
JefferyGooxy - 2017-08-24  19:42:25
 Best Pharmacy of the [url=https://www.statescure.com]San Francisco[/url], Califo
ia
[url=https://www.statescure.com/tadalafil]Cialis[/url] Pharmacy is the [url=https://www.statescure.com]best online pharmacy[/url] to buy [url=https://www.statescure.com/tadalafil]cialis[/url] .
Why they are best to buy [url=https://www.statescure.com/tadalafil]cialis online[/url] because
they have several [url=https://www.statescure.com/tadalafil]branded cialis[/url] and [url=https://www.statescure.com/tadalafil]generic cialis[/url] and the [url=https://www.statescure.com]cialis price[/url] is cheaper than the [url=https://www.statescure.com]other pharmacy[/url].
Cialis is better medicines to [url=https://www.statescure.com]treat ED Problems[/url] from [url=https://www.statescure.com]Viagra[/url] and everyone can [url=https://www.statescure.com/tadalafil]buy cialis online[/url]. We have measured the [url=https://www.statescure.com]cialis cost[/url] is much lower with www.StatesCure.com

[url=https://www.statescure.com/tadalafil]canadian pharmacy cialis[/url]
[url=https://www.statescure.com/tadalafil]tadalafil online[/url]
[url=https://www.statescure.com/tadalafil]cialas[/url]
[url=https://www.statescure.com/tadalafil]generic cialis online[/url]
[url=https://www.statescure.com/tadalafil]cialis online pharmacy[/url]
[url=https://www.statescure.com/tadalafil]tadalafil generic[/url]
[url=https://www.statescure.com/tadalafil]online cialis[/url]
[url=https://www.statescure.com/tadalafil]cost of cialis 5 mg[/url]
[url=https://www.statescure.com/tadalafil]discount cialis[/url]
[url=https://www.statescure.com/tadalafil]generic tadalafil[/url]
[url=https://www.statescure.com/tadalafil]cialis from canada[/url]
[url=https://www.statescure.com/tadalafil]cialus[/url]
[url=https://www.statescure.com/tadalafil]cyalis[/url]
[url=https://www.statescure.com/tadalafil]where to buy cialis[/url]
[url=https://www.statescure.com/tadalafil]ciallis[/url]
[url=https://www.statescure.com/tadalafil]cialis prices[/url]
[url=https://www.statescure.com/tadalafil]cialis generic name[/url]
[url=https://www.statescure.com/tadalafil]cialias[/url]
[url=https://www.statescure.com/tadalafil]cialis on line[/url]
[url=https://www.statescure.com/tadalafil]cialis discount[/url]
[url=https://www.statescure.com/tadalafil]cialis prescription[/url]
[url=https://www.statescure.com/tadalafil]buy tadalafil online[/url]
[url=https://www.statescure.com/tadalafil]generic for cialis[/url]
[url=https://www.statescure.com/tadalafil]cialis 5mg price[/url]
[url=https://www.statescure.com/tadalafil]buy tadalafil[/url]
[url=https://www.statescure.com/tadalafil]cialis for sale online[/url]
ReviaLek - 2017-08-24  19:12:05
 [url=http://red4.ghiddns.com/map1.html]http://red4.ghiddns.com/map1.html[/url]

http://red2.ghiddns.com/map1.html


http://reddy3.spmuz1.ru/map1.html


[url=http://red3.ghiddns.com/kopro-priem/35718-prostitutka-s-nomerom-telefona-v-jurev-polskom.html]проститутка с номером телефона в юрьев польском[/url] где дешевле всего в казани снять проституток проститутка с номером телефона в юрьев польском где дешевле всего в казани снять проституток http://red3.ghiddns.com/kopro-priem/35718-prostitutka-s-nomerom-telefona-v-jurev-polskom.html Каждая четвертая проститутка в европе из украины
[url=http://reddy2.spmuz1.ru/tochechnyj-massazh/26096-prostitutki-dlja-seksa-bez-rezinki-v-moskve.html]проститутки для секса без резинки в москве[/url] проститутки и шлюхи в ростове на дону проститутки для секса без резинки в москве проститутки и шлюхи в ростове на дону http://reddy2.spmuz1.ru/tochechnyj-massazh/26096-prostitutki-dlja-seksa-bez-rezinki-v-moskve.html Как вести себя в постели как проститутка
[url=http://red5.ghiddns.com/foto/00842-prostitutki-v-permi-za-1000-rublej-v.html]проститутки в перми за 1000 рублей в час[/url] цены на проституток и фото в киеве проститутки в перми за 1000 рублей в час цены на проституток и фото в киеве http://red5.ghiddns.com/foto/00842-prostitutki-v-permi-za-1000-rublej-v.html Проститутки в северном районе воронежа в северном районе
[url=http://reddy3.spmuz1.ru/uslugi-semejnoj-pare/29558-prostitutki-v-ulan-ude-gde-ih-najti.html]проститутки в улан удэ где их найти[/url] как и где снять проститутку в питере проститутки в улан удэ где их найти как и где снять проститутку в питере http://reddy3.spmuz1.ru/uslugi-semejnoj-pare/29558-prostitutki-v-ulan-ude-gde-ih-najti.html Исповедь элитной проститутки в хорошем качестве смотреть онлайн
[url=http://red1.ghiddns.com/tochechnyj-massazh/62157-prostitutku-dlja-seksa-v-ekaterinburge-s-foto.html]проститутку для секса в екатеринбурге с фото[/url] проститутки в ногинске с телефонами с фото проститутку для секса в екатеринбурге с фото проститутки в ногинске с телефонами с фото http://red1.ghiddns.com/tochechnyj-massazh/62157-prostitutku-dlja-seksa-v-ekaterinburge-s-foto.html Проститутки в орехово зуево фото и цена
PeterHoign - 2017-08-24  16:08:48
 Привет! класный у вас сайт!
Нашел интересную базу кино: [url=http://kinobibly.ru/]2017 список лучшая фантастика[/url]
Тут: [url=http://kinobibly.ru/priklyucheniya/6782-kroliki-playboy-predstavyat-film-44-v-multiplekse-okinoua.html] Кролики Playboy представят фильм «№ 44» в «Мультиплексе» — oKino.ua [/url]
Тут: [b] От &quot;Звездных войн 7&quot; ждут сборов в 2.7 миллиарда долларов [/b] http://kinobibly.ru/kinonewz/9334-ot-zvezdnyh-voyn-7-zhdut-sborov-v-27-milliarda-dollarov.html
Здесь: http://kinobibly.ru/boevik/3630-shvatka-shvatka-za-istinu-ragada-2010.html
[b] лучшие триллеры бесплатно [/b] http://kinobibly.ru/triller/
[url=http://kinobibly.ru/komediya/] лучшие комедии рейтинг [/url]
Тут: [b] 2017 смотреть лучшие новинки кино [/b] http://kinobibly.ru/novinki/
Тут: [url=http://kinobibly.ru/serialy/] лучшие сериалы онлайн [/url]
Sonjafar - 2017-08-24  13:13:48
 cbd Gummies recipe cbd Gummies recipe [url=https://gummiescbd.us/]CBD gummies[/url] cbd gummies
CBD Gummies Side Effects CBD Gummies for Sale CBD Gummy Bears cbd gummies
Atonemodag - 2017-08-24  09:59:16
 plan b pill in kuwait [url=http://jinjiro41.tumblr.com/#34170]misoprostol price[/url] how to make uterus strong after abortion
Gabrielgoria - 2017-08-24  09:03:10
 Important Note:-
Today in the world there are plenty of websites on google, yahoo, bing and rest of the search engines, selling [url=https://www.statespharmacy.com]viagra online[/url].
Offering almost [url=https://www.statespharmacy.com]all kind of medicines[/url] and in addition customers can buy them [url=https://www.statespharmacy.com]without prescription[/url].
Well Its Illegal. Where you can choose the [url=https://www.statespharmacy.com]legal online pharmacy[/url] and even get your [url=https://www.statespharmacy.com/medical]prescription online[/url].
[url=https://www.statespharmacy.com]states pharmacy[/url] is one of the [url=https://www.statespharmacy.com/medical]legal licensed pharmacy[/url] and advise each and every united states patients to do not [url=https://www.statespharmacy.com/medical]purchase medicines[/url] from such [url=https://www.statespharmacy.com/medical]online pharmacies[/url] who does not ask for prescription
because these [url=https://www.statespharmacy.com/medical]medicines[/url] can easily harm you and react irrelevant to your body.
Please look at the Article - https://www.statespharmacy.com/medical
This will be a [url=https://www.statespharmacy.com/medical]life saving[/url] Article and Share the awareness on Facebook, Twitter and on other social networking sites
This will help many people and you will be credited for [url=https://www.statespharmacy.com/medical]saving lifes[/url].

Thank you
Ogdhtvudh - 2017-08-24  08:24:29
 Buy Accutane Buy Accutane Buy Accutane Buy Accutane [url=http://www.buyisotretinoin.net/ ]Buy accutane[/url] Buy Accutane Buy Accutane Buy Accutane
Jasonvaw - 2017-08-24  06:45:12
 Приветствую всех! класный у вас сайт!
Нашел интересную базу кино: [b] Бесплатно лучшие сериалы [/b] [url=http://kinokub.net/]http://kinokub.net/[/url]
Здесь: [url=http://kinokub.net/detektiv/1978-sekretnye-materialy-the-x-files-sezon-3-1995-1996.html] Секретные материалы / The X Files (Сезон 3) (1995-1996) [/url]
Тут: [b] Изгнание / Exile (Сезон 1) (2011) [/b] http://kinokub.net/drama/3786-izgnanie-exile-sezon-1-2011.html
Здесь: http://kinokub.net/raznoe/11724-ozero-na-klinton-roud-the-lake-on-clinton-road-2015.html
[b] 2017 смотреть лучшая фантастика [/b] http://kinokub.net/luchshaya-fantastika-spisok-smotret-onlayn/
[url=http://kinokub.net/serialy/] лучшие сериалы новинки смотреть онлайн [/url]
Тут: [b] бесплатно лучшие мелодрамы [/b] http://kinokub.net/melodrama/
Тут: [url=http://kinokub.net/istoricheskiy/] 2017 смотреть лучшие исторические фильмы [/url]
Gabrielgoria - 2017-08-24  06:02:51
 Important Note:-
Today in the world there are plenty of websites on google, yahoo, bing and rest of the search engines, selling [url=https://www.statespharmacy.com]viagra online[/url].
Offering almost [url=https://www.statespharmacy.com]all kind of medicines[/url] and in addition customers can buy them [url=https://www.statespharmacy.com]without prescription[/url].
Well Its Illegal. Where you can choose the [url=https://www.statespharmacy.com]legal online pharmacy[/url] and even get your [url=https://www.statespharmacy.com/medical]prescription online[/url].
[url=https://www.statespharmacy.com]states pharmacy[/url] is one of the [url=https://www.statespharmacy.com/medical]legal licensed pharmacy[/url] and advise each and every united states patients to do not [url=https://www.statespharmacy.com/medical]purchase medicines[/url] from such [url=https://www.statespharmacy.com/medical]online pharmacies[/url] who does not ask for prescription
because these [url=https://www.statespharmacy.com/medical]medicines[/url] can easily harm you and react irrelevant to your body.
Please look at the Article - https://www.statespharmacy.com/medical
This will be a [url=https://www.statespharmacy.com/medical]life saving[/url] Article and Share the awareness on Facebook, Twitter and on other social networking sites
This will help many people and you will be credited for [url=https://www.statespharmacy.com/medical]saving lifes[/url].

Thank you
<<[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] [190] [191] [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203] [204] [205] [206] [207] [208] [209] [210] [211] [212] [213] [214] [215] [216] [217] [218] [219] [220] [221] [222] [223] [224] [225] [226] [227] [228] [229] [230] [231] [232] [233] [234] [235] [236] [237] [238] [239] [240] [241] [242] [243] [244] [245] [246] [247] [248] [249] [250] [251] [252] [253] [254] [255] [256] [257] [258] [259] [260] [261] [262] [263] [264] [265] [266] [267] [268] [269] [270] [271] [272] [273] [274] [275] [276] [277] [278] [279] [280] [281] [282] [283] [284] [285] [286] [287] [288] [289] [290] [291] [292] [293] [294] [295] [296] [297] [298] [299] [300] [301] [302] [303] [304] [305] [306] [307] [308] [309] [310] [311] [312] [313] [314] [315] [316] [317] [318] [319] [320] [321] [322] [323] [324] [325] [326] [327] [328] [329] [330] [331] [332] [333] [334] [335] [336] [337] [338] [339] [340] [341] [342] [343] [344] [345] [346] [347] [348] [349] [350] [351] [352] [353] [354] [355] [356] [357] [358] [359] [360] [361] [362] [363] [364] [365] [366] [367] [368] [369] [370] [371] [372] [373] [374] [375] [376] [377] [378] [379] [380] [381] [382] [383] [384] [385] [386] [387] [388] [389] [390] [391] [392] [393] [394] [395] [396] [397] [398] [399] [400] [401] [402] [403] [404] [405] [406] [407] [408] [409] [410] [411] [412] [413] [414] [415] [416] [417] [418] [419] [420] [421] [422] [423] [424] [425] [426] [427] [428] [429] [430] [431] [432] [433] [434] [435] [436] [437] [438] [439] [440] [441] [442] [443] [444] [445] [446] [447] [448] [449] [450] [451] [452] [453] [454] [455] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.