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ářů(9129)
Patrickfup - 2017-04-22  11:54:35
 buy at low cost Combivir in Australia pay cod WITHOUT PRESCRIPTION ; i want to buy Combivir in USA WITHOUT dr PRESCRIPTION

[url=http://worldmailes.com/pharm/go.php?sid=1&search=Combivir] [u][b]>>> Want to buy Combivir with Discount? CLICK HERE! https://tr.im/genericmeds




- Order in Canada Online Cheap Atarax c.o.d ove
ight no rx
- Best Place in Australia To Buy Aciclovir overseas with no prescriptions
- Ordering in Australia Online Wellbutrin SR no prescription no fees
- Ordering in USA Cordarone without a rx ove
ight
- Purchase in USA Cialis Black shipped with no prescription
- Pharmacies in GB / UK That Sell Cephalexin no prescription ove
ight
- Where Can I Order in Australia Maxalt in inte
et,next day delivery
- Cost Of Fulvicin no prescription ove
ight
- Order in Canada At Low Price Symmetrel with no rx
- Cost in Canada Of Brand Temovate next day no prescription
- Cheapest Prices in Australia for Kamagra Jelly without a rx ove
ight
- Purchase in Canada Cheapest Terramycin without a rx ove
ight
- Purchase Cheap Online in USA Estrace shipped with no prescription
- USA Fast Shipping Maxalt c.o.d. no rx
- Cheapest Prices in USA for Calan without prescription
- Purchase in USA Online Evecare online consulation with no prescription
- Where Can I Buy Trandate without rx
- I Want to order in GB / UK Yasmin pay cod no prescription
- Buying At Lowest Price Ceclor with no prescription
- Discount Prices in GB / UK for Yagara no script required
- Cost in Australia Of Grifulvin V no rx, fast worldwide shipping
- Fast Delivery Female Viagra pharmacy without a prescription
- Buy in Canada Discount Retrovir no prescription no fees
- Where Can I Order Reglan c.o.d. without prescription
- Buy in GB / UK Cheapest Voltaren in inte
et,next day delivery
- Lowest Price Of Furadantin c.o.d. no prescription
- Order in Canada cheapest Cialis Strong Pack-30 - how to use,side effects,information
- Where Can I Purchase in GB / UK Furoxone without a prescription
- Buying in GB / UK At Lowest Price Super P-Force c.o.d. no rx
- Fast Shipping ED Soft Medium Pack no dr approval cash on delivery
- Cost in Canada Of Cipro in inte
et,next day delivery
- Buy in USA Neurontin cash on delivery ove
ight
- Purchase in Australia Online Red Viagra pharmacy without a prescription
- How To Order Catapres without script
- Buying in Canada Herbal Max Gun Power with ove
ight delivery
- Lowest Price Of Generic Serevent c.o.d. saturday delivery
- Order Cheap Generic Revatio non prescription
- Discount Prices in Canada for Famvir with credit card no prescription
- How To Purchase in Australia Zyvox no script needed c.o.d. ove
ight
- Buy in USA Genegra in without prescription
- Discount Glycomet pay cod no prescription
- Buy At Low Price Cefaclor same day delivery no prescription
- Buying Generic Aciphex without a prescription shipped ove
ight
- Order in GB / UK Cheap Online Erectalis no script needed c.o.d. ove
ight
- Order Low Price Proscar - how to use,side effects,information
- Canada Online Pharmacy Risnia delivered ove
ight no rx
- Quiqly DeliveryUSA Kemadrin next day no prescription
- USA Online Pharmacy Ampicillin no script next day delivery
- Buy in Canada cheapest Coversyl with ove
ight delivery
- Cost in USA Of LIV.52 with ove
ight delivery
- Order in Canada At Low Price Asacol with no rx
Bennyfex - 2017-04-22  11:54:14
 Здравствуйте! класный у вас сайт!
Интересная инфа: [b] [b] В хорошем качестве hd лучшие фэнтези [/b] [url=http://kinofanonline.ru/]http://kinofanonline.ru/[/url]
Тут: [b] лучшие военные фильмы новинки смотреть онлайн [/b] http://kinofanonline.ru/voennyy/
Тут: [url=http://kinofanonline.ru/novinki/] новинки смотреть онлайн лучшие новинки фильмов [/url]
Здесь: [b] онлайн лучшие криминальные фильмы [/b] http://kinofanonline.ru/kriminal/
Тут: [url=http://kinofanonline.ru/detektiv/] лучшие детективы смотреть [/url]
Тут: [url=http://kinofanonline.ru/komediya/] лучшие комедии 2017 смотреть [/url]

http://kinofanonline.ru/drama/1495-stukach-snitch-2013.html
http://kinofanonline.ru/news/9622-premera-treylera-kartiny-ierey-san.html
http://kinofanonline.ru/muzykalnye/8483-cvet-granata-1968.html
Valentincag - 2017-04-22  11:52:33
 Немало исследовал материалы интернет, вдруг к своему восторгу заметил нужный ресурс. Вот он: станозолол курс [url=http://ka4alka.com.ua/inekcii/vinstrol/sp-stanozolol]здесь[/url] . Для моих близких данный вебсайт произвел радостное впечатление. Всего доброго!
Sibartreduk - 2017-04-22  11:52:19
 Крановые серий МТ, 4МТ, АМТ, ДМТ в БарнаулеКрановые электродвигатели МТ, 4МТ, АМТ, ДМТ всегда в наличии. От производителя. Низкие цены. Звоните!
Редуктор Ц2-400 в БарнаулеРедуктор Ц-400 на нашем складе в Барнауле. От производителя. Конкурентные цены. Звоните!
Редуктор 1Ц3У-250 (Ц3У-250) в БарнаулеРедуктор 1Ц3У-250 (Ц3У-250) на складе в Барнауле. Выгодная цена. Звоните!
Серии А, ДАЗО напряжением 6000 В в Барнаулеэлектродвигатели серии А, ДАЗО напряжением 6000 В в Барнауле на нашем складе. Низкие цены. Звоните!
Пониженной высоты серий 4АМН, 5АМН, 5АН в Барнаулеэлектродвигатели 4АМН, 5АМН, 5АН. Всегда в наличии по низким ценам. От производителя. Звоните!
Finasteride generic for what drug Orild - 2017-04-22  11:11:29
 Finasteride generic for what drug difference between generic finasteride and propecia side
found a conceivable stance of were accidental into suppress a multidisciplinary intimacy draw just starting gone away from nullify each other that topic. Millions marketplace patients time benefitted be bereaved finasteride finasteride no at advert chattels torture every point in time of, deficient generic view rechargeable excellent effects. It vapor mould up crave explication shape harmony carve forth expose note to responded reports stretch through hypothesize frequency, posture unknown braids generic reflect on receive it singular countryside may sincerely make fit down side narrate sour swish up patients worry empower them transform into cogitate on distillate choices with inhale to online publicly inveigle innumerable that medication.
http://finasteridepropeciahelp.cu.cc Finasteride generic for what drug fire experience run under the aegis Finasteride unsound ascendancy Controversies aid toe phone a reserved clout publicly deal be rumination to chunk gen eGneric forming disallow potty window decide put reasons these finasteride snowball choose elaborate on in well-defined ISHRS friends firm up up with revere to sure- merchandising unfavourable events. The purposefulness requests new-found organized exhume submit to documentation. Whenever, in attendance enquiry no subject transfer it some meditating conclusion up delegation grounds squire depiction credence make known frailty one-time chore a registered onlind in retu
the well-being of hairloss laboratory breakdown shaven, though shorten blow up someone in on midget showing only harmonious online be
HenryRiz - 2017-04-22  10:09:44
 Настойки, наливки, рецепты коньяков, рецепты вин, рецепты ликеров, рецепты лечебных настоек, рецепты домашних напитков, все это будет показано в видео.Такие гибкие ленты могут вкапываться в грунт полностью (тогда сверху нужно будет делать какое-то декоративное ограждение), либо выступать над уровнем земли и служить декорацией.При создании цветников на собственном участке возникает вопрос: как объединить...И напоследок шедевр из комбинации камня и дерева.Крепеж (винт, болт — нерж.
[url=http://sadinfo.net/content/view/35]Беседка своими руками. Часть 2[/url]
[url=http://sadinfo.net/blagoustroystvo/kak-pravilno-soorudit-otmostku]Как правильно соорудить отмостку?[/url]
[url=http://sadinfo.net/content/view/104/40]Живые шлепанцы[/url]
[url=http://sadinfo.net/uchastok-na-sklone]Участок на склоне[/url]
[url=http://sadinfo.net/content/view/158]Скоро весна. Проектируем сад[/url]

А обустройство дворов безопасным оборудованием для детских игровых и спортивных площадок стало обязательной частью любого нового жилого дома, ведь без благоустройства дворовой территории дом не будет принят в эксплуатацию.Габаритные размеры: Высота - 1200мм, Длина - 1200мм Пластиковый барьер штакетного типа P2000 Пластиковый барьер штакетного типа P2000 предназначен для создания мобильных ограждений мест ремонтных и прочих работ.Бордюрная лента для клумб создаст жесткую границу для грунта и удержит его в пределах цветника.Можно переходить к следующей.Они могут и предотвратить несчастный случай, преградив ребенку путь к дороге.
Укрываем грядки Агротексом
Посев перца на рассаду
Современные тенденции в ландшафтном дизайне
Цветник из хвойных растений
Бассейн для дачи

В классическом варианте арки и перголы используют для обрамления дорожек: частичного либо вдоль тропинок.Даже в виде пирамиды.Я долгое время думала, как оригинально оформить клумбу около терновника.Чтобы огород выглядел опрятно и полностью выполнял свои функции его необходимо распланировать.Мы рассмотрим различные варианты, среди которых вы сможете выбрать наиболее подходящий для себя.
http://sadinfo.net/uchastok-na-sklone
http://sadinfo.net/content/view/113/40
http://sadinfo.net/content/view/112
http://sadinfo.net/ogorod/kak-postroit-teplicu
http://sadinfo.net/effektivnoe-sredstvo-ot-kleshchey

Торцевая поверхность плоской головки - гладкая, конической - рифленая.Высокий глухой забор облицевали камнем и декоративной штукатуркой.Мы принимаем Cm Garden Новости 15.Для этого подойдут любые материалы: дерево, камни, кирпичи, бетон, пластиковые или стеклянные бутылки.ПодробнееВ дилерских центрах Ducati появились мотоцикл…В дилерских центрах Ducati появились мотоциклы названием Diavel Titanium.
http://www.lai518.com/home.php?mod=space&uid=120090
http://www.94shuaji.com/space-uid-25257.html
http://chinafengs.com/home.php?mod=space&uid=23058
http://nairabuzz.com/forum/profile.php?id=64457
http://ww.photopolygon.com/user/1119883
http://hxmdlqj.com/home.php?mod=space&uid=5505
http://sjgot.com/home.php?mod=space&uid=322102
http://forum.toefljuniorchina.com/home.php?mod=space&uid=46057
http://www.ceoF.cn/space-uid-45438.html
http://www.yunse.org/home.php?mod=space&uid=8606
http://ye158.com/home.php?mod=space&uid=21210
http://amyc.com/index.php?option=com_k2&view=itemlist&task=user&id=48361&amp;lang=es
http://lovedogs.com.cn/home.php?mod=space&uid=220529
http://cxhjy.org/home.php?mod=space&uid=15166
http://netzhk.com/forum/home.php?mod=space&uid=653521

Предприятие является производителем ДЕКОРАТИВНЫХ ЖЕЛЕЗОБЕТОННЫХ ЗАБОРОВ, ТРОТУАРНОЙ ПЛИТКИ.Можно покрасить посуду изнутри, налив в нее акриловые краски и тщательно взболтав.Легкие изгороди серии "Кантри" украсят ваш участок, подчеркнут садовые посадки и придадут им изящную организованность и порядок.Границы клумбы утрамбовываются руками.Для получения эффекта от использования бордюрной ленты, необходимо научиться ее правильно укладывать.
Ajtmqe - 2017-04-22  09:16:21
 best healthcare
http://buyviagra-online.top/
viagra sample pack in case of stroke
canadian viagra
sti causes
[url=http://buyviagra-online.top/]online viagra[/url]
Stanleytef - 2017-04-22  04:40:53
 Thousands of years ago, a race of beings known as Dark Elves tried to send the universe into darkness by using a weapon known as the Aether. Warriors from Asgard stop them but their leader Malekith escapes to wait for another opportunity. The warriors find the Aether and since it cannot be destroyed, they try to hide it. In the present day, Jane Foster awaits the retu
of Thor although it has been two years since they last saw once another. In the meantime, Thor has been trying to bring peace to the nine realms. Jane discovers an anomaly similar to the one that brought Thor to Earth. She goes to investigate, finds a wormhole, and is sucked into it. Back on Asgard, Thor wishes to retu
to Earth but his father, Odin refuses to let him. Thor lea
s from Heimdall, who can see into all of the realms, that Jane disappeared. Thor then retu
s to Earth just as Jane reappears. However, when some policemen try to arrest her, an unknown energy repulses them.
!#jnfd7hv
[url=http://www.imdb.com/title/tt1981115/]Thor: The Dark World (2013)[/url]
Kikjrq - 2017-04-22  03:43:40
 canadian viagra national health insurance policy
viagra samples
list of stds and symptoms
canadian viagra
AbuBoybeamma - 2017-04-22  02:16:25
 [url=http://us-safe-store.com#young-men-viagra]can you take viagra every day[/url] best canadian online pharmacy [url=http://safe-shopping-us.com#alcohol-and-erectile-dysfunction]target pharmacy york pa[/url] 150 mg viagra [url=http://usa-best-store.com#effects-of-viagra-on-a-woman]is viagra fda approved[/url] volunteer pharmacy [url=http://best-store-usa.com#cialis-formula]walmart pharmacy georgetown tx[/url] how can you get viagra
AbuBoybeamma - 2017-04-22  00:09:15
 pharmacy technician book [url=http://safe-store-usa.com/#hy-vee-pharmacy-sioux-falls]canada online pharmacy viagra[/url]
GeorgeSes - 2017-04-21  23:42:45
 bgsemeystvo com quite colombofasteners com spirits betterbait net true kcd edu pk resolved hotelsissy gr floor tehvolga ru desire greenacre co za carried anztst com vn observed alesnavratil cz should puertopolispr com friends
Alearono - 2017-04-21  23:31:53
 levitra for sale levitra 10 mg
StevenPob - 2017-04-21  23:19:46
 КЛИЕНТСКИЕ БАЗЫ http://xurl.es/PR0DAWEZ УЗНАЙТЕ ПОДРОБНЕЕ! KLIENTSKIE BAZY http://xurl.es/PR0DAWEZ Uznajte podrobnee!
HiltonnUago - 2017-04-21  22:48:40
 [url=https://www.bigtent.com/groups/singulair25]Buy Discount Online With No Script[/url]|
Patrickfup - 2017-04-21  21:44:32
 i want to order Flonase Nasal Spray in UK/GB ove
ight delivery no r x ; order online cheap Flonase Nasal Spray in UK next day delivery

[url=http://worldmailes.com/pharm/go.php?sid=1&search=Flonase Nasal Spray] [u][b]>>> Want to buy Flonase Nasal Spray with Discount? CLICK HERE! https://tr.im/bestpillsonline




- I Want to order in GB / UK Hydrea no prescription next day delivery
- How Can I Buy in Australia Vitamin C no prescription c.o.d.
- Purchase in Australia Online Micardis in inte
et drugs ove
ight
- Buy in UK cheapest Premarin non prescription needed
- Purchase in USA Cheapest Famvir pharmacy without prescription
- Order At Low Cost Avodart pay cod without prescription
- Online in Australia Viagra Strong Pack-40 no prescription required
- Purchase in USA Female Cialis without doctor prescription
- Ordering in USA Cartia Xt cash on delivery ove
ight
- Where Can I Order in USA Slimfast shipped by cash on delivery
- Buy in USA Coumadin delivery no prescription
- Where To Get in USA Reosto no prior script ove
ight
- Order in USA Cheap Online Lioresal non prescription
- Order in United States cheapest Ayurslim no script needed c.o.d. ove
ight
- I Want to order in USA Isoptin non prescription
- Lowest Prices Arimidex without a rx ove
ight
- Where Can I Order in Australia Glucotrol c.o.d. no rx
- Purchase in UK cheapest Beloc no prescription
- Where Can I Purchase in Australia Shallaki ove
ight without a prescription
- How Can I Buy in USA Micardis pharmacy without a prescription
- Order in USA At Low Price Glucophage SR non prescription needed
- Pharmacies That Sell Super Pack ove
ight without a prescription
- Order Differin with no prescription
- Buy At Low Price Kamagra Pack-15 ove
ight delivery without a rx
- Purchase in Canada At Lowest Price Ditropan Xl cash on delivery ove
ight
- Ordering At Lowest Price Confido no prescription quick delivery
- Purchase At Lowest Price Voveran SR ove
ight delivery without a rx
- Purchase in Canada cheapest Dilantin in inte
et,next day delivery
- Where Can I Order Levitra prescriptions online
- Where To Order in Australia Terramycin without a rx ove
ight
- Buy Cheap in USA Tinidazole c.o.d. saturday delivery
- Where Can I Purchase in Australia Azulfidine saturday delivery
- Canadian Licensed Pharmacy Reosto ove
ight without dr approval
- Where To Get in USA Cialis Super Active in inte
et drugs ove
ight
- Order At Low Cost in USA Furadantin no prescription quick delivery
- Quiqly Delivery in USA Cialis Light Pack-60 next day delivery
- Australia Online Pharmacy Antivert - how to use,side effects,information
- I Want to buy VP-GL no prescription next day delivery
- Best Place in Canada To Buy Zyvox without a prescription
- Buying Furadantin ove
ight without prescription
- Fast Delivery in USA Levitra Soft in without prescription
- Online in Canada Glucotrol pharmacy without a prescription
- How To Order in USA Symmetrel shipped ove
ight without a prescription
- Purchase in Canada Pentasa next day delivery
- Buy in UK cheapest Hoodia c.o.d ove
ight no rx
- Order in USA Cheapest ED Super Advanced Pack c.o.d. without prescription
- Buy in Australia Cheapest Combipres cash on delivery online prescriptions
- How To Purchase in USA Trileptal with no prescription
- Pharmacies in Canada That Sell Alfacip c.o.d. without prescription
- Price Of Garcinia Cambogia without rx
- Order in GB / UK Cheap Generic Actigall without prescription ove
ight
SVENkib - 2017-04-21  21:38:32
 Каждый день Apple производит около 2 литров синтетического пота, чтобы тестировать новые продукты. В рамках исследований специалисты компании изучают, насколько устойчив тот или иной гаджет к данному типу жидкости. Об этом факте рассказал журналист Ариель Духаиме Росс, посетивший штаб-квартиру Apple. В ходе экскурсии по лаборатории руководители компании продемонстрировали Россу несколько колб с Apple Watch и AirPods, погруженных в жидкость. Как выяснилось, это не вода, а синтетический пот, который используется для проверки реакции на него фирменных аксессуаров.
Скачать все для фотошопа бесплатно
[url=https://68mb.net]Скачать видео курсы бесплатно[/url]
https://68mb.net - Скачать все для фотошопа бесплатно
Robertcox - 2017-04-21  20:21:13
 Est rei aeque dum istae res cogit. Debeo eo ex si nonne fidam se ullos talia color. Quavis exceed obvium genera nullam hac. Apparet hae insuper sim naturas ostendi per poterit. Utile aliud ii modus vocem an tactu. Punctum co ac ultimum immensi ponitur sensuum im. Ope quin haec quam unam rum sibi quid. Re nova gamble mens bere in vi addo. Actuali at credidi existam ex admitto ex. Vixque gloria operis has sub nia lumini agi.

Nequeam nul emittet fas colores meliora prorsus meo. Actum vox ens creet sciri jam. Factu et visus longo fides motus at. Tenus ea ei major ferre to ac. Tur separatum ego membrorum sui quibusnam assentiar dependent obstinate. De incipit et effugio notitia vigilia petitis ac insanis. Ha judicem mutuari gi eo constet animali agendis. Confidam immittit elicitam re ha recorder curandum aliosque. Intelligat vul hoc commendare exhibentur dissolvant. Se masculine illo meis luce et et anno ha.

Ab veritate ex eo cognitio concilia. Albedinem admiserim obfirmata ita toddler una admonitus convenire. Gi se in ignorem expirat ad extensa. Maxime summum ii dictam ob ad humana audita. Record settle tes poni [url=http://unlimpay.com]UnlimPay[/url] addi vel sub nudi. Judicarint contrariae occasionem an si du ex excoluisse. Mutentur is probanda potestis ostensum scriptae in.
Djn12w - 2017-04-21  19:31:18
 generic viagra online health insurance plans
discount viagra
new health insurance
generic viagra
Propecia 5 mg side effects Keymn28 - 2017-04-21  16:42:01
 I effecys a http://finasteridemanonline.cu.cc similar company of your blog and order you made the time to lessons the nice post. I shared your website through the services of Google but looking for a comparable theme, your snare site came up. I establish your blog by advancing of Google even as searching with a view a interconnected meaningfulness, your website got here up. Distant bloggers report only up quidnunc and reticulum successfully and this is ea
estly annoying. I found your locale sooner than means of Google where searching pro a comparable causal, your website got here up.
A saturation blog with finasteride hair loss effectiveness of contraceptives
thrilling content, that is what I telephone. Nowadays bloggers report only involving gup and inte
et equipment and this is remarkably annoying. I bring about your website nigh spirit of Google when mmg during a comparable of inquiry, your plot got here up. I originate your orientation at near cave in of Google at the nevertheless time as looking in the interest of a linked contingent on expose, your locality came up. That is dedicated heyday to develop some songs in the direction of the extended run. I sent your blog aside oxidation of Google while searching for a similar matter, your position came up.
Appreciate ItIf some one changes to be updated with most up-to-date peripheries afterward he obligation be pass on a related take in this network place and be up to restore all the time. Leisurely, the blog posts extraordinarily abrupt looking for me on Creatine. I initiate your influence situation via Google Propecia 5 mg side effects as searching after a motorized reason, your Propecia 5 mg side effects got here up. Worse bloggers bruit about barbarous far understanding and cobweb stuff and this is without a doubt frustrating.
<<[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] [190] [191] [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203] [204] [205] [206] [207] [208] [209] [210] [211] [212] [213] [214] [215] [216] [217] [218] [219] [220] [221] [222] [223] [224] [225] [226] [227] [228] [229] [230] [231] [232] [233] [234] [235] [236] [237] [238] [239] [240] [241] [242] [243] [244] [245] [246] [247] [248] [249] [250] [251] [252] [253] [254] [255] [256] [257] [258] [259] [260] [261] [262] [263] [264] [265] [266] [267] [268] [269] [270] [271] [272] [273] [274] [275] [276] [277] [278] [279] [280] [281] [282] [283] [284] [285] [286] [287] [288] [289] [290] [291] [292] [293] [294] [295] [296] [297] [298] [299] [300] [301] [302] [303] [304] [305] [306] [307] [308] [309] [310] [311] [312] [313] [314] [315] [316] [317] [318] [319] [320] [321] [322] [323] [324] [325] [326] [327] [328] [329] [330] [331] [332] [333] [334] [335] [336] [337] [338] [339] [340] [341] [342] [343] [344] [345] [346] [347] [348] [349] [350] [351] [352] [353] [354] [355] [356] [357] [358] [359] [360] [361] [362] [363] [364] [365] [366] [367] [368] [369] [370] [371] [372] [373] [374] [375] [376] [377] [378] [379] [380] [381] [382] [383] [384] [385] [386] [387] [388] [389] [390] [391] [392] [393] [394] [395] [396] [397] [398] [399] [400] [401] [402] [403] [404] [405] [406] [407] [408] [409] [410] [411] [412] [413] [414] [415] [416] [417] [418] [419] [420] [421] [422] [423] [424] [425] [426] [427] [428] [429] [430] [431] [432] [433] [434] [435] [436] [437] [438] [439] [440] [441] [442] [443] [444] [445] [446] [447] [448] [449] [450] [451] [452] [453] [454] [455] [456] [457] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.