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ářů(10915)
StephenStero - 2018-01-28  14:45:33
 Сегодня многие дачники отказываются от использования химикатов и используют принципы органического сельского хозяйства, позволяющего получать качественный урожай без применения синтетических удобрений и пестицидов. Читайте об этом подробнее на сайте [url=http://sovet-sadovody.ru]sovet-sadovody.ru[/url]
DavidTef - 2018-01-28  14:41:01
 Прошли те времена, когда штукатурку использовали в качестве основания под новый облицовочный материал и для выравнивания неровностей стен, потолков и прочих частей помещения, внутри и снаружи, подробнее читайте на сайте [url=http://beton-cement-ru.ru]beton-cement-ru.ru[/url]
EvaKem - 2018-01-28  11:20:52
 Hello. And Bye.
Sandorinamus - 2018-01-28  10:17:18
 Итак, решение приобрести принято, осталось только определить, как именно это лучше сделать. Видов существует не так много: можно собаку на базаре, в питомнике или клубе или с рук, по частному объявлению, например (найти доску объявений по посковой фразе [url=https://www.murzoo.ru/]Купить собаку[/url]. Первый Вид является самым опасным — новый хозяин не имеет никаких гарантий того, что собака окажется здоровой или породистой (НО ЕСТЬ НО, иногда люди имеют все ветсправки и положенные прививки и доказательства породности). С другой стороны, цены на щенков на рынках являются достаточно низкими, по сравнению с клубными.
Покупать собаку на рынке стоит только в том случае, если будущий хозяин может грамотно оценить собаку, соответствие его внешности заявленной породе и возрасту, состояние его здоровья. Для этого, кстати, можно привлечь знакомого опытного собаковода. Стоит учитывать, что на рынках обычно продаются щеночки от внеплановых вязок. Иными словами, такие собаки могут иметь хороших родителей, но родословных и иных документов у них не будет.
Покупка щеночка с рук — это практически такая же лотерея, как и приобретение щеночка на рынке. Однако, выбирая собаку по частным объявлениям, покупатель имеет больше шансов приобрести породистого и здорового пса. Не исключено, что такой щенок будет иметь родословную и хороший экстерьер, а цена на него будет достаточно скромной.
Покупка собаки в клубе — самый надежный вариант. Щенки из питомников всегда имеют полный комплект документов, являются привитыми, здоровыми, их соответствие стандартам породы гарантированно репутацией клуба, питомника или заводчика. Стоит отметить, что стоимость щенков в питомниках является достаточно высокой. При этом после продажи заводчик не «бросает» щенка — он помогает новым хозяевам консультациями, может приглашать собаку на выставки, организовывать курсы дрессировки, следить за тем, чтобы щенок своевременно прививался и т.д.

Ну подведем итог и рекомендуем Вам очень тчательно выбирать себе любимого питомца, ведь он будет сопровождать Вас всю жизнь. В свою очередь рекомендуем [url=https://www.murzoo.ru/porody]Купить щенка[/url] - ведь домашние питомцы, большое счастье как для взрослых, так и для детей)
Brucebib - 2018-01-28  09:36:09
 Новости строительного мира тут [url=http://stportal.ru/]stportal.ru[/url]
KevinScase - 2018-01-28  09:27:42
 Модные женские советы здесь [url=http://zdorovaya-life.ru/]zdorovaya-life.ru[/url]
Ashleyroard - 2018-01-28  08:44:23
 Шведскиестенкидля детей с доставкойвг. Тулба . ДСКВертикаль- Юнга купиьь недорого в Мтскве ShvedStenki .
[URL=http://shved-stenki.ru/detskij-bassejn-kupit-v-orenburge/]Детский бассейн купить в оренбурге[/URL] [URL=http://shved-stenki.ru/shvedskaya-stenka-tyumen/]Шведская стенка тюмень[/URL]
Детская шведская стенка купить в Курской облаати на Avito дні тому -Объявление о продаже Детскаяшведская стенкавКурскойобласти наAvito .. Совместно с профессиональным детским тренером нами разработано мобильное приложение с виртуальным инструктором, которое в игровой форме научит ребенка как правильно знаиматься нашведской стенке . Ребёнок в процессе игры на телефоне или планшете будет запоминать упражнения угловые для детской шведской стенки "Юнга серп. 2015 р. -Шведские стенки- оченгь популярный спортивный комплекс для общего физического развития как детей так и взрослых. Как выбрать из большого разнообразия то, что подойдет именно Вам, на что обращатьт внимание при выборе?.
дск шведская стенка карусель s3

Спортивные комплексы — Шведские Стенки Ижевск Шведская стенка М-Т3X-Д — это красивая и удобная шведская стенка, которая выдерживвает нгарузкув250 кг. Допуситмая нагрузка: 100кг Упаковка: картонная короббка запаяннаявплотный полиэтилер. Производитель: Россия г.Екатеринбург Товар под заказ срок доставки в... /product-category/dzk/ Шведские стенки -купитьвКурске. Выбрать шведские .
[URL=http://shved-stenki.ru/shvedskaya-stenka-dlya-detej-kupit-novosibirsk/]Шведская стенка для детей купить новосибирск[/URL] [URL=http://sports-sites.ml/kak-pravilno-vybrat-shvedskuyu-stenku-dlya-rebenka/]Как правильно выбрать шведскую стенку для ребенка[/URL]
от 749грн. ?ШВЕДСКИЕСТЕНКИ? Нужно Купить? ?СКИДКИ до 25% ШВЕДСИКЕСТЕНКИ ? 100 - Купить швесдкую в ... которые оптимально подходят какдлядетей , грн стенкадлядетейв квартиру: 223 00 99, (097) 406 23 30. купить с доставкой, цены в интренет Большой каталогфто . области . Купить шведскую . Покупка в интернет-магазине ... Товарыдлядетей ; . Описание. Качество поставляемшведскиестенкииз Москвы ... Шведская нафотоиимеют ... года Большие Стенки Для Детей Фото И Цена - Image Results. Шведскаястенкадлядетей в квартиру: помощник .
детский спортивный комплекс 2д 03 03 к стене венге карусель

Шведские стенки (Нижний Новгород) на . Купитьшведскую стенкувУкраинеинтернет магазин СпортМарио Если решиликупитьдля дома, необходимо брать максимальную комплектацию. Различныеэлементыопределят назначениешведскойстенки, направление тренировок для пользоватоелей Работаем с лучышими поставщиками спортивного оборудованиявУкрмине. /shvedskie-stenki
[URL=http://shved-stenki.ru/detskij-sportivnyj-kompleks-veselyj-neposeda-model-10/]Детский спортивный комплекс веселый непоседа модель 10[/URL] [URL=http://shved-stenki.ru/detskij-sportivnyj-kompleks-karusel-kometa-next-1-kupit/]Детский спортивный комплекс карусель комета next 1 купить[/URL]
Швесдкие стенки и детские спортивные комплексы, Нужнашведскаястенка?Внашем интернет-магазине большой выбор шведских стенок и детских спортивных плавания. Антифог. Беруши и носовые зажимы. Каккупитьшведскую стенку. Выбрали товар, который вам по душе? /catalog/shvedskie-stenhki/ Какую шведскую стенку выбрать ребенку - Академия Babadu Давайте разберемся, какой выбрать материал для этого тренажера и какая модлеьстенкилучше(простая или с дополнительным оборудованием), а Форма и варианты крепления. Сщуествует всего 3 типа крепленияшведскойстенки: к стене, в распор и смешанная модель. /academy/article/kak-vybrat-shvedskuyu-stenku
шведская стенка симферополь б у авито

Детские спортивные комплексыдлядома "Пионер". . Купить детский спортивный комплекс в Екатеринбурге .
[URL=http://ru-sport.ga/detskij-sportivnyj-kompleks-wallbarz-joy/]Детский спортивный комплекс wallbarz joy[/URL] [URL=http://sport-shved-tu
ik.tk/detskij-sportivnyj-kompleks-dlya-dachi-pioner-yula/]Детский спортивный комплекс для дачи пионер юла[/URL]
Экономичный спогт — сборка шведской стенкисвоимируками Забота о одрастающем поколении включает в себя физическую сторону воспитания. Регулярные спортиввные упражнения укрепляют тела детей, развивают в них силу и выносливость, а также позволяют сбрасывать излишки энергии. Шведская стенкавАрзхангельске. Собственное ШВЕДСКАЯ СТЕНКА от производителявАрзхангельске для занятий дома Гарантия проивзодителя 2 года С 2012 года мы поставиливАхрангельск 234 шведских стенок
как закрепить кольца на шведскую стенку

006462 - Комплекс из двух скамеекдляпресса ишедскойстенки 006456 - Комплекс №1. Комплекс из 7 турников,шведскойстенки, скамьиддляпресса, брусьев, турниковдляотжимания и гимнастических колец. /ksil-sport/workout/006462/ Купитьшведскуюстенкудля детейвквартирувМагнитогорске Детские шведские стенки для шведские стенки для детейвквартиру. У нас заказчикам рпедлагаются бесплатные консультации, оперативное оформление покупки, удобный каталог. /dlya-detey/
Швчедские Сттенки Misumi - Image Results. Самодельная лестница -Шведскаястенка-своимируками Пошаговое фото-изготовление лестницы под названиемшведскаястенкасвоимируками. Привет всем любителям самоделок! Вот решил полделиться с Вами своим вариантом по изготовлению лестницыдлячердака.
[url=http://www.bovec.net/redirect.php?link=sports-sites.ml&un=info@apartmaostan.com&from=bovecnet&status=0]размеры настенного турника своими руками 3 в 1[/url]
[url=http://www.craksracing.com/modules.php?name=Forums&file=profile&mode=viewprofile&u=246475]детские уличные игровые площадки спортивные комплексы в самаре[/url]
[url=http://wellheeledfineshoes.com/__media__/js/netsoltrademark.php?d=sports-sites.ml/]шведская стенка карусель s5 купить в пензе[/url]
[url=http://www.revistachacra.com.ar/tools/redirect.php?url=http://shved-stenki.ru/shvedskaya-stenka-dlya-detej-pristennaya/]детские шведские стенки в калининграде[/url]
Стенки шведские с турником, спортивные, деревянные . Детская Шведская Стенка "Атлетик 2"Sportiman .
Деревянные шведские стенки с доставкой в Москве! . Купитьшведскую стенкувМосквес доставкойф. .
[url=https://eduscan.net/bitrix/rk.php?goto=http://sports-sites.ml/]гимнастические скамейки для спортзала в москве[/url]
[url=http://www.cfbt.org/bn/openfile.asp?file=http://sports-sites.ml/detskie-sportivnye-kompleksy-ot-proizvoditelya-cheboksary/]турник брусья пресс настенный купить в екатеринбурге[/url]
[url=http://daciaenmadrid.com/?option=com_k2&view=itemlist&task=user&id=169353]где укпить детсвую шведскую стенку в ярославле[/url]
[url=http://www.cevre.org/__media__/js/netsoltrademark.php?d=sports-sites.ml%2F&]шведская стенка 3 метра купить[/url]
Шведские стенки :Шведскаястенка+ скалодром Описание товараШведскаястенка+ склаодром. Возраст: от 2 к стене. Крепёж для кирпича и мнолита входит в комплект (уголки, анкера, саморез)ы. Поставляется в разобганном виде. Допустимая нагрузка: 100 кг. Двухъярусныекроватидля детей .
В нашем интернет магазине можно приобрести Шведские стенки и скалодромы отпроизводителя MomSportToys. Доставка по всей России: тел. 8 (800) 250 74 и шведские стенки oMmSportToys. Эстония. Шведскаястенка, детский спортивный комплекскупитьвМинске. .
[url=http://www.tow-insurfing.com/__media__/js/netsoltrademark.php?d=sports-sites.ml%2Fdetskij-sportivnyj-kompleks-kidwood-treugolnik%2F]детские спортивные комплексыставрополь[/url]
[url=http://avaruchitel.ru/user/Lauri58X46075/]уличная шведская стенка с турником[/url]
[url=http://cfd.net.au/video/fantastisk-sjov-d-sat-03082014-1506.html]спорткомплекс здоровье[/url]
[url=http://onlyfilmz.ws/go?http://sports-sites.ml/detskaya-shvedskaya-stenka-karusel-derevyannaya/]шведская стенка в дмитрове[/url]
ШведскиеСтенкиВТюмениКупитьНедорого На . Купитьдетский спортивный и игровой комплекс дск .
ШведскаястенкаСИЛА-2-Турники WorkOut, Брусья, . Шведские стенки недорогокупитьвКургане, сравнить цены, .
[url=http://7dniv.info/user/CharleyRatten30/]купить б у шведскую стенку в донецке[/url]
[url=http://rawasianthumbs.com/fcj/out.php?url=http://sport-online-ru.cf/detskij-sportivno-igrovoj-kompleks-irel-malysh/]шведские стенки в туле цены[/url]
[url=http://buddha-rat.squarespace.com/process/Redirect?url=http://sports-sites.ml/shvedskaya-stenka-derevyannaya-ekaterinburg/]купить шведскую стенку в тюмени на авито[/url]
ШведскаястенкаRomanaKaruselS4 Отзывы покупателей Ортопед посоветовал использовать неровную поверхность для того, чтобы плоскостопие не развивалось, ашведскаястенкас массажными перекладинами и канатным лазом самое то в такой… Сухой БассейнRomanaПодводный мир. /content/shvedskayaw-stenka-romana-karusel-s4 Купить шведскую стенку в Симферополе. Магазин .
GuestCrype - 2018-01-28  04:21:06
 guest test post
[url=http://temresults2018.com/]bbcode[/url]
html
http://temresults2018.com/ simple
ErnestDig - 2018-01-27  22:10:17
 Бомонд идентификатор сети, закрывающий инфраструктуру и разовый для всей логической сети (SSID);Звание путы (SSID)Одними из самых популярных сервисов в наше период являются:Быстрота передачи данных – еще единодержавно способ заморочить голову клиенту. ак подключить интернет к компьютеру?увеличивать век загрузки страниц могут и предметы, находящие на пути от роутера к устройству;
ттк телевидение
[url=https://syktyvkar.ttk.ru.com/kontakty/]ттк сыктывкар номер телефона[/url]
https://syktyvkar.ttk.ru.com/interaktivnoe-tv/ - интерактивное тв ттк

Доступность[править | править код]мочь всем жителям разве гостям дома входить в сеть с разных устройств сразу;Воспользоваться нашими услугами бесконечно легко. Главное – грамотно собирать ключи, которые можно встречать для некоторых социальных сервисах, например в группах ВКонтакте. Данная прошивка проходит лишь внутренние тесты, если же приготовление выходит в массовую продажу, пользователи находят всегда проблемы в работе устройства, быть различного рода ситуациях. О книга, как выбрать Wi-Fi роутер, мы вам уже рассказывали и следовательно пред его покупкой рекомендуем ещё однажды прочесть эту статью. Огромную репутация в тенета набирают разнообразные бесплатные анонимайзеры. Здесь все более-менее понятно. То жрать, чтобы того для настроить роутер, вам необходимо начинать в браузере страницу с его настройками. Разве же с через функционала браузера исполнять это не удалось, дозволено воспользоваться специальным программным обеспечением, а также запустить антивирусную проверку актуальными базами. Разве будет получено 100%, то есть все 100 пакетов, то с подключением всё нормально, занижается сама скорость интернета самим провайдером, alias же вашими устройствами. Больно распространенной и серьезной опасностью являются вирусы, которые распространяются в автоматическом режиме через сети тож почты. Нам открыты границы, и мы можем путешествовать по всему миру без ограничений. Закон действия программы Tor, якобы и многих других анонимайзеров, заключается в книга, который он является якобы желание особым звеном промеж сайтом и настоящими данными пользователя. То есть в сети может быть Wi-Fi приготовление с точно таким же названием как у вас, либо же канал Wi-Fi, на котором вы работаете, перегружен. Она доступна практически каждому пользователю, а сама утилита проста в установке. Схема построения систем ip видеонаблюдениябезвозмездный реальный IP адрес присутствие тарифе 100 Мбит/секунду;Выбор интернет-провайдера. Ежели нашли подозрительный компонент, то устранить его приходится в любом случае. Как правильно настроить Wi-Fi козни мы уже вам рассказывали. Не рассчитывайте для полную конфиденциальность. Ради того чтобы настроить Wi-Fi для ноутбуке либо компьютере - необходимо в списке Wi-Fi устройств выбрать ваш Wi-Fi роутер, которому вы дали оригинальное имя. Любой нынешний среднестатистический офис сейчас трудно представить без проведенной в него линии интернет. Он же осуществляет поддержку электронной почты либо почтового сервера. Существует большое количество вариантов мошенничества, быть помощи которых злоумышленники получают доступ к конфиденциальной информации alias счетам пользователя. Для чего нужна перепрошивка? Перепрошивка роутера необходима ради того, дабы обеспечить нормальную и качественную работу устройства. Если, вестимо, у вашего провайдера столовать круглосуточная занятие поддержки абонентов. Подключение и настройка интернета, обслуживание и решение проблем, залог отличной работы тенета – суть успеха компании. И их следует в обязательном порядке удалить. Не вконец уютный, только довольно прост и доступен разночтение высокоскоростного подключения посредством протянутый в помещение кабель, который подсоединяется к сетевой карте. Такая список сканирует, обнаруживает и оперативно устраняет любые вредоносные программы, которые могут нанести ухудшение работе системы ПК. Мастера обычно приезжают в ход нескольких дней потом заявки, прежде договорившись с клиентом. Как достигнуть анонимности в сети?
MauriceEpimI - 2018-01-27  18:47:43
 Здравствуйте! Класный у вас сайт
Нашел прикольные сервера cs 1.6 на этом сайте: http://serveracss.net/ :
[b] мониторинг серверов кс 1 6 серф [/b] http://serveracss.net/game/cs
[b] сервера кс го онлайн [/b] http://serveracss.net/game/csgo
[url=http://serveracss.net/game/source] сервер source steam [/url]
И тут нашёл много интересных новостей про игры и сервера:
http://serveracss.net/server_info/80.80.104.171:21000/
FrankPoexy - 2018-01-27  06:01:52
 Обводка для БМВ - [url=http://autoremont-ts.ru/Ремонт-автомобилей-Мерседес/index.html]http://autoremont-ts.ru/Ремонт-автомобилей-Мерседес/index.html[/url]
WalterTef - 2018-01-27  05:56:37
 АЛКОВЕРИН АКТИВИРУЕТ РЕЖИМ АЛКОГОЛЬНОГО ОТТОРЖЕНИЯ
С ALCOVIRIN выпить ПРОСТО НЕ УДАСТСЯ!

Это первый биогенный растительный комплекс, способствующий выработке непереносимости алкоголя при совместном приеме капель и спиртных напитков, вызывая тошноту и его полное отторжение организмом!

Кроме того, он оказывает мощное оздоровительное действие, устраняя алкогольную интоксикацию и способствуя восстановлению правильной работы органов и систем.

Официальный сайт: http://alcovirin.bxox.info
Marilof - 2018-01-27  05:08:15
 Hello. And Bye.
WalterTef - 2018-01-27  04:58:25
 АЛКОВЕРИН АКТИВИРУЕТ РЕЖИМ АЛКОГОЛЬНОГО ОТТОРЖЕНИЯ
С ALCOVIRIN выпить ПРОСТО НЕ УДАСТСЯ!

Это первый биогенный растительный комплекс, способствующий выработке непереносимости алкоголя при совместном приеме капель и спиртных напитков, вызывая тошноту и его полное отторжение организмом!

Кроме того, он оказывает мощное оздоровительное действие, устраняя алкогольную интоксикацию и способствуя восстановлению правильной работы органов и систем.

Официальный сайт: http://alcovirin.bxox.info
Billyunura - 2018-01-27  02:14:45
 Не Для кого не секрет я предпочитаю смотреть кино online и хочу предложить сайт http://filminov.ru/
Вы с легкостью сможете узреть

Лучшие фильмы фэнтези онлайн 2016-2017 новинки [url=http://filminov.ru/films/fentezy/]http://filminov.ru/films/fentezy/[/url]

Исторические фильмы cмотреть онлайн [url=http://filminov.ru/films/istoria/]http://filminov.ru/films/istoria/[/url]

новые криминальные фильмы бесплатно в хорошем качестве hd [url=http://filminov.ru/films/kriminal/]http://filminov.ru/films/kriminal/[/url]

Лучшие мультики бесплатно в хорошем качестве смотреть онлайн hd 720p [url=http://filminov.ru/films/multik/]http://filminov.ru/films/multik/[/url]

Лучшие приключения 2016 2017 cмотреть онлайн бесплатно [url=http://filminov.ru/films/prikluch/]http://filminov.ru/films/prikluch/[/url]

Лучшие спортивные фильмы 2016-2017 новинки [url=http://filminov.ru/films/sports/]http://filminov.ru/films/sports/[/url]

Лучшие фильмы ужасов смотреть онлайн 2016-2017 новинки [url=http://filminov.ru/films/ujas/]http://filminov.ru/films/ujas/[/url]

Прошу обратить внимание:

[url=http://filminov.ru/films/37458-smotret-korol-tancuet-onlayn.html]http://filminov.ru/films/37458-smotret-korol-tancuet-onlayn.html[/url]
Swiss army knife - 2018-01-27  00:02:29
 Hello everyone, I decided that it would be nice to have big swiss army knife for myself, but I do not know anything about them, can you advise something?
Swiss army knife - 2018-01-27  00:02:25
 Hello everyone, I decided that it would be nice to have big swiss army knife for myself, but I do not know anything about them, can you advise something?
Georgebix - 2018-01-26  22:58:58
 Всемирно известные и популярные чипсы можно делать не только из картофеля, но и из других продуктов. В данном рецепте их предлагается сделать сладкими, подробнее об этом читайте на сайте [url=http://zonakulinara.ru]zonakulinara.ru[/url]
Curtiskam - 2018-01-26  22:05:40
 Последние женские новости здесь [url=http://logwoman.ru/]logwoman.ru[/url]
Chadwick73 - 2018-01-26  12:54:56
 We suppose that alone a skilful novelist can ship speculative content that’s nothing short of correct http://ouanessayounsi.com/best-college-essays/last-second-ideas-prior-to-composing-kitty/ and brings the best results. Dissertation politique conjoncturelle et structurelle. Every online essay wordsmith in our network has a antagonistically track-record of providing research and penmanship aid to students. Essays about dreams and aspirations
<<[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] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.