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ářů(8993)
NjgxlvImaft - 2017-07-19  18:35:00
 bad credit personal loans
[url=http://payday1000loans3000online.com/#bad-credit-personal-loans-not-payday-loans-eli]loans online [/url]
&lt;a href=&quot;http://payday1000loans3000online.com/#ace-payday-loans-ldf&quot;&gt;online loans &lt;/a&gt;

http://payday1000loans3000online.com/#djqjp
http://payday1000loans3000online.com/#bqkzo
http://payday1000loans3000online.com/#uboag

http://delmobile.ru/gost/?page=1
http://chiquita.com/recipes/winter-frozen-chiquita-banana-penguins?page=4954#comment-252765
http://ligaturerions.dpsoh9.9q.ro/mollit/
http://www.hanka.cz/diskuze/page=10/
http://www.seve
partnership.com/?s=loans+with+bad+credit++%0D%0Ahttp%3A%2F%2Fpayday1000loans3000online.com%2F%23easy-payda
NdyyytImaft - 2017-07-19  17:48:59
 quick loans
[url=http://payday1000loans3000online.com/#payday-loans-online-no-credit-check-qoy]personal loans [/url]
&lt;a href=&quot;http://payday1000loans3000online.com/#payday-loans-no-credit-check-hum&quot;&gt;loans online &lt;/a&gt;

http://payday1000loans3000online.com/#yuqzt
http://payday1000loans3000online.com/#lkywx
http://payday1000loans3000online.com/#whflo

http://www.troop224.us/public/guestbook/index.php?mode=3&post_id=84158
http://legacy.weather.weatherbug.com/weatherbug-professional/contact-us?
=0.8260508&pageURL=%2Fweatherbug-professional%2Fcontact-us&retURL=%2Fweatherbug-professional%2Fcontact-us%2Fthank-you&proZoneID=contact&proSubZoneID=contact&proPageID=contact&first_name=nvnvadSpomaBJ&last_name=nqgdnoSpomaBJ&company=google&title=hniu+easy+payday+loans+vnrk&state=KY&country=Morocco&industry=Energy&email=gnurzojipl%40mailermails.info&phone=82284926243&interestSelector=Weather+Station&WeatherConce
=personal+loans++%0D%0Ahttp%3A%2F%2Fpayday1000loans3000online.com%2F%23payday-loans-for-bad-credit-vln+-+pay+day+loans++%0D%0A%26lt%3Ba+href%3D%26quot%3Bhttp%3A%2F%2Fpayday1000loans3000online.&recaptcha_challenge_field=cassisstua+608r&recaptcha_response_field=cassisstua+608r&submit=Submit&err=Please+provide+a+valid+Email+%28e%2Eg%2E+user%40domain%2Ecom%29%2E%3Cbr+%2F%3E
http://geamuriserv.ro/forums/topic/fuuwwuqvqwppicp
http://greenappledrivingschool.co.uk/blog/how-much-zestoretic-real-need-buy-zestoretic-legal-pharmacy?page=45#comment-8398573
http://churchriki.gportal.hu/gindex.php?pg=16148833&badcaptcha=true&sid=0&gb_name=niufmrChupe&gb_email=rupdspumok%40mailermails.info&gb_comment=%3Ca+href%3D%22http%3A%2F%2Fpayday1000loans3000online.com%2F%23payday-loans-online-tse%22%3Eonline+loans+%3C%2Fa%3E+%0D%0Ahttp%3A%2F%2Fpayday1000loans3000online.com%2F%23payday-loans-bad-credit-cko+-+bad+credit+loans++%0D%0A%26lt%3Ba+href%3D%26quot%3Bhttp%3A%2F%2Fpayday1000loans3000online.com%2F%23easy-payday-loans-rit%26quot%3B%26gt%3Bloans+online+%26lt%3B%2Fa%26gt%3B+%0D%0A+%0D%0Ahttp%3A%2F%2Fpayday1000loans3000online.com%2F%23jrwgf+%0D%0Ahttp%3A%2F%2Fpayday1000loans3000online.com%2F%23qxlea+%0D%0Ahttp%3A%2F%2Fpayday1000loans3000online.com%2F%23ehnwx+%0D%0A+%0D%0Ahttp%3A%2F%2Fwww.ahsapdiscephe.com%2Fcomponent%2Fk2%2Fitem%2F5-we-motivate-people-to-think-in-a-creative.html%2Fcontact.php%3Flocale%3Dde+%0D%0Ahttp%3A%2F%2Fallaboutyou.uk.com%2Fblog%2Fall-about-the-bride-and-her-make-up-artist%2F%3Fcontact-form-id%3D1533%26contact-form-sent%3D4814%26_wpnonce%3D4f83dd70b2+%0D%0Ahttp%3A%2F%2Fcommunityawake.com.61.69-195-222.groveurl.com%2Fblog%2Fview%2Fbuy-cialis%23comment-32979+%0D%0Ahttp%3A%2F%2Fwww.dianketai.com%2Fkecheng%2F249.html%23pl+%0D%0Ahttp%3A%2F%2Fwww.pouyanedu.ir%2Fpage-%25d8%25af%25d8%25b9%25d9%2588%25d8%25aa-%25d8%25a8%25d9%2587-%25d9%2587%25d9%2585%25da%25a9%25d8%25a7%25d8%25b1%25db%258c-44683%2F29943-%25d8%25a7%25d8%25b3%25d8%25aa%25d8%25ae%25d8%25af%25d8%25a7%25d9%2585.html
NukedqImaft - 2017-07-19  17:05:49
 payday loan
[url=http://payday1000loans3000online.com/#payday-loans-online-same-day-ahs]payday loans [/url]
&lt;a href=&quot;http://payday1000loans3000online.com/#ace-payday-loans-mdo&quot;&gt;short term loans &lt;/a&gt;

http://payday1000loans3000online.com/#batpw
http://payday1000loans3000online.com/#maire
http://payday1000loans3000online.com/#jdgui

http://chloe-bennet.gportal.hu/gindex.php?pg=36817652&badcaptcha=true&pageno=1&postid=1278070&cmd=inscomment&commentname=nvkfmdAdede&commentemail=rlcxgjjaif%40mailermails.info&commenttext=%3Ca+href%3D%22http%3A%2F%2Fpayday1000loans3000online.com%2F%23payday-loans-bad-credit-nrv%22%3Epersonal+loan+%3C%2Fa%3E+%0D%0Ahttp%3A%2F%2Fpayday1000loans3000online.com%2F%23easy-payday-loans-epp+-+payday+advance++%0D%0A%26lt%3Ba+href%3D%26quot%3Bhttp%3A%2F%2Fpayday1000loans3000online.com%2F%23ace-payday-loans-dad%26quot%3B%26gt%3Bloans+online+%26lt%3B%2Fa%26gt%3B+%0D%0A+%0D%0Ahttp%3A%2F%2Fpayday1000loans3000online.com%2F%23qydgu+%0D%0Ahttp%3A%2F%2Fpayday1000loans3000online.com%2F%23eglle+%0D%0Ahttp%3A%2F%2Fpayday1000loans3000online.com%2F%23vfcge+%0D%0A+%0D%0Ahttp%3A%2F%2Fwww.4cav.com%2Findex.php%2Fblog%2Fadding-a-new-post%2F+%0D%0Ahttp%3A%2F%2Fwww.natural-toys.ru%2Findex.php%3Fpage%3Dforum%26mact%3DForum%2Cm862f6%2Ctopic%2C1%26m862f6retu
id%3D142%26m862f6prev_link%3Dnew_topic%26m862f6fid%3D3%26m862f6tid%3D48750%26m862f6message%3DAction%2520was%2520successfully%2520performed+%0D%0Ahttp%3A%2F%2Fbreazeal.com%2Fguestbook%2Findex.php%3Fmode%3D3%26post_id%3D45568+%0D%0Ahttp%3A%2F%2Fkabe.or.kr%2Fview.php%3Fid%3Dka51%26p%3D1%26ca%3D%26keyfield%3D%26keyword%3D%26no%3D2+%0D%0Ahttp%3A%2F%2Fwww.hefeibanjin.com%2Fcompany%2Flt%2Fclt_info.asp%3Fid%3D187594#comment_1278070_List
http://forum.anbsoft.com/viewtopic.php?f=7&t=35200
http://yachad-asso.fr/forum/?mingleforumaction=viewtopic&t=1496.15411#postid-293800
http://www.mouvement-europeen.be/news/leurope-que-nous-voulons/?messages=eyJlcnJvciI6ImludmFsaWQtcmVxdWVzdC1jb29raWUiLCJjb21tZW50X2NvbnRlbnQiOiI8YSBocmVmPVxcXCJodHRwOlwvXC9wYXlkYXkxMDAwbG9hbnMzMDAwb25saW5lLmNvbVwvI3BheWRheS1sb2Fucy1vbmxpbmUtc2FtZS1kYXktcnNhXFxcIj5sb2FucyBkaXJlY3QgPFwvYT4gXHJcbmh0dHA6XC9cL3BheWRheTEwMDBsb2FuczMwMDBvbmxpbmUuY29tXC8jc2FtZS1kYXktcGF5ZGF5LWxvYW5zLWdhdCAtIGxvYW5zIHdpdGggYmFkIGNyZWRpdCAgXHJcbiZsdDthIGhyZWY9JnF1b3Q7aHR0cDpcL1wvcGF5ZGF5MTAwMGxvYW5zMzAwMG9ubGluZS5jb21cLyNlYXN5LXBheWRheS1sb2Fucy1wdmEmcXVvdDsmZ3Q7Y2FzaCBhZHZhbmNlICZsdDtcL2EmZ3Q7IFxyXG4gXHJcbmh0dHA6XC9cL3BheWRheTEwMDBsb2FuczMwMDBvbmxpbmUuY29tXC8jZGZoYWsgXHJcbmh0dHA6XC9cL3BheWRheTEwMDBsb2FuczMwMDBvbmxpbmUuY29tXC8jb3NwYXMgXHJcbmh0dHA6XC9cL3BheWRheTEwMDBsb2FuczMwMDBvbmxpbmUuY29tXC8jaHZ1bXkgXHJcbiBcclxuaHR0cDpcL1wvZ2FkaXMtanBhc3phYmtqd3Nrb2wuYmxvcS5yb1wvIFxyXG5odHRwOlwvXC93d3cuc2RqLW9ubGluZS5kZVwvYWRtaWRpb1wvYWRtX3Byb2dyYW1cL21vZHVsZXNcL2d1ZXN0Ym9va1wvZ3Vlc3Rib29rLnBocD9oZWFkbGluZT1nYXN0ZWJ1Y2hdYWdhcmlvIFxyXG5odHRwOlwvXC93YXNoY2Fycy5ydVwvYmxvZ1wvYXZ0b21hdGljaGVza2F5YS1tb2prYS1la2F0ZXJpbmJ1cmdcLyBcclxuaHR0cDpcL1wveWFydWxpc3RzLmNvbVwvdmljdG9yaWFzLXNlY3JldC1hbmdsZXMtMjAxNi5odG1sI2NvbW1lbnQtMzAxMCBcclxuaHR0cDpcL1wvaXNlY2hhLmNsaWNrXC8/Y29udGFjdC1mb3JtLWlkPTMyNyZjb250YWN0LWZvcm0tc2VudD04NDMyJl93cG5vbmNlPWU0M2MzZGZiMmIiLCJjb21tZW50X2F1dGhvciI6Im51a2Z2aFNlbiIsImNvbW1lbnRfYXV0aG9yX2VtYWlsIjoibXFmdHZzbmxwckBtYWlsZXJtYWlscy5pbmZvIn0#comment-form
http://zusklavir.jamu.cz/index.php?p=autorska-dilna&replyto=32416&_formData[guest]=npfckxPoede&_formData[subject]=&_formData[text]=%3Ca+href%3D%22http%3A%2F%2Fpayday1000loans3000online.com%2F%23payday-loans-no-credit-check-vcl%22%3Epersonal+loans+%3C%2Fa%3E+%0D%0A%5Burl%3Dhttp%3A%2F%2Fpayday1000loans3000online.com%2F%23bad-credit-payday-loans-nrg%5Dcash+loans+%5B%2Furl%5D+%0D%0A%26lt%3Ba+href%3D%26quot%3Bhttp%3A%2F%2Fpayday1000loans3000online.com%2F%23payday-loans-ubt%26quot%3B%26gt%3Bloans+direct+%26lt%3B%2Fa%26gt%3B+%0D%0A+%0D%0Ahttp%3A%2F%2Fpayday1000loans3000online.com%2F%23lpqsh+%0D%0Ahttp%3A%2F%2Fpayday1000loans3000online.com%2F%23emqes+%0D%0Ahttp%3A%2F%2Fpayday1000loans3000online.com%2F%23ewwsz+%0D%0A+%0D%0Ahttp%3A%2F%2Fhamon-design.com%2Fsorriso%2Fyybbs%2Fyybbs.cgi+%0D%0Ahttp%3A%2F%2Fvedainfo.net%2Fpublication%2Fdetail%2Fid%3A13+%0D%0Ahttp%3A%2F%2Friesvantwisk.com%2Fhome%2Fblog%2Fmyblog%2Fblog-posts%2Fg-code-viewer.html+%0D%0Ahttp%3A%2F%2Fprogmusic.ru%2Fzaliv%2Fmusic.php%3Fid%3D113+%0D%0Ahttp%3A%2F%2Fwww.peperina.cl%2Findex.php%2Fmetales-pesados%2Fitem%2F435-carlos-cardoen-si-tienes-pasi%25c3%25b3n-hagas-nada%2F435-carlos-cardoen-si-tienes-pasi%25c3%25b3n-hagas-nada&addpost&r=0
Petravefs - 2017-07-19  16:33:19
 Позавчера разглядывал содержимое сети, вдруг к своему удивлению открыл прекрасный ресурс. Вот он: [url=http://24ls.biz/]лайн шоп[/url] . Для меня этот веб-сайт явился очень оригинальным. До свидания!
NyasqoImaft - 2017-07-19  16:17:57
 payday loan
[url=http://payday1000loans3000online.com/#fast-payday-loans-qif]personal loans [/url]
&lt;a href=&quot;http://payday1000loans3000online.com/#legitimate-payday-loans-online-no-credit-check-nmt&quot;&gt;loans with bad credit &lt;/a&gt;

http://payday1000loans3000online.com/#pauty
http://payday1000loans3000online.com/#bbadp
http://payday1000loans3000online.com/#avhdo

http://www.redteaclub.com/gbook/index.php?mode=3&post_id=171600
http://supervaluja.com/product/home-decor/
http://www.avevebrustem.be/activiteiten/content.php/article_praktische-tuintips-in-je-mailbox%21
https://www.katalogstron.preffect.pl/opiekunki-s-666.html
http://filmfa.vcp.ir/274246-%d8%aa%d8%b1%d8%b3%d9%86%d8%a7%da%a9/837020-%d8%af%d8%a7%d9%86%d9%84%d9%88%d8%af-%d9%81%db%8c%d9%84%d9%85-the-colony.html
NoasxlImaft - 2017-07-19  14:53:41
 payday loans
[url=http://payday1000loans3000online.com/#no-credit-check-payday-loans-gjo]pay day loans [/url]
&lt;a href=&quot;http://payday1000loans3000online.com/#same-day-payday-loans-cct&quot;&gt;loans direct &lt;/a&gt;

http://payday1000loans3000online.com/#izcon
http://payday1000loans3000online.com/#nkchg
http://payday1000loans3000online.com/#ugcip

http://www.gcjb.com/communion/index.asp
http://swportal.ru/node/461/comments#tab
http://www.isaevy.pro/forum/viewtopic.php?pid=134218#p134218
http://chiquita.com/recipes/winter-frozen-chiquita-banana-penguins?page=4954#comment-252780
http://www.siouxclan.de/gb/index.php?action=nav&page=2
VicenteBap - 2017-07-19  14:25:05
 Thanks-a-mundo for the article post.Thanks Again. Much obliged. [url=http://srlu9svj.tumblr.com/]Mashek[/url]
FrankTows - 2017-07-19  13:52:25
 продвижение сайта самостоятельно пошаговая инструкция
с помощью агрегатора сайтов

[url=http://site-agregator.ru][img]http://s45.radikal.ru/i110/1702/c6/e28611ea9003.gif[/img][/url]


продвижение сайтов петербург



$$+$$*
Robertgog - 2017-07-19  13:37:40
 Кто нуждается в финансовой помощи, получение кредита онлайн на карту за 20 минут. Заказать кредит здесь:

$$$
NwjwrbImaft - 2017-07-19  13:31:11
 loans online
[url=http://payday1000loans3000online.com/#online-payday-loans-ruo]payday express [/url]
&lt;a href=&quot;http://payday1000loans3000online.com/#3-month-payday-loans-key&quot;&gt;loans for people with bad credit &lt;/a&gt;

http://payday1000loans3000online.com/#vmkjj
http://payday1000loans3000online.com/#midvf
http://payday1000loans3000online.com/#avaho

http://www.chiquita.com/recipes/winter-frozen-chiquita-banana-penguins?page=4955#comment-252850
http://www.thegauntletkenilworth.co.uk/newsandevents.php?post=8&messagepage=73
http://www.broadwayzabreh.cz/kniha.php?odpoved=24707&jmeno=nickyvy2&button=0
http://www.designmarkgraphics.co.uk/blog/articles/2013/05/16/draw-a-colourful-sticky-note-pad-in-inkscape.html
https://www.ftworld.co.za/product/escape-vertball
Richardfeall - 2017-07-19  12:43:49
 Всем привет! Класный у вас сайт!
Нашел интересные материалы для владельцев частных домов и не только: [b] [b] Деревянная пергола купить [/b] [url=http://www.ekolestnica.ru/]http://www.ekolestnica.ru/[/url]

Здесь: [url=http://www.ekolestnica.ru/mebelnyj-shhit-v-yaroslavle.html]мебельный щит дерево ярославль[/url]
Здесь: http://www.ekolestnica.ru/dveri-taganrog.html [b] Двери Таганрог [/b]
Тут: http://www.ekolestnica.ru/dveri-miass.html
[url=http://www.ekolestnica.ru/balyasini-derevyannye.html]купить балясины из дерева[/url]
http://www.ekolestnica.ru/mebelnyj-shhit-v-krasnoyarske.html
Здесь: http://www.ekolestnica.ru/mebelnyj-shhit-v-ekaterinburge.html [b] мебельные щиты из сосны купить в екатеринбурге [/b]
Здесь: http://www.ekolestnica.ru/balyasiny-v-simferopole.html [b] Балясины для лестниц Симферополь [/b]
Pavelurics - 2017-07-19  08:17:45
 Утром анализировал данные интернет, неожиданно к своему восторгу открыл прелестный вебсайт. Гляньте: [url=http://24dd.ws/]dd24[/url] . Для нас вышеуказанный веб-сайт явился довольно привлекательным. До свидания!
Anthonyhem - 2017-07-19  04:30:44
 Our site offers a wide variety of non prescription drugs. Look at our health website in case you want to strengthen your health with a help of generic supplements. [url=http://k0d.buynowdapoxetine.com/dk/billig-dapoxetine-ed-drugs-27636.html]http://k0d.buynowdapoxetine.com/dk/billig-dapoxetine-ed-drugs-27636.html[/url] Our company offers safe general health products. Take a look at our health contributing portal in case you want to feel healthier. [url=http://7k5m.buynowdapoxetine.com/fr/acheter-dapoxetine-ier-47196.html]http://7k5m.buynowdapoxetine.com/fr/acheter-dapoxetine-ier-47196.html[/url] Our company offers a wide variety of non prescription products. Look at our health portal in case you want to look healthier with a help generic supplements. [url=http://ev9.buynowdapoxetine.com/de/dapoxetine-preiserstattung-durch-krankenkasse-53261.html]http://ev9.buynowdapoxetine.com/de/dapoxetine-preiserstattung-durch-krankenkasse-53261.html[/url] Our company offers a wide variety of non prescription products. Take a look at our health site in case you want to feel better with a help generic supplements. [url=http://6o.buynowdapoxetine.com/en/dapoxetine-price-lahore-32319.html]http://6o.buynowdapoxetine.com/en/dapoxetine-price-lahore-32319.html[/url] Our company offers a wide variety of non prescription products. Take a look at our health website in case you want to to feel healthier with a help general health products. http://q0.buynowdapoxetine.com/en/low-price-dapoxetine-online-37606.html Our company offers a wide variety of non prescription products. Take a look at our health site in case you want to to improve your health with a help of general health products. [url=http://2i6k.buynowdapoxetine.com/dk/kob-dapoxetine-other-purposes-83263.html]http://2i6k.buynowdapoxetine.com/dk/kob-dapoxetine-other-purposes-83263.html[/url]
Our company provides a wide variety of healthcare products. Visit our health contributing website in case you want to look better. [url=http://c2.buynowdapoxetine.com/fr/dapoxetine-en-vente-libre-canada-81846.html]http://c2.buynowdapoxetine.com/fr/dapoxetine-en-vente-libre-canada-81846.html[/url] Our company provides herbal health products. Visit our health contributing portal in case you want to feel better. [url=http://a6.buynowdapoxetine.com/no/dapoxetine-rezeptfrei-aep-56514.html]http://a6.buynowdapoxetine.com/no/dapoxetine-rezeptfrei-aep-56514.html[/url] Our company offers herb-based health products. Take a look at our health contributing site in case you want to look healthier. [url=http://m5.buynowdapoxetine.com/fr/vente-dapoxetine-ojd-53348.html]http://m5.buynowdapoxetine.com/fr/vente-dapoxetine-ojd-53348.html[/url] Our company offers supreme quality health products. Take a look at our health contributing website in case you want to look better. http://6e.buynowdapoxetine.com/de/dapoxetine-20mg-bester-preis-25658.html Our company offers a wide variety of non prescription drugs. Look at our health site in case you want to to improve your health with a help of health products.
Aribobaj - 2017-07-18  23:56:52
 does domperidone affect blood pressure [url=http://wasenshi16.tumblr.com/#25735]domperidone-wasenshi16.tumblr[/url] prulifloxacin tablets 600 mg
Nikolayjaw - 2017-07-18  22:52:42
 Пару минут назад исследовал содержимое инета, вдруг к своему восторгу обнаружил замечательный веб-сайт. Вот гляньте: [url=http://legalrce.biz/]легал рц[/url] . Для моих близких вышеуказанный вебсайт оказался очень нужным. Пока!
DzxnlbImaft - 2017-07-18  19:36:45
 google.com - #000999uuquuqyshshshx
VicenteBap - 2017-07-18  13:54:50
 Looking forward to reading more. Great post.Much thanks again. Keep writing. [url=http://srlu9svj.tumblr.com/]Fader[/url]
WilliamPigob - 2017-07-18  08:49:01
 Не знаешь как заработать?
Начни уже прямо сейчас.
Пока ты думаешь, другие зарабатывают - без вложений!
Щелкни по картинке
[url=https://lookatlink.com/LYWH][img]https://lookatlink.com/LYWK[/img][/url]
SakehsdeelD - 2017-07-18  01:20:50
 За минувшие пару лет даже минимальный уровень конкуренции в области строительных работ в Украине вырос настолько сильно, что простому обывателю, что решил восстановить любимую ванную или установить дома сантехнику, тонет в куче предложений и не способен выбрать достойного подрядчика.

Дабы по быстрому решить эту проблему, был создан сервис [b]пластол.укр[/b], что сводит воедино дистрибьюторов, опытных мастеров и простых клиентов, безвозмездно предоставляя им понятный и простой интерфейс для взаимодействия.

Отзывы, цены на услуги, фотографии прежних отремонтированных ванн — все это вы без проблем найдете на указанном сайте!
Nikolyas77 - 2017-07-17  21:39:15
 [url=https://descargarvideosdeyoutube.top/]descargar videos de youtube[/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] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.