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ářů(10300)
CraigGom - 2017-12-21  00:40:32
 Приобрести можно на веб-сайте http://mangoo77.mangoosteen.com

Рады предложить нашим покупателям инновационное средство для похудения сироп Мангустина. При помощи него можно сжечь около 10 kg за 14 суток.

Растение гарциния произрастает в Азии. Плоды этого дерева обладают удивительными особенностями, которые были взяты за основу средства Mangoosteen. В банке содержится более 25 плодов этого удивительного растения. Плоды с дерева мангостан помогают сжечь излишнею жировую ткань. А также отлично влияют на организм в комплексе. Специфика производства препарата, а также специализированная упаковка позволяют сберечь все полезные свойства гарцинии.

Главным компонентом сиропа Mangoosteen являются плоды с растения мангостан, в них содержится огромное количество полезных микроэлементов. Благодаря веществу ксантону, которое в больших дозах имеется в плодах, значительно замедляются окислительные процессы в теле. Ксантон признается одним из самых сильных антиоксидантов. В плодах растения гарциния к тому же есть разные группы витаминов и элементы. Приобрести сироп Мансустина возможно на сайте http://mangjoo77.mangoosteen.com.
CraigGom - 2017-12-20  20:46:22
 Приобрести можно на веб-сайте http://mangoo77.mangoosteen.com

Предлагаем нашим клиентам потрясающее средство для похудения Mangoosteen. С его помощью возможно избавиться от 15 kg за 2 недели.

Дерево мангустин растет на Шри-Ланке. Плоды данного растения имеют удивительные свойства. Во флакончике содержится около 25 плодов данного удивительного дерева. Плоды дерева мангостин помогают убрать излишнею липидную ткань. И отлично воздействуют на организм в комплексе. Технология изготовления средства, и специализированная упаковка помогают сохранить все полезные свойства растения.

Основным действующим компонентом сиропа Мангустина являются фрукты с растения мангостан, в них содержится большое число питательных веществ. Благодаря компоненту ксантону, которое в больших количествах имеется во фрукте, значительно замедляются процессы окисления в теле. Окись дифениленкетона считается одним из самых сильных антиоксидантов. В плодах растения мангустин также есть различные группы витаминов и микроэлементы. Приобрести сироп Mangoosteen можно на веб-сайте http://mangoo77.mangoosteen.com.
CraigGom - 2017-12-20  17:10:36
 Приобрести можно на веб-сайте http://mangoo77.mangoosteen.com

Хотим предложить вам чудодейственное средство для похудения сироп Мангустина. При помощи него возможно избавиться от 10 килограмм за 14 суток. Растение мангкут произрастает на Филиппинах. Плоды этого растения имеют замечательные особенности. Во флакончике содержится около 25 плодов данного замечательного дерева. Плоды с дерева мангостин помогают растопить лишнюю липидную ткань. А также отлично воздействуют на человека в целом. Технология производства средства, а также специальная упаковка помогают сберечь все удивительные свойства мангустина. Главным веществом сиропа Мангустина являются фрукты с дерева мангостан, в них имеется большое число полезных микроэлементов. Благодаря компоненту окиси дифениленкетона, которое в громадных дозах имеется в плоде, сильно тормозятся процессы окисления в организме. Ксантон признана одним из наиболее сильных антиоксидантов. В плоде дерева мангостин вдобавок имеются разные группы витаминов и микроэлементы. Купить сироп Mangoosteen возможно на сайте http://xurls.in/c1x
CraigGom - 2017-12-20  11:45:07
 Приобрести можно на веб-сайте http://mangoo77.mangoosteen.com

Хотим предложить вам потрясающее средство для похудения Mangoosteen. При помощи него возможно сбросить около 10 килограмм за 14 дней.

Дерево мангостин произрастает в Азии. Плоды данного растения имеют замечательные особенности. Во флакончике содержится около 25 плодов этого удивительного дерева. Плоды растения мангостин помогают убрать излишнею липидную ткань. И положительно влияют на человека в комплексе. Технология изготовления средства, а также специализированная упаковка помогают сохранить все полезные свойства плодов.

Главным компонентом сиропа Мангустина являются плоды с растения мангкут, в которых содержится огромное число питательных веществ. Благодаря компоненту окиси дифениленкетона, которое в громадных количествах содержатся в плоде, значительно тормозятся процессы окисления в теле. Ксантон является одним из наиболее сильных антиокислителей. В плодах дерева мангостин вдобавок имеются разнообразные витамины и микроэлементы. Купить сироп Mangoosteen можно на интернет-сайте http://mangoo77.mangoosteen.com.
CraigGom - 2017-12-20  11:05:44
 Приобрести можно на веб-сайте http://mangoo77.mangoosteen.com

Хотим предложить вам чудодейственное средство для снижения веса Mangoosteen. С ним реально избавиться от 10 kg за недели.

Дерево гарциния произрастает в Азии. Плоды растения имеют замечательные особенности. Во флакончике содержится более 25 плодов этого замечательного растения. Плоды с дерева мангустин помогают растопить излишнею липидную ткань. А также положительно влияют на организм в комплексе. Специфика производства препарата, а также специальная упаковка помогают сохранить все полезные свойства растения.

Главным веществом сиропа Мангустина являются плоды с дерева гарциния, в них имеется большое число полезных микроэлементов. Благодаря компоненту ксантону, которое в больших количествах содержатся в плодах, сильно притормаживаются процессы окисления в организме. Окись дифениленкетона является одним из самых мощных антиокислителей. В плодах растения мангкут вдобавок есть различные группы витаминов и микроэлементы. Приобрести сироп Мансустина возможно на сайте http://mangoo77.mangoosteen.com.
CraigGom - 2017-12-20  00:55:52
 Приобрести можно на веб-сайте http://mangoo77.mangoosteen.com

Предлагаем нашим клиентам инновационное средство для снижения веса Mangoosteen. С ним возможно избавиться от 15 кг за недели.

Дерево мангостин произрастает в Малайзии. Плоды растения обладают удивительными особенностями, которые были взяты за основу препарата Mangoosteen. Во флакончике имеется более 25 плодов этого удивительного растения. Плоды с растения мангкут помогают растопить лишнюю липидную ткань. А также положительно влияют на человека в целом. Специфика изготовления средства, и уникальная упаковка позволяют сберечь все полезные свойства растения.

Основным веществом сиропа Мангустина являются фрукты с дерева гарциния, в которых имеется огромное количество полезных элементов. Благодаря веществу ксантону, которое в громадных количествах содержатся во фрукте, значительно замедляются окислительные процессы в теле. Окись дифениленкетона признана одним из самых мощных антиокислителей. В плодах дерева гарциния к тому же содержатся разнообразные витамины и микроэлементы. Купить сироп Mangoosteen можно на интернет-сайте http://mangoo77.mangoosteen.com.
Charlespreot - 2017-12-19  23:53:18
 Последние новости здоровья здесь [url=http://promedonline.net/]promedonline.net[/url]
CraigGom - 2017-12-19  23:52:32
 Приобрести можно на веб-сайте http://mangoo77.mangoosteen.com

Предлагаем вам инновационное средство для похудения Mangoosteen. С ним возможно избавиться от 15 килограмм за 14 дней.

Дерево гарциния растет на Филиппинах. Плоды растения имеют потрясающие свойства. Во флаконе содержится около 25 плодов данного замечательного дерева. Плоды с дерева мангостин помогают сжечь излишнею жировую ткань. И отлично воздействуют на организм в целом. Технология производства препарата, и специальная упаковка позволяют сохранить все удивительные свойства мангостана.

Главным веществом сиропа Mangoosteen являются плоды с растения гарциния, в них содержится большое количество полезных элементов. Благодаря веществу ксантону, которое в громадных дозах содержатся в плодах, значительно тормозятся окислительные процессы в теле. Ксантон признается одним из наиболее мощных антиоксидантов. В плодах дерева мангостин вдобавок содержатся разнообразные группы витаминов и элементы. Приобрести сироп Mangoosteen возможно на интернет-сайте http://mangjoo77.mangoosteen.com.
Abrokgof - 2017-12-19  23:48:37
 Адекватные отзывы о лучших товарах в сети

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

Закономерно, что перед заказом и стартом использования таких вещей лучше зайти на ресурс с отзывами и изучить опыт других людей, отличный пример развёрнутого отзыва вы можете посмотреть на странице [url=https://otzavik.ru/artropant-otzuvu/]крем артропант аналог[/url]

Всегда помните про то, что употребление любых средств медицинского назначения надо согласовывать с докторами, а на заниматься самодеятельностью.
Bobby78 - 2017-12-19  22:12:47
 Рецепты от шеф повара , самые вкусные блюда для всех праздников, здесь вы можете посмотреть рецепты от нашего шеф повара.[url=http://cookery-news.ru]cookery-news.ru[/url]
VitaliyMof - 2017-12-19  06:30:46
 [url=https://youtu.be/PwG93i5RoaI]Нотариусы при сделки с недвижимостью [/url]
DimaTskdiasp - 2017-12-17  23:31:26
 Примерно, около страховании перевозки леса разве пиломатериалов мы не несем ответственности за изменение качественных характеристик груза, вызванное влажностью.
быстрая доставка
У вас должны быть собраны причина на каждую транспортную компанию разве частного предпринимателя.
Экспресс-доставка авиатранспортом
Быть выгрузке получатель обнаружил, что фрагмент мешков повреждена и намокла.

заказать газель
[url=https://gruzoperevozki-vtomske.ru/]заказать газель[/url]
https://gruzoperevozki-vtomske.ru/ - услуги грузотакси

Личный опыт
Основная желание для российском рынке грузоперевозок - это значительное умножение конкуренции.
Коли страховая число невелика, то она выплачивается мгновенно после представления документов.
Остается пожелать удачи и успехов в этой деятельности.
Небольшой вес.
KatyamMayop - 2017-12-17  22:04:13
 К боковым прутам привариваем уши, крючки тож петли.В идеале температура внутри склада не должна понижаться ниже 14 - 15 градусов Цельсия;Существует порядочно видов ножниц сообразно металлу: ручные (свободно режут утонченный металл и позволяют правильно следовать линии реза), шлицевые (с их через делают прямолинейные и криволинейные резы; основное преимущество - продукт в стесненном, ограниченном пространстве, присутствие этом ценз реза сохраняется) и гильотинные ( такие ножницы обладают самой высокой точностью реза между всех видов и сохраняют покрытие разрезаемого металла).СЛОВНО ИЗГОТОВИТЬ КОВАНОЕ ИЗДЕЛИЕ?Болтовое соединение
трубы оцинкованные
[url=https://metal-moscow.ru/metalloprokat/cvetnye-metally/list-alyuminievyj-riflenyj.html]алюминиевый лист рифленый[/url]
https://metal-moscow.ru/metalloprokat/ugolok/ravnopolochnyj/50x5.html - уголок 50х50х5 цена за метр

Вы можете сконструировать теплицу из арматуры самостоятельно.Достоинство инструмента в часть, что им можно уговаривать практически всякий металл, главное - приобретать правильные расходные материалы.Материалы, которые лежат для открытых полках, накрываются материалом сообразно типу туаль иначе маркизет.Имя предприятия изготовителя и потребителя;Снаряд создает спиралевидные, кольцевидные заготовки, а также волны и завитушки.
EgorrodAntic - 2017-12-17  20:29:25
 В отдельно тяжелых случаях, если нет никакой возможности наладить естественное ход воздушных масс, прибегают к созданию вентиляции смешанного типа.Допустимы:Для заборов используется профнастил с цветным полимерным покрытием практически только спектра RAL.Благодаря такому решению достигается точно имитация сайдинговых панелей, однако около этом хата облицован натуральным деревом.В любом случае, обещать дозволено наиболее заслуженный архитектурным требованиям материал.Область применения у каждой разновидности своя.Керамзитобетонные блоки
строительные материалы в ростове на дону
[url=http://кирпич-декор.рф/cat/stenovie-materialy/clinker-brick/]купить облицовочный кирпич[/url]
http://кирпич-декор.рф/cat/stenovie-materialy/ceramic-brick/ - кирпич цена

Класс АНеестественный материал в составе которого имеются древесные волокна.Лиственные породыНеестественный вещь, но качественное покрытие экологически безопасно.Двери покрытые ламинатомПрактичность и сложность уходаСухие доски проще сберегать, возделывать и приглядывать после ними в процессе эксплуатации.
RostovSlode - 2017-12-17  18:52:17
 Это повышает качество поступающих текстов и экономит минимум два часа вашего времениВедь вы же многое можете рассказать, надо как спроситьВ этот свидетельство надо добавлять страницы, которые являются целевыми и будут рождать трафикОпираясь для эти причина, мы предложили структуру сайта, которая позволила желание распределить собранные ключевые запросы по разделамПолучив информацию через эксперта, скомпонуйте ее в финальный текст и создайте оформление
продвижение сайта ростов
[url=https://skgroups.ru/]продвижение сайта[/url]
https://skgroups.ru/ - Заказать Seo продвижение сайтов Ростов

Здесь будет град нюансов и оптимизатор может находиться прав в своем распределении, только должен это обосновать»,Нет я не буду распинаться по поводу того как выбрать тему для статьи, точно структурировать статьи и как черкать по 8 статей в неделюАлексей Соловьев, директор сообразно развитию рекламного интернет-агентства x10Привлекая новых клиентов, не забывайте о существующих, старайтесь увеличить объем продаж за счет работы с нимиРазбивка текста заголовками сделает его удобным как для поисковой системы, так и для ваших клиентов
Nextmusic.me - 2017-12-17  14:28:23
 [url=http://nextmusic.me/][img]http://nextmusic.me/images/online-music.png[/img][/url]
скачать tho
sectide темные танцы frank walker angel falls feat sterling fox скачать princess nokia anomaly скачать dj dastan mp3 skachat bali bandits edm party extended mix скачать vk
[url=http://nextmusic.me/]здесь[/url]
JerryClumn - 2017-12-17  06:59:04
 kmgjqbb

http://www.crescentmoonmusic.co.uk/468-under-armour-curry-3-white.htm
http://www.netconinformatica.it/woolrich-negozi-veneto-996.php
http://www.die-liga-der-aussergewoehnlichen-gentlemen.de/827-zx-flux-damen-blumen.html
http://www.bar-ten.co.uk/646-puma-king.htm
http://www.adidaszxfluxrouge.fr/506-adidas-chaussure-zx-flux-noir

[url=http://www.occhialidasolevintage.it/373-ray-ban-clubmaster-aluminium.php]Ray Ban Clubmaster Aluminium[/url]
[url=http://www.nikeoutletonline.nl/011-nike-schoenen-maat-32.jsp]Nike Schoenen Maat 32[/url]
[url=http://www.gamesmastertv.co.uk/adidas-nmd-runner-monochrome-black-282.htm]Adidas Nmd Runner Monochrome Black[/url]
[url=http://www.miglioricasinoonlineitaliani.it/abbigliamento-belstaff-372.php]Abbigliamento Belstaff[/url]
[url=http://www.timberlandsneakerssale.nl/timberland-674.html]Timberland[/url]
RobertGuevy - 2017-12-17  06:06:18
 dmdovbp

http://www.niksilverprezzo.it/nike-air-max-bw-2016-787
http://www.bdmtv.fr/256-veste-moto-belstaff-occasion.html
http://www.m5studios.co.uk/392-ugg-fluff-flip-flop.html
http://www.fl-webdesign.de/955-woolrich-jacke-fleck.shtml
http://www.buy-ps3.co.uk/vans-top-10-shoes-547.htm

[url=http://www.lionssavja.se/moncler-affär-göteborg-164.htm]Moncler Affär Göteborg[/url]
[url=http://www.pumasneakersgoedkoop.nl/puma-schoenen-dames-wit-230.htm]Puma Schoenen Dames Wit[/url]
[url=http://www.sunglassesoutletuk.nu/ray-ban-0013f-011.htm]Ray Ban 001/3f[/url]
[url=http://www.evasmaleri.se/723-parajumpers-outlet-sverige.asp]Parajumpers Outlet Sverige[/url]
[url=http://www.hotel-ligabue.it/collezione-piumini-belstaff-498.asp]Collezione Piumini Belstaff[/url]
SvetlanaJem - 2017-12-17  03:15:50
 Они лучше формируют сердце, да и поддержка надежнее.
Дерзкая, сексуальная, открытая или же обратно скромная модель.
Для повседневной носки женщины зачастую выбирают трусики-слипы, полностью закрывающие ягодицы, с резинкой для талии, либо бедрах, широкой боковой планкой, но около обтягивающие багаж такое платье не разительно подходит, так наравне является страшно заметным, в такой ситуации больше походят модель-стринги иначе танга.

купить туфли женские недорого
[url=https://cheap-shoping.ru/zhenshhinam/zhenskaya-obuv/kupit_zhenskiye_oksfordy/]полуботинки оксфорды женские купить[/url]
https://cheap-shoping.ru/zhenshhinam/kuplyu_aksessuary_zhenskiye/kupit_zhenskiye_chasy/ - купить женские часы недорого

Оно всего чуть намекает, однако совершенно не обнажает только, что скрывается почти ним.
Это модно.
Появились же стринги 10 лет назад.
DimizatAcext - 2017-12-17  00:21:28
 Когда это так, то клиент получает цепь неоспоримых преимуществ: от оперативного информирования о местонахождении груза в определенный момент времени предварительно сокращения издержек для полностью комплекс услуг.
Выбрать надёжного партнёра для международной перевозки от «двери до двери» становится всё сложнее.
Каждая страховая общество действует на основании лицензии, выданной государством, и специального документа - правил страхования, которые составляются самой компанией.
В результате заказчик лично убеждается в книга, который присказка «жидомор платит дважды» — не пустая толки, а точно народная мудрость.
Это настоящий бюджетный для нынешний погода разночтение доставки.

грузоперевозки томск газель
[url=https://vk.com/gruzotaksi_tomsk]грузотакси томск газель[/url]
https://vk.com/gruzotaksi_tomsk - грузовое такси томск

Если же страхователь до выплаты получил от третьих лиц замена изза потеря, страховая общество оплачивает ему разницу между суммой, подлежащей оплате сообразно условию договора, и полученной суммой.
Пример 2
д) имя нового грузополучателя.Когда же общество по принципиальным соображениям хочет застраховать какой-то из рисков, относящийся к исключительным случаям (например, риск гибели груза в результате военных действий, если маршрут перевозки лежит посредством районы военных действий), то ради этого в контракте следует исполнять оговорку, сообразно которой в перечень страховых случаев будут включены эти риски.
Страховая премия - сумма, которую страхователь обязан выплатить страховой компании (страховщику).
Круг показывает, сколько такая экономия рискованна, беспричинно словно присутствие повреждении или гибели груза убытки могут составить весьма существенную сумму.
<<[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] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.