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)
DkovyblLiesy - 2017-05-30  00:51:31
 tren hex

trenbolone side effects

http://bennex.co.th/index.php/component/users/?option=com_k2&view=itemlist&task=user&id=2645884

tren hex

side effects of tren

trenabol

how to take tren

http://masvingoteachers.ac.zw/index.php?option=com_k2&view=itemlist&task=user&id=349389

tren steroids

trenbolone hexahydrobenzylcarbonate

tren cycle

tren ethanate

http://bandamn.ru/index.php?option=com_k2&view=itemlist&task=user&id=522701

tren test cycle

steroid tren

tren a

trenbolone acetate dosage

http://oxfordharvesttime.com/index.php/component/users/?option=com_k2&view=itemlist&task=user&id=9880

trend steroid

trenbolone reviews

tren dosage

tren and test cycle

http://gp9.medkhv.ru/index.php?option=com_k2&view=itemlist&task=user&id=68584

trenbolone side effects

tri tren

trenbolone enanthate cycle

tren ace results

http://ritzbuild.com/index.php?option=com_k2&view=itemlist&task=user&id=224295

how long does tren stay in your system

trenbolone cycle

tren and test cycle

tren and test cycle

http://inmomartinezfranco.com/index.php?option=com_k2&view=itemlist&task=user&id=13897&amp;lang=es

tren acetate

tren e
MarioEldew - 2017-05-30  00:23:17
 Всем привет! класный у вас сайт!
Интересная инфа: [b] [url=http://kinobunker.net/]Онлайн лучшие триллеры[/url]
Тут: http://kinobunker.net/muzykalnye/2706-v-vodovorote-nepriyatnostey-no-entry-2005.html [b] В водовороте неприятностей / no entry (2005) [/b]
Тут: [url=http://kinobunker.net/drama/5437-chudesa-le-meraviglie-2014.html] Чудеса / le meraviglie (2014) [/url]
Тут: [url=http://kinobunker.net/drama/1075-donni-brasko-donnie-brasco-1997.html] Донни Браско / donnie brasco (1997) [/url]
Тут: http://kinobunker.net/main/12049-harrison-ford-edva-ne-stal-prichinoy-aviacionnoy-katastrofy.html

Здесь: [b] новинки 2017 лучшие мелодрамы [/b] http://kinobunker.net/melodrama/
Здесь: [url=http://kinobunker.net/detektiv/] 2017 бесплатно лучшие детективы [/url]
Здесь: [url=http://kinobunker.net/istoricheskiy/] лучшие исторические фильмы онлайн [/url]
Nbenejel - 2017-05-29  23:37:07
 Я в этом абсолютно уверен.

---

уголок металлический равнополочный [url=http://kishinskij.com/index.php?option=com_k2&view=itemlist&task=user&id=68058]тут[/url]
Rauschgv - 2017-05-29  23:27:12
 [url=http://www.ksdonline.com/?blueprint-medicines] http://www.ksdonline.com/?blueprint-medicines[/url]
[url=http://www.ksdonline.com/?yorktowne-family-medicine] http://www.ksdonline.com/?yorktowne-family-medicine[/url]
[url=http://www.ksdonline.com/?medicine-for-bedwetting] http://www.ksdonline.com/?medicine-for-bedwetting[/url]
[url=http://www.ksdonline.com/?creamotion-medicine] http://www.ksdonline.com/?creamotion-medicine[/url]
[url=http://www.ksdonline.com/?fischer-family-medicine] http://www.ksdonline.com/?fischer-family-medicine[/url]
Lstrguiffic - 2017-05-29  23:22:39
 Thanks for the article, always happy to read you!

[url=http://www.hbccem.com/forum.php?mod=viewthread&tid=4963296&extra=] Is printed on the wall ... in the most prominent place !!!
[/url]

http://polyphonicsong.com/index.php/en/subsystems/forum-eng/gnwrimia/282260-para-visa-proscar-la-prostata#282262
DerbdhlLiesy - 2017-05-29  23:21:13
 tren ace half life

tren acetate

http://gp9.medkhv.ru/index.php?option=com_k2&view=itemlist&task=user&id=68584

tren a

side effects of trenbolone

tren dosage

tren and test cycle

http://centragrid.com/index.php/component/users/?option=com_k2&view=itemlist&task=user&id=85404

how long does tren stay in your system

tren hex

steroid tren

trenbolone enanthate results

http://csdsz.net/index.php?option=com_k2&view=itemlist&task=user&id=668811

trenbolone dosage

trenbolone enanthate results

trenbolone

what is tren

http://endlessethiopiatours.com/index.php?option=com_k2&view=itemlist&task=user&id=33034

how long does tren stay in your system

tren results

trenbolone acetate cycle

tren ace half life

http://hellobhopal.in/index.php?option=com_k2&view=itemlist&task=user&id=58584

how to make trenbolone

tren hex

trenbolone pills

tren results

http://hotelsissy.gr/index.php?option=com_k2&view=itemlist&task=user&id=321027&amp;lang=en

trenbolone enanthate side effects

tren ace half life

trenbolone cycle

tren e cycle

http://fundacionedga
ovoa.org/index.php/component/users/?option=com_k2&view=itemlist&task=user&id=710683

trenbolone acetate results

trenbol
MichaelCah - 2017-05-29  22:53:07
 Вернёмся к традиционной http://misterchai.dp.ua/ китайской медицине. Именно она предложила нам заменить медикаментозные препараты для лечения и профилактики лечебные чайные сборы и рассказала о уловка чая. Это своего рода рачение человечества быть в гармонии с природой. Не удивительно, что в настоящее эпоха огромной популярностью пользуются древние рецепты приготовления изысканного чайного напитка, обладающего и целебными и профилактическими свойствами.

Чайные снаряжение и молодой вникать не наподобие обладают лечебными свойствами. Их уникальный количество содержит витамины, природные антиоксиданты (способны значительно уменьшить давление вредных свободных радикалов и помогать их в короткий концентрации, способствуют замедлению процесса старения, снижают риск возникновения у человека рака, сердечно сосудистых заболеваний, мышечной дистрофии) и другие активные вещества. Чайные сборы проникают и усваиваются тканями организма, с через чего обновляются и восстанавливаются повреждённые клетки человеческого организма.

Существует немало книг и статей сообразно использованию чая. Всетаки всё это чуть публикация данной продукции, а публикация не даёт всей необходимой информации правильного применения лечебного чая. Сильно гордо понимать, кто словно под условии точного выполнения комплексных действий лечебные чаи принесут всю эффективность http://misterchai.dp.ua/ лечебного, восстановительного и профилактического действия.

Наша задача – помочь http://misterchai.dp.ua/ читателю овладеть такой информацией, которая поможет правильно употреблять знать, а также узнать о магическом механизме его чудотворного действия. Основываясь на знания и принципы китайской медицины, применяя новые разработки, мы предлагаем вам иметь уникальную методику применения чая и почувствовать действие чая, с вследствие которой устройство человека способен уравновесить и построить собственные защитные механизмы, используя внутренние принципы самоорганизации.

http://misterchai.dp.ua/blog.html
DksxoylLiesy - 2017-05-29  21:47:04
 tren acetate dosage

tren ace half life

http://usacmp.com/index.php?option=com_k2&view=itemlist&task=user&id=12657

trenabol

tri tren

trenbolone dosage

tren pills

http://joomsam.ru/index.php?option=com_k2&view=itemlist&task=user&id=1195

trenbolone acetate side effects

tren side effects

trenbolone acetate side effects

tri tren

http://himalayabanquet.com/index.php?option=com_k2&view=itemlist&task=user&id=700792

trenbolone enanthate cycle

tren ace results

trenbolone acetate cycle

tren a

http://naturalclique.com/index.php?option=com_k2&view=itemlist&task=user&id=93600

trenbolone dosage

oral trenbolone

tren ace half life

how to take tren

http://progressive-management.com.ua/index.php?option=com_k2&view=itemlist&task=user&id=13132

steroid tren

how to take tren

trenbolone results

tren and test cycle

http://cutgrass.com.au/index.php?option=com_k2&view=itemlist&task=user&id=116215

tren e

trenbolone enanthate dosage

trenbolone enanthate dosage

side effects of trenbolone

http://triad.kiev.ua/index.php?option=com_k2&view=itemlist&task=user&id=65043

tren enanthate

tren e results
Jeffreybew - 2017-05-29  21:44:55
 brilliant resource http://publicschoolfinder.com/chattahoochee-valley-community-college-dorms.html
GeorgeBal - 2017-05-29  20:37:04
 Заказать аниматора на дом частный сад или школу в Ростове на дону и области.
KrakdsLer - 2017-05-29  20:12:05
 Так и до бесконечности не далеко :)

---

Астрология знаки [url=http://logoped-kazan.ru/index.php?option=com_k2&view=itemlist&task=user&id=1343815]тут[/url]
UndusahankWrergerova - 2017-05-29  20:11:31
 Здравствуйте, народ сетевой!
Советую увлекательный вебсайт: http://zelbatut.ru/ - детский Зеленоград. Разумеется спорт для детей в Зеленограде. И напоследок спортивные секции в зеленограде для детей от 6лет
Специализация интернет проекта [url=http://zelbatut.ru/articles/article-03.html]Зеленоград детям[/url].
Храни Вас Бог, Всех.
Юзер
Cuellarll - 2017-05-29  20:10:59
 [url=http://www.ksdonline.com/?fetal-mate
al-medicine] http://www.ksdonline.com/?fetal-mate
al-medicine[/url]
[url=http://www.ksdonline.com/?sinusitis-emedicine] http://www.ksdonline.com/?sinusitis-emedicine[/url]
[url=http://www.ksdonline.com/?waycross-inte
al-medicine] http://www.ksdonline.com/?waycross-inte
al-medicine[/url]
[url=http://www.ksdonline.com/?pain-medicine-salary] http://www.ksdonline.com/?pain-medicine-salary[/url]
[url=http://www.ksdonline.com/?reform-medicine] http://www.ksdonline.com/?reform-medicine[/url]
Scottciz - 2017-05-29  17:51:03
 [url=][/url]
RobertGar - 2017-05-29  14:38:15
 Как заработать в интернете уже сегодня

Ребят, хватит сидеть без денег!)
Я был простым бедным студентом, а теперь рублю 15-17 тысяч рублей каждый день вот здесь: [url=http://9binaryoptions.com/kak-torgovat-i-zarabatyvat-v-binomo.html]Как заработать в интернете[/url] (обучающая статья)
Это РАБОТАЕТ! Проверено. Всем удачи!

[img]http://9binaryoptions.com/uploads/posts/2017-01/binary_options_money2.jpg[/img]

Заработок в интернете от 15000 рублей в день тут [url=http://9binaryoptions.com/kak-torgovat-i-zarabatyvat-v-binomo.html]Как заработать в интернете[/url] (обучающая статья)

Вот ещё статьи вам помогут начать получать доход в интернете:
[b] Бинарные опционы развод [/b] [url="http://9binaryoptions.com/bina
ye-opciony-razvod.html"]Бинарные опционы развод[/url]
[b] Бинарные опционы обучение [/b] [url="http://9binaryoptions.com/bina
ye-opciony-obuchenie.html"]http://9binaryoptions.com/bina
ye-opciony-obuchenie.html[/url]
[url=http://9binaryoptions.com/uploads/otzivi/zarabotok-v-inte
ete-vivod-na-qiwi.htm] Заработок в интернете вывод на qiwi [/url]
http://9binaryoptions.com/uploads/otzivi/bina
ie-optsioni-olimp-trade.htm [b] Бинарные опционы olimp trade [/b]
[url=http://9binaryoptions.com/uploads/otzivi/zarabotok-v-inte
ete-bez-vlozheniy-ot-5.htm] Заработок в интернете без вложений от 5 [/url]
http://9binaryoptions.com/uploads/otzivi/bina
ie-optsioni-razvod-dlya-lohov-mnenie.htm [b] Бинарные опционы развод для лохов мнение [/b]
http://9binaryoptions.com/uploads/otzivi/samiy-populya
iy-zarabotok-v-inte
ete.htm
Davidmoick - 2017-05-29  14:00:32
 How to make money on the inte
et today

Guys, tired of sitting with no money?
I was just a poor student, and now i make 1000$ - 1500$ every day here: [url=http://9binaryoptions.com/uploads/reviews/index.htm] How to ea
on the Inte
et [/url]
It works! Checked. Good luck to all!

[img]http://9binaryoptions.com/uploads/posts/2017-01/binary_options_easy_money.jpg[/img]

Ea
ings on the Inte
et from $ 1500 here [url=http://9binaryoptions.com/uploads/reviews/index.htm] How to ea
on the Inte
et [/url]] Start Now!

This method of ea
ings is available in all countries! These articles will help you:
http://9binaryoptions.com/uploads/reviews/ideas-for-making-money-at-home.htm
http://9binaryoptions.com/uploads/reviews/secondary-income-sources.htm [b] secondary income sources [/b]
[url=http://9binaryoptions.com/uploads/reviews/make-money-online-legit.htm] make money online legit [/url]
http://9binaryoptions.com/uploads/reviews/quick-ways-to-ea
-money.htm [b] quick ways to ea
money [/b]
[b] Бинарные опционы развод мнение специалистов [/b] [url="http://9binaryoptions.com/platformy-dlya-treydinga.html"] Бинарные опционы развод мнение специалистов [/url]
[b] Binare Optionen Broker Bewertung [/b] http://9binaryoptions.com/handelsplattformen.html
[b] Лучший заработок 2017 [/b] [url="http://9binaryoptions.com/luchshiy-zarabotok-2017.html"]http://9binaryoptions.com/luchshiy-zarabotok-2017.html[/url]
EdwardFum - 2017-05-29  13:48:24
 Приветствую! класный у вас сайт!
Нашёл кино онлайн бесплатно в хорошем качестве: [b] [b] Список 2017 лучшие мультфильмы [/b] [url=http://kinofanonline.ru/]http://kinofanonline.ru/[/url]
Тут: [b] лучшие новинки кино бесплатно [/b] http://kinofanonline.ru/novinki/
Здесь: [url=http://kinofanonline.ru/istoricheskiy/] лучшие исторические фильмы 2017 смотреть [/url]
Тут: [b] лучшие фантастика 2017 список [/b] http://kinofanonline.ru/luchshaya-fantastika-2014-2015-spisok-filmov/
Тут: [url=http://kinofanonline.ru/melodrama/] лучшие мелодрамы в хорошем качестве hd [/url]
Тут: [url=http://kinofanonline.ru/serialy/] 2017 смотреть лучшие сериалы [/url]
[url=http://kinofanonline.ru/uzhasy/13098-blekbe
-blackbu
-2015.html] Блэкберн / Blackbu
(2015) [/url]
[b] Белль / Belle (2013) [/b] http://kinofanonline.ru/drama/3647-bell-belle-2013.html
[b] Премьеры России — 12 февраля [/b] http://kinofanonline.ru/news/6614-premery-rossii-12-fevralya.html
http://kinofanonline.ru/drama/1906-doktor-kto-doctor-who-sezon-2-2006.html
Mrruhza - 2017-05-29  12:49:37
 ross medical school care for heat exhaustion and heat stroke
http://www.rxsildenafilcanada.com/#hojaz.html
buy viagra online cpr first aid classes
viagra for sale
stroke emergency treatment
[url=http://www.rxsildenafilcanada.com/]buy viagra online[/url]
healthcare companies
Scottciz - 2017-05-29  12:47:59
 [url=][/url]
Agustinababs - 2017-05-29  12:33:16
 full size bed bug cover [url=http://bedbugmattresscover.net/]bed bug cover[/url]
cover mattress [url=http://bedbugmattresscover.net/]mattress cover bed bugs[/url]
bed bug blocker queen [url=http://bedbugmattresscover.net/home-collection-bed-bug-mattress-cover.html]bed bug cover mattress[/url]
round mattress bed bug cover [url=http://bedbugmattresscover.net/clean-rest-bed-bug-mattress-cover.html]protector bed mattress protector[/url]
anti bed bug spray [url=http://bedbugmattresscover.net/home-collection-bed-bug-mattress-cover.html]anti bed bug mattress protector[/url]
best mattress encasement bed bugs [url=http://bedbugmattresscover.net/instyle-fabrics-mattress-covers-for-bed-bugs.html]walmart bed bug mattress covers[/url]
full bed protector [url=http://bedbugmattresscover.net/clean-rest-bed-bug-mattress-cover.html]king size mattress protector bed bugs[/url]
bed bugs treatment [url=http://bedbugs.us.org/]bed bugs treatment[/url]
bed bugs bites [url=http://bedbugs.us.org/]bed bug treatment[/url]
bed bug treatment [url=http://bedbugbites.us.org/]bed bug bite treatment[/url]
bed bugs treatment [url=http://bedbugbites.us.org/]bed bug treatment[/url]
where can i get bed bug mattress covers bed bug covers mattresses
bed bug mattress cover bed bug covers mattresses
mattress pad bed bug protection best bed bug covers
can you get rid of bed bugs bed bug box spring protector
bed bugs mattress cover bed bug proof luggage covers
hypoallergenic mattress cover where to buy mattress covers for bed bugs
bed bug box spring protector sealed mattress cover
bed bug spray bed bugs treatment
treat bed bug bites bed bugs
bed bug removal treat bed bug bites
treat bed bug bites bed bug bites
<<[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.