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ářů(11211)
EarnestHah - 2017-07-26  21:53:38
 [url=http://fly-bra-bay.ru/samokleyushiysya-byustgalter-nevidimka-fly-bra.html]самоклеющийся бюстгальтер невидимка fly bra[/url]
[url=http://fly-bra-bay.ru/silikonoviy-byustgalter-fly.html][img]http://fly-bra-bay.ru/flybra-video2.jpg[/img][/url]

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

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

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

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

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

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

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

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

Key Tags: cheapest essays writing services paper writer services top rated essay writing services who will write my essay for me chronological order for essay college essay proofreading service college essays writing service essay writing service australia benefits of paraphrasing nursing essay help writing services for college papers good essay writing website custom written essays paraphrasing in communication help me write my research paper help with writing a paper for college essay help online chat world order essay legal studies help me with my paper research paper on consumer buying behaviour coursework plagiarism essays order buy essays online australia college papers help coursework service writing a thesis dissertation accession or order number online essay writers
Abaatoat - 2017-07-26  07:32:33
 std symptoms for female [url=http://mataisa45.tumblr.com/#79345]misoprostol price[/url] icd 10 code for preeclampsia
игра nfs - 2017-07-26  07:05:57
 саундтреки с игры need for speed hot pursuit
как правильно играть в нфс ворлд
русский обзор игры nfs run
игры need for speed most wanted 2012
код для игры нфс черный список
http://nedforspid.moy.su/index/skachat_igru_nedforspid_andegraund_cherez_torrent/
игра онлайн нфс карбон
скачать игру гонки недфорспид бесплатно на компьютер
коды к игре nfs rivals
играть нфс онлайн на русском
бесплатный игра nfs на телефон
Lstrguiffic - 2017-07-26  04:36:30
 Many opinions of people who do not understand anything about this topic.

[url=http://binghamtonspeed.com/viewtopic.php?f=3&t=807651] Totally agree with you, about a week ago wrote about ETOGES to my blog!
[/url]

http://rivershale.net/index.php?topic=539940.new#new
Dannyrab - 2017-07-26  04:01:13
 [url=http://fidiprest.com/antiallergic/cheap-entocort/]Mexican Pharmacy Online No Prescription[/url]
Jinnycoro - 2017-07-26  03:33:14
 Thank you for your forum topic. Really Cool. [url=http://jaovjc53.tumblr.com/]Dart[/url]
DavidVom - 2017-07-26  03:05:56
 Читайте информацию о моде, здоровье и красоте на [url=http://nalatty.com]nalatty.com[/url]
JasonBug - 2017-07-25  23:14:19
 counter-strike global offensive beta activation key generator.rar

http://cellphonetr.com/Karaman/03394783#
IsmaelFunny - 2017-07-25  20:34:33
 Новая информация об автомобилях [url=http://autoisauto.ru/]autoisauto.ru[/url]
JasonBug - 2017-07-25  19:45:35
 battlefield 3 premium edition billig kaufen

http://cellphonetr.com/Denizli/02596296#
Lstrguiffic - 2017-07-25  17:34:33
 as they say, live in vain - untimely death.

[url=http://www.15261402411.com/forum.php?mod=viewthread&tid=1401274&extra=] Informative, but not convincing. Something is missing, but what I do not understand. But, I will say directly: - bright and benevolent thoughts.
[/url]

http://evlan.us/forums/showthread.php?tid=150709
Michaelpah - 2017-07-25  16:46:55
 При упоминании о натуральном камне у каждого пред глазами возникают определения роскоши и красоты. Особенно это относится к мрамору. Солидный внешний вид в сочетании с отличными физико-техническими свойствами делает изделия из мрамора чрезвычайно популярными в вопросах обустройства интерьера.
Конечно, пользоваться мрамором следует аккуратно. Далеко не каждый стиль интерьера располагает к установке столь ярких элементов. Больше всего изделия из мрамора используются в классическом стиле и все что из него вытекает .
Также, мраморные изделия могут отлично вписаться в минималистические стили или хай-тек, но только при очень тщательной проработке их роли. Но следует отметить что все современное не настроено на визуальную роскошь, поэтому изделия из мрамора нужно максимально продумано внедрять в такие стили.
Отметим наиболее распространенные варианты использования мрамора в интерьере (не касаясь отделки стен, полов или лестниц):
[b]1. Столешницы.[/b]
Столешницы выполненные из мрамора это в первую очередь долгий срок службы и полная санитарная безопасность (запахи и т.д.).
[b]2. Ванны.[/b]
Мраморная ванна представляет собой апофеоз роскоши. Она, безусловно, является очень специфическим элементом, который, однако получает все более широкое распространение.
[b]3. Подоконники.[/b]
Изделия из мрамора в виде подоконников отлично подходят к интерьерам серьезных представительских зданий (головной офис компании), театров, музеев и прочих культурных объектов.
Естественно, все указанные элементы отличаются фантастическим внешним видом, который украсит даже самый выдающийся интерьер.
При помощи изделий из мрамора очень хорошо получается заполнить пространство и обеспечить сочетание стилей. [url=http://parthenongroup.ru/katalog-mramora/oniks]мрамор оникс в москве[/url]
RashadRAH - 2017-07-25  16:28:37
 Привет! Класный у вас сайт!
Нашёл интересные новости про политику:
[url=http://electek.ru/news/10044-mihail-gorbachev-vladimir-putin-spas-rossiyu-ot-raspada.html] Михаил Горбачёв: Владимир Путин спас Россию от распада [/url]
[b] НИПИгазпереработка признана лучшим предприятием в отрасли «Нефтехимическая и химическая промышленность» г.Краснодара [/b] http://electek.ru/news/5571-nipigazpererabotka-priznana-luchshim-predpriyatiem-v-otrasli-neftehimicheskaya-i-himicheskaya-promyshlennost-gkrasnodara.html
[b] Ляшко: Я – голубь мира (видео) [/b] http://electek.ru/news/11002-lyashko-ya-golub-mira-video.html
http://electek.ru/news/12768-microsoft-mozhet-pereyti-na-android-otkazavshis-ot-windows-phone.html
http://electek.ru/news/12670-politolog-dazhe-slabyy-protivnik-mozhet-ulozhit-armiyu-ssha-na-lopatki.html
Ещё тут интересно: [b] зело новороссия [/b] [url="http://electek.ru/"] служба в армии лнр [/url]
[b] награды днр фото [/b] [url="http://electek.ru/"] новороссия музыка скачать [/url]
[b] Новости IT Технологий [/b] [url="http://electek.ru/information-technology-it/"]http://electek.ru/information-technology-it/[/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] [451] [452] [453] [454] [455] [456] [457] [458] [459] [460] [461] [462] [463] [464] [465] [466] [467] [468] [469] [470] [471] [472] [473] [474] [475] [476] [477] [478] [479] [480] [481] [482] [483] [484] [485] [486] [487] [488] [489] [490] [491] [492] [493] [494] [495] [496] [497] [498] [499] [500] [501] [502] [503] [504] [505] [506] [507] [508] [509] [510] [511] [512] [513] [514] [515] [516] [517] [518] [519] [520] [521] [522] [523] [524] [525] [526] [527] [528] [529] [530] [531] [532] [533] [534] [535] [536] [537] [538] [539] [540] [541] [542] [543] [544] [545] [546] [547] [548] [549] [550] [551] [552] [553] [554] [555] [556] [557] [558] [559] [560] [561] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.