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ářů(8992)
PedroMex - 2017-03-16  22:29:08
 Стоило мне брезгливо отшатнуться от отнюдь не блещущей чистотой конструкции, как мой студенческий, от рывков вывалившийся из мелкого верхнего кармашка, красиво шлепнулся прямо в черную дыру.

http://tripkr.ru/12097.php

http://wersys.ru/28-11-2016-2.php

http://docvirus.ru/30-11-2016-10.php
Kellysak - 2017-03-16  21:39:23
 Дорогие друзья!

Если Вы совершаете покупки в интернете, то наверняка не откажетесь от возможности сэкономить деньги. Мы хотим познакомить Вас с сервисом, позволяющим возвращать часть денег, которые Вы тратите на покупки.

Данную возможность предоставляет [url=http://debedrost.ml]сервис[/url], который работает по системе "кэшбэк". Кэшбэк - это механизм покупок, при котором вместо затрат на рекламу, магазин возвращает часть денег своим клиентам.
http://debedrost.ml
Как начать экономить на покупках?
Зарегистрироваться в этом [url=http://debedrost.ml]сервисе[/url] http://debedrost.ml
Установить расширение для браузера для увеличения суммы кэшбэка (по желанию)
Перейти на любой сайт-партнер сервиса непосредственно с самого сайта.
Оформить заказ и получить кэшбэк

[url=http://debedrost.ml]Узнать больше!!![/url] debedrost.ml
Prostitutes - 2017-03-16  21:13:08
 Дорогие Индивидуалки http://links.orthodoxworld.ru/aaaaaY
PrestonBrela - 2017-03-16  20:52:41
 Маятник отметил маршрут, который проходил через спокойные пригородные улицы.

http://yazikuspeha.ru/26-11-2016-18.php

http://mstag.ru/plagin-dlya-aimp-3.php

http://garmoniaclub.ru/10-2016-469.php
Sergei#inkomoff[EdhuqesofzejsVI,2,4] - 2017-03-16  18:57:21
 Народ, это не спам. Ниже список сайтов-мошенников,
которые обманывают людей.
Все отзывы на них вымышленные.
Они сотрудничают с автосалонами-лохотронами
[url="http://avtosalon-review.ru/"]прон отзывы[/url]
[url="http://otzivalko.ru"]автосалоны отзывы [/url]
[url="http://kritika.su"]относительный автосалоне[/url]
[url="http://rusavtodiler.ru"]отзывы[/url]
[url="http://xn--80aaf1bkbccckpk.xn--p1ai/"]автосалоны отзывы[/url]
[url="http://xn----8sbahbbnyi0aqgkcbs0akg.xn--p1ai/"]прон отзывы[/url]
Horobelt - 2017-03-16  17:02:41
 девочки по вызову симферополь проститутки с клуба максимус
[url=http://hger.ru.host1568002.serv65.hostland.pro/index.php?we=219]проститутки город москва станция метро беляева[/url] шлюхи в пскове [url=http://hget.ru.host1568002.serv65.hostland.pro/index.php?we=385]проститутки в коммунарке[/url] проститутки анал ярославля [url=http://hgeer.ru.host1568002.serv65.hostland.pro/index.php?we=276]шикарные проститутки метро калужское[/url] проститутки ра чыхино проститутки архипо осиповки проститутки старые м курская [url=http://hger.ru.host1568002.serv65.hostland.pro/index.php?we=372]шлюхи тоже платят censored с канала o la la[/url] ебеться пьяна я шлюха [url=http://hget.ru.host1568002.serv65.hostland.pro/index.php?we=522]проститутка артёмовский свердловская обл[/url]
проститутки нагатино садовники 2000 [url=http://hgeer.ru.host1568002.serv65.hostland.pro/index.php?we=649]девочки по вызову луганск[/url] [url=http://hger.ru.host1568002.serv65.hostland.pro/index.php?we=142]проститутка мишель москва[/url] индивидуалки на автозаводской рыжим шлюхам кончают на лицо
проститутки в каменец подопьске проститутки москвы беляево конького [url=http://hget.ru.host1568002.serv65.hostland.pro/index.php?we=422]телефон проститутки г скопин[/url] путаны сургуте индидуалки
дешевые путаны новосибирск порно шлюх постарше [url=http://hgeer.ru.host1568002.serv65.hostland.pro/index.php?we=1426]проститутки город пенза[/url] проститутку в москве метро дмитровская азиатские проститутки в москве
[url=http://hger.ru.host1568002.serv65.hostland.pro/index.php?we=651]проститутки москвы м юго западная[/url] порно красивых проституток
[url=http://hget.ru.host1568002.serv65.hostland.pro/index.php?we=1032]проститутки на велозоводской[/url] путаны с номерами телефона новый уренгой проститутки москвы м аэропорт
проститутки на калужском шоссе снять путану м бауманская [url=http://hget.ru.host1568002.serv65.hostland.pro/index.php?we=1176]проститутки для семейной пары порно[/url] проститутки обучают девственников
[url=http://hgeer.ru.host1568002.serv65.hostland.pro/index.php?we=1374]золотой дождь знакомства[/url] проститутки краснодар темнокожие проститутки в пензе проститутки в пензе за 500 рублей
[url=http://hger.ru.host1568002.serv65.hostland.pro/index.php?we=460]ольга рапунцель из дом 2 проститутка[/url] заказать проститутку отзывы
[url=http://hget.ru.host1568002.serv65.hostland.pro/index.php?we=609]шлюхи на улице за 1000 рублей[/url] проститутки приморско ахтарска эротический массаж строгино
[url=http://editemospes.com/index.php?action=profile;u=47]http://editemospes.com/index.php?action=profile;u=47[/url] [url=http://9wyx.cn/home.php?mod=space&uid=8013]http://9wyx.cn/home.php?mod=space&uid=8013[/url] [url=http://alaniapw.esy.es/forum/index.php?members/horacerathy.173/]http://alaniapw.esy.es/forum/index.php?members/horacerathy.173/[/url] [url=http://forumezoterika.ru/user/6226/]http://forumezoterika.ru/user/6226/[/url] [url=http://nordlove.ru/home.php?mod=space&uid=21346]http://nordlove.ru/home.php?mod=space&uid=21346[/url]
GoutldKep - 2017-03-16  15:47:25
 gout vs vegeta
There are any connected with ways manage gout health care. Natural remedies are some of the most successful, and produce the fewest side effects. For those people who try to avoid medicines filled with chemicals and additives, must take this activity the to be able to go.

Home therapy of gout are the best treatment ways. When the pain has not reached the unbearable level yet, the how to reduce pain would be by herbal remedies. Though people don't quite have faith in home remedies nowadays, they are the easiest and cheapest methods to treat any disease. You'll find of treatments that is done for gout before doctor has in order to become called. Good gout home treatment would be water drinking. People are asked to drink a minimum of one to two liters water every session. Water is the one of extremely home therapy of gout. The crystallization of uric acid is simply because of the dehydration in the human metabolism. Thus, when the water level increases, the dehydration decreases. Thus the odds of the uric acid crystallizing one other comparatively quantity.



The a lift is you just have have a wfi connection to advice! This is where natural gout remedies come throughout. Most people use natural gout treatment - or home remedies, implementingwithin their gout management campaign.

Research demonstrates that Omega 3 fish oil has extremely - and natural - anti-inflammatory properties - without causing harmful side results of the kind that often are associated with anti-inflammatory medicines. Omega 3 fatty acids can rise to the top as must force inside your fight against joint aggravation. It can provide natural relief for gout.

You really should know triggers this miserable condition. Urates is at fault. Normally, your kidneys will gather excess uric acid from your pc. If it doesn't, the acid forms sharp little crystals that go your extremities (usually your big toes) and lodge there, causing sharp, intense pain. Excess is caused either with a dysfunctioning kidney, eating lots of foods elevated in uric acid, or the body producing plenty of of it on some.

This might crazy but charcoal is really actually a company acid neutralizing agent. There are ways on this it for quick rest from gout but probably most effective way would be to drink it. Take a 1/2 teaspoon of charcoal powder and mix it with a liquid of the choice(excluding beer which will only make your gout worse).
http://www.asian-teen-tube.com/cgi-bin/crtr/out.cgi?url=https://drive.google.com/file/d/0B1RhFRQs7EqVOFM0a1hEMTEydlE/view
http://www.mountprospect.org/redirect.aspx?url=https://drive.google.com/file/d/0B1RhFRQs7EqVOFM0a1hEMTEydlE/view
http://www.aftllc.com/leaving.php?url=drive.google.com%2Ffile%2Fd%2F0B1RhFRQs7EqVOFM0a1hEMTEydlE%2Fview
http://tracker.marinsm.com/rd?cid=esfyia2vf0&lp=http%3A//drive.google.com%2Ffile%2Fd%2F0B1RhFRQs7EqVOFM0a1hEMTEydlE%2Fview
http://www.evansville.in.gov/redirect.aspx?url=https://drive.google.com/file/d/0B1RhFRQs7EqVOFM0a1hEMTEydlE/view

Omega 3 fats definitely are of importance to your your well-being. The have to taken in as part of the diet - the human body does not produce all of them with. Besides fish, discover find these oils in the most vegetables. On the list of best plant sources of Omega 3 fats look for flaxseed gasoline. Flax seed oil contains around 50% more omega fats than do fish. Shouldn't be a really perfect part of vegan and vegetarian meal plans. Also flaxseeds contain fatty acids of the Omega 6 kind (as linoleic acid).

[url=http://www.dcyf.org/redirect.aspx?url=https://drive.google.com/file/d/0B1RhFRQs7EqVOFM0a1hEMTEydlE/view ]goutweed osrs [/url]
PatrickCrync - 2017-03-16  15:01:45
 Youtube super trend video every day:
[url=http://getautos.ru/annie96-is-typingthe-creepiest-text-ever-reaction.html]http://apple-fresh.ru/10-uzhasnykh-redkikh-boleznei-vsekh-vremen.html[/url]
Stevenundes - 2017-03-16  05:42:59
 Как заработать в интернете уже сегодня

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

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

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

Вот ещё статьи вам помогут начать получать доход в интернете:
[b] Бинарные опционы мнение специалистов [/b] [url="http://9binaryoptions.com/ru"]Бинарные опционы мнение специалистов[/url]
[b] Binary options brokers Review [/b] [url="http://9binaryoptions.com/brokers.html"]http://9binaryoptions.com/brokers.html[/url]
[url=http://9binaryoptions.com/uploads/otzivi/skachat-tochniy-indikator-dlya-bina
ogo-optsiona.htm] Скачать точный индикатор для бинарного опциона [/url]
http://9binaryoptions.com/uploads/otzivi/polosi-bollindzhera-dlya-bina
ih-optsionov.htm [b] Полосы боллинджера для бинарных опционов [/b]
[url=http://9binaryoptions.com/uploads/otzivi/inte
et-zarabotok-bez-vlozheniy-na-domu.htm] Интернет заработок без вложений на дому [/url]
http://9binaryoptions.com/uploads/otzivi/bina
ie-optsioni-eto-realno-ili-razvod.htm [b] Бинарные опционы это реально или развод [/b]
MaycoPr - 2017-03-16  04:13:53
 ...фу мля, наконецто ..спс

---

амброзия это [url=http://supperfriend.com/index.php?option=com_k2&view=itemlist&task=user&id=230080]здесь[/url]
TravepEi - 2017-03-16  01:36:30
 кульно

---

Carding Auctions & Casino [url=http://avinpro.ru/index.php?option=com_k2&view=itemlist&task=user&id=159374]здесь[/url]
Thomasdop - 2017-03-16  00:13:25
 В конце [url=http://stylefocus.net/]http://stylefocus.net/[/url] апреля мне довелось день побыть в гостях у пеликанов,
понаблюдать после их жизнью.
Место пеликанов находится практически для раскатной части
Дамчикского [url=http://stylefocus.net/]http://stylefocus.net/[/url] участка Астраханского заповедника, в колках тростника…
36 фото
Фотографии и текст Евгения Полонского :

В конце апреля мне довелось сутки быть в гостях у пеликанов,
понаблюдать за их жизнью. Место пеликанов находится практически для раскатной части Дамчикского участка Астраханского заповедника, в колках тростника… РАЗГЛЯДЫВАТЬ ДАЛЬШЕ:
Lstrguiffic - 2017-03-15  23:58:23
 The post brought to think left a lot of thinking ...

[url=http://forum.negs.web.id/showthread.php?t=228824&p=288327#post288327] Quite interesting course. I cant subscribe to your every word, but in general agree.
[/url]

http://bbs.zgjiangxi.com/forum.php?mod=viewthread&tid=140263&pid=343388&page=2199&extra=#pid343388 djhf784yh3oh873
Jamessot - 2017-03-15  22:46:33
 Вы попали в самую точку. В этом что-то есть и я думаю, что это хорошая идея.

Предлагаю Вам посетить сайт, с огромным количеством статей по интересующей Вас теме. [url=http://shanson.ucoz.ru/forum/40-4554-1#37588]http://shanson.ucoz.ru/forum/40-4554-1#37588[/url]

Хоть убей, не знаю. [url=http://www.mun-brateevo.ru/user/caeroDofe/]http://www.mun-brateevo.ru/user/caeroDofe/[/url]

Дождались... [url=http://your-house.3dn.ru/index/8-7589]http://your-house.3dn.ru/index/8-7589[/url]

Я извиняюсь, но, по-моему, Вы ошибаетесь. Могу это доказать. Пишите мне в PM. [url=http://soccerforum.3dn.ru/index/8-68153]http://soccerforum.3dn.ru/index/8-68153[/url]

В этом что-то есть. Благодарю за помощь в этом вопросе, теперь я буду знать. [url=http://akho-site.ucoz.ru/index/8-27189]http://akho-site.ucoz.ru/index/8-27189[/url]
ManiloAP - 2017-03-15  21:42:04
 Недавно заказала себе смарт-карту City Life и не нарадуюсь!
Сразу после оплаты ей уже можно пользоваться!
Стоит она 1250 рублей, но за такую сумму получаешь гораздо больше!
Скидки и кешбэк в онлайн-магазинах, ресторанах, такси в Москве и СПб,
а скоро и во всех города России, на авиабилеты, отели, скидка 20% на мобильную связь,
и это далеко не полный перечень!
Компания развивается и предлагает стать её партнёром!
Порекомендовав её друзьям можно не только вернуть стоимость карты, но и заработать на этом))
Стоимость не реферальной карты 2000 рублей, но если пройти по реферальной ссылке, карта будет стоит всего каких то 1250 рублей!!
Которые оправдаются при первых же покупках. https://goo.gl/CivLeH
Если Вы ищите работу на дому или просто подработку в интернете
в компании реализована партнёрская программа которая позволяет прилично зарабатывать!
Для партнёров бонусом идут курсы обучения Английского языка (Яна Граусова) и
курсы Grant Cardone - стоимость этих курсов больше, чем стоит партнёрский пакет Бизнес! И это далеко не всё!! ))
City Life - это лучшие скидки и кешбэк по всей России и странам СНГ - в одной карте.
А также отличный способ начать свой бизнес с нуля.
Присоединяйтесь!! ))
Jamessot - 2017-03-15  20:41:32
 Не знаю.

Есть сайт, с огромным количеством информации по интересующей Вас теме. [url=http://mobisoft.com.ua/user/biaretilm/]http://mobisoft.com.ua/user/biaretilm/[/url]

Вы не могли ошибиться? [url=http://mouse.ucoz.ru/index/8-32060]http://mouse.ucoz.ru/index/8-32060[/url]

Вы ошибаетесь. Могу это доказать. Пишите мне в PM, поговорим. [url=http://vyshyvanka.ck.ua/user/biareRot/]http://vyshyvanka.ck.ua/user/biareRot/[/url]

Благодарю Вас за помощь в этом вопросе. У Вас замечательный форум. [url=http://football-news.3dn.ru/forum/7-113-2#81930]http://football-news.3dn.ru/forum/7-113-2#81930[/url]

Мне не ясно. [url=http://anigid.ucoz.ru/forum/3-546-2#2929]http://anigid.ucoz.ru/forum/3-546-2#2929[/url]
Harlotsbab - 2017-03-15  20:23:01
 Проститутки в Киеве дорого на час
Douglasnut - 2017-03-15  13:29:29
 AUC reserves the right to repeal, change, or amend the rules, regulations, and courses contained in this bulletin at any time.

http://kurskie-roditeli.ru/persuasive-essay-outline-template-pdf.php

http://samtgt.ru/02-2016-48.php

http://simpleapps.ru/2332.php

http://baniotdelka.ru/how-to-write-reference-page-apa-style-for-websites.php
BrandonBit - 2017-03-15  11:03:01
 Снизу из подвальной двери выскочили несколько воинов во главе с человеком в дорогих доспехах.

http://milanmoda.ru/11-11-2016-31.php

http://500brendov.ru/11-2016-1015.php

http://crimea-sea.ru/2433.php
Michaelinvep - 2017-03-15  07:42:17
 Всегда новые серии Шерлока здесь https://vk.cc/6m26WB
Заходи пообщаемся в чате


________________________________________
сериал шерлок этюд в розовых тонах
приключения шерлока холмса сериал 2013
шерлок холмс российский сериал
смотреть сериал шерлок 3 сезон 1
скачать сериал шерлок 2 сезон 3 серия

[url=http://serial-fans.ru/?userid=28244&template=serials_comments&serial_id=3]смотреть сериал шерлок лостфильм[/url]
[url=http://serial-fans.ru/?userid=28244&template=serials_comments&serial_id=3]смотреть сериал шерлок холмс 5 сезон[/url]
[url=http://serial-fans.ru/?userid=28244&template=serials_comments&serial_id=3]шерлок холмс сериал мориарти[/url]
[url=http://serial-fans.ru/?userid=28244&template=serials_comments&serial_id=3]смотреть воспоминания о шерлоке холмсе сериал[/url]
[url=http://serial-fans.ru/?userid=28244&template=serials_comments&serial_id=3]шерлок холмс первый канал новый сезон[/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] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.