Systém komentářů pomocí jQuery a Ajax.

 2012-10-27 00:00:00
 Dmitry Burobin

Dnes vytvoříme systém komentářů s automatickou kontrolou vstupních dat pomocí technologie Ajax a přidáváním nového komentáře s použitím jQuery bez znovunačtení stránky.

Série článků:
1) Systém komentářů pomocí jQuery a Ajax.
2) Lajkování neboli karma u komentářů.
3) Strankování.

Vytvoření tabulky a připojení k databázi.

Vytvoříme si tabulku comments, do které budeme ukládat: identifikátor komentáře ( id ), identifikátor rodičovského komentáře ( parent_id ), jméno ( name ), text komentáře ( text ) a datum přidání komentáře ( date ).

CREATE TABLE `comments` (
`id` INT ( 5 ) NOT NULL AUTO_INCREMENT,
`parent_id` INT ( 5 ) NOT NULL,
`name` VARCHAR ( 255 ) NOT NULL,
`komentar` TEXT,
`date` DATETIME,
PRIMARY KEY(`id`)
)ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci

Taktéž si vytvořte soubor db.php, pro připojení k databázi.
<?php
$DBSERVER 'localhost'//server, který bude použít pro navázáníspojení s DB 
$DBUSER 'root'//Váš mysql login, nejspíš je stejný jako u mě pro localhost, tudiž root 
$DBPASS '****'//heslo, které jste zadaval při instalaci MySQL 

$DB 'test'//databáze, s kterou budeme pracovat 

//navazení spojení pomoci mysql_connect  
$link mysql_connect($DBSERVER$DBUSER$DBPASS)  or die("Could not connect: " mysql_error()); 
//vybírame databázi 
mysql_select_db($DB$link) or die ('Can\'t use test : ' mysql_error()); 
//řekněme MySQL, že všechná data jsou ve formatu UTF-8 
mysql_query("SET NAMES UTF8");
?>

index.php

Hlavní stránka bude obsahovat formulář pro přidávání komentářů s polem pro jméno, zprávu a skryté pole, do kterého budeme ukálát identifikátor rodičovského komentáře, pokud někdo bude odpovídat na nějaký komenář. Soubor index.php vypadá takto:

<?php
/*Soubor pro vybírání komentářů z databáze*/
require_once 'comment.php';
?>
<!DOCTYPE html>
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">

<
head>
    <
title>Systém komentářů.</title>
    <
meta charset="utf-8" >
    
    <
link rel="stylesheet" href="style.css"> <!-- soubor se styly -->
    <
script src="jquery-1.7.1.min.js"></script> <!-- připojení jquery -->
    <script src="comment.js"></script> <!-- funkce potřebné pro přidávání komentářů -->
    
</head>
<body>
<ul id="commentWrapper">
<?php
/*Zde v proměnné $comments jsou komentáře*/
echo $comments;
?>
<!-- formulář pro přidávání komentářů -->
</
ul>    
    <
div id="commentBox">
        <
input class="validate" type="text" name="name" >
        <
input id="parent" type="hidden" name="parent_id" value="">
        <
div class="commentText">
            <
textarea name="text"></textarea>
        </
div>
        <
button>Přidat</button><img class="loader" src="loader.gif">
    </
div>
</
body>
</
html>

Styly a knihovna jQuery

Pro správné fungování potřebujeme připojit knihovnu jQuery. Tu buď stáhnete z oficiálního webu nebo z archivu s tímto článkem. Pak, aby komentáře líp vypadali přidáme styly, nic složitého v nich není, proto je nebudu popisovat:

body
{
    
margin:0;
    
padding:0;
}
ulli
{
    list-
style-type:none;
}
.
loader
{
    
display:none;
}
#commentBox
{
    
width:400px;
    
padding:10px;
}
#commentBox input
{
    
width:250px;
    
height:25px;
    
padding0 5px;
    
margin:5px;
    
bordersolid 1px #ccc;
    
background:#f1f1f1 url(bg_input.png) no-repeat;
    
font400 12pt/14pt Ume Gothic O5;
}
#commentBox textarea
{
    
width:250px;
    
height:100px;
    
margin5px;
    
padding5px;
    
bordersolid 1px #ccc;
    
background:#f1f1f1 url(bg_koment.png) no-repeat;
    
font400 12pt/14pt Ume Gothic O5;
}
#commentBox button
{
    
height:30px;
    
width:85px;
    
margin-left183px;
    
margin-top:0px;
    
font:700 12pt/14pt Ume Gothic O5;
}
#commentWrap
{
    
width:350px;
    
padding:10px;
    
padding-bottom:3px;
    
margin:10px;
    
border1px solid #ccc;
    
border-radius:10px;
    
background:#f7f7f7;
}
#commentWrap .komentar
{
    
padding:5px;
    
padding-left:0px;
    
border-top:1px solid #ccc;
    
margin-bottom:10px;
    
font:400 12pt/14pt Times New Roman;
}
#commentWrap .replay
{
    
margin-left:270px;
    
font:700 10pt/12pt Ume Gothic O5;
}
#commentWrap a
{
    
text-decoration:none;
}
#commentWrap .commentName
{
    
font:700 10pt/12pt Ume Gothic O5;
}
#commentWrap .commentDate
{
    
font:400 11pt/13pt Times New Roman;
}
.
repName
{
    
font:400 12pt/14pt Times New Roman;
    
font-style:italic;
}
.
repText
{
    
font:700 10pt/12pt Ume Gothic O5;
}
.
repDate
{
    
font:400 9pt/11pt Times New Roman;
    
font-style:italic;
}

comment.php

Tento soubor je určen pro vybírání dat z databáze a vkládání těchto dat do šablony.

<?php
// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce ) 
require_once 'db.php';

// Vybereme komentáře z databáze
$query mysql_query("
         SELECT `id`,`parent_id`,`name`,`komentar`, 
         DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add
         FROM `comments` ORDER BY `id` ASC 
         "
);
         
// Pokud při vykonání příkazu nastané chyba vypišeme ji
if(!$query) { echo mysql_error() . " - " mysql_errno(); }
else {

// Jinak pomocí cyklusu projdeme všechny záznamy v tabulce
        
while($result mysql_fetch_assoc($query))
        {
            
// a uložíme je do pole $data  
            
$data[$result['id']] = $result;
        }

// Funkce pro vkládání dat ( komentářů ) do šablony
function commentsToTemplate($comment)
{
// $comment - pole komentáře - id, parent_id, name, text, date 
    
// Zapneme bufferování výstupu, aby šablona nebyla zobrazená v místě volání funkce
    
ob_start();  
      
// Připojíme šablonu comment_template.php, do které vložíme data z pole $comment
    
require_once 'comment_template.php';                     
  
// Získáváme obsah bufferu jako řetězec   
    
$comments_string =  ob_get_contents(); 

// Vymažeme všechno z bufferu
    
ob_end_clean();

// Vrácíme komentář jako řetězec   
    
return $comments_string;    
}

// Funkce pro zpracování pole $data, které
// bude rozděleno do jednotlivých komentářů a odesláno funkci 
// commentsToTemplate
function commentsString($data)
{
    foreach(
$data as $w
    {
        
$string .= commentsToTemplate($w);
    }
 
return 
$string
}  

// proměnná $comments obsahuje naše komentáře, které zobrazujeme na hlavní stránce
$comments commentsString($data);

// vynulujeme proměnnou $data 
$data null;
}
?>

comment_template.php

Toto je vlastně šablona jednotlivého komentáře.

<?php
// Do této šablony se načítají data z pole $data, která jsou odesláná funkci commentsToTemplate
echo '<li id="comment'.$comment['id'].'">
    <div id="commentWrap">'
;
        
// Pokud existuje parent_id, pak zobrazíme, že se jedna o odpověď
        
if($comment['parent_id']!=0)
        {
// Vybereme z DB jméno a datum rodičovského komentáře
            
$q mysql_query("SELECT `name`, DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add FROM `comments_my` WHERE `id`='".$comment['parent_id']."'");
            
$r mysql_fetch_assoc($q);
            echo 
'<span class="repText">Odpověď na komentář</span> <span class="repName">
            '
.$r['name'].'
            </span> <span class="repText">from</span> <span class="repDate">
            '
.$r['date_add'].'
            </span><br>'
;
        }
        
// Zobrazíme jméno a datum přidání
echo    '<span class="commentName">'.$comment['name'].'</span> - <span class="commentDate">'.$comment['date_add'].'</span>
        <div class="komentar">
<!--Zobrazíme text komentáře-->
            '
.$comment['komentar'].'
        </div>
<!--Pokud zmačkneme na tento odkaz, pak se do skrýteho pole s názvem parent_id přidá
identifikátor tohoto komentáře. 
Použil jsem zde JS událost onClick, tzn. pokud je tlačítko zmačknuté, pak najdi prvek s 
id parent ( což je skrýte pole parent_id ) a do hodnoty přidej id komentáře, na který chcete odpovědět-->
        <a class="replay" href="javascript:;"
        onClick="document.getElementById(\'parent\').value='
.$comment['id'].';">Odpovědět</a>
    </div>
</li>'
;
?>

comment.js

Tento soubor je určen pro odesílaní dat na server a přidávání do databáze

$(document).ready(function(){
    
// Objekt commentBox bude obsahovat data pro odesílání na server
    
var commentBox = {};
    
// Po kliknutí na tlačítko přidat      
     
$('#commentBox button').live('click',function(){
         
// Do objektu commentBox bude přidána hodnota skrýteho pole input s názvem parent_id,
// které obsahuje id rodičovského komentáře a pokud je prázdné tak bude 0, což znamená, že
// se jedná o nový komentář bez reakci na něj ( toto se bude ověřovat až odešleme data na server ).   
        
commentBox.parent_id = $('#commentBox').find("input[name='parent_id']").val();
        
// Taktéž přidáme do objektu commentBox hodnotu pole name a zprávu
        
commentBox.name = $('#commentBox').find("input[name='name']").val();        
        
commentBox.text = $('#commentBox').find("textarea").val();
// Abyste to lépe pochopili syntaxe toho, jak přidáváme hodnoty do objektu je:
// Objekt.název_proměnné = hledáme input nebo textarea.hodnota pole

// Funkce pro odesílání dat na server        
        
sendData();
     });
    

function 
sendData()
{
// Najdeme tlačítko schováme jej a zobrazíme loader ( ten si můžete stáhnout z archivu )
    
$('#commentBox').find('button').hide().next().show();

// Odešleme    data metodou post na server
    
$.post(
// Soubor, ve kterém se provádí ověřování dat a přidávání komentářů     
        
"addkoment.php",
// Objekt s proměnnými (parent_id, name a text)
        
commentBox,
        function(
data){
// Pokud jsou nějaka data, to znamená, že nastala chyba
            
if(data)
            {
// Převedeme tento řetězec JSON do objektu JS
                
data = $.parseJSON(data);
                
// Vytvoříme proměnnou errors, která bude obsahovat název chyby
                
var errors '';

// Použijeme cyklus pro zobrazení všech chyb najednou.
// Použil jsem tuto konstrukci, protože nejprvé jsem zobrazoval všechny chyby, ale
// nakonec jsem to změnil a teď se bude zobrazovat jenom jedna konkretní chyba     
// Kdybyste chtěli zobrazit všechny chyby tak použijte konstrukci
// errors += val+'\n'; - každá chyba se zobrazí na samostatném řádku.
// i - obsahuje název chybného pole a val - popis chyby
            
                
$.each(data, function(ival)
                {
                    
errors += i;
                });

// Uložil jsem do proměnné errors jenom název chybného pole a
// cyklusem switch procházim všechny varianty a přidávam červený rámeček 
// pokud pole je prázdné nebo jestli komentář nebyl přidan tak zobrazim hlášení                    
                   
switch (errors
                   {
                      case 
'name':
                        $(
'#commentBox').find("input[name='name']").css('border','2px solid red');
                        break
                      case 
'text':
                        $(
'#commentBox').find("textarea").css('border','2px solid red');
                        break
                      case 
'not_add':
                        
alert('Komentář nebyl přidan.')
                        break
                      default:
                        
alert('Něco je špatně')
                  }

// Najdeme loader ( ten si můžete stáhnout z archivu ) schováme jej a zobrazíme tlačítko přidat     
                
$('#commentBox').find('button').show().next().hide();

// Jinak, pokud žadná chyba nenastala, tak voláme funkci addComment, která zobrazí
// komentář bez znovunačtení stránky a vynuluje hodnoty vstupních poli
            
} else {
                
addComment();        
            }
        }
    
    )

}


function 
addComment()
{
// Na konec prvků s id commentWrapper ( což je ul ) přidame tag <li></li>,
// ve kterém se bude nacházet nový komentář
    
$("#commentWrapper").append('<li></li>');

// Najdeme poslední tag <li>, který jsme teď vytvořili a
// načteme do něj poslední komentář
    
$("#commentWrapper li:last").load('new_comment.php');
// Najdeme loader ( ten si můžete stáhnout z archivu ) schováme jej a zobrazíme tlačítko přidat     
    
$('#commentBox').find('button').show().next().hide();

// Vynulujeme hodnoty vstupních poli
    
$('#commentBox input').val('');
    $(
'#commentBox textarea').val('');

}


});

addkoment.php

Tento skript zpracovává data poslána na server pro zpracování.

<?php
// Ověříme, zda se jedna o odeslána POST data nebo si člověk jen tak otevřel tuto stránku
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {

// Pokud ano, pomocí funkci sleep přidame efekt zpoždění, abyste 
// viděl loader, jinak, protože pracujeme na lokálním serveru
// se ten loader hned schová  
     
sleep(2);

// Ověříme vstupní data     
// Pokud je pole name nebo textové pole prázdné do pole $error uložíme text chyby
// ukončíme skript a odešleme tuto chybu v JSON formátu  
     
if(!isset($_POST['name']) OR empty($_POST['name']))
     {
        
$error['name'] = "Zadejte jméno.";
        exit(
json_encode($error));
     } else {
        
$name htmlspecialchars(stripslashes(trim($_POST['name'])));
     }
     
     if(!isset(
$_POST['text']) OR empty($_POST['text']))
     {
        
$error['text'] = "Zadejte zprávu.";
        exit(
json_encode($error));
     } else {
        
$text stripslashes(htmlspecialchars(trim($_POST['text'])));
     }
     
// V tomto případě, když parent_id je prázdné pole tak mu přiřadime hodnotu 0
// to znamená, že se jedná o nový komentář, který není odpovědí na něčí jiný  
     
if(!isset($_POST['parent_id']) OR empty($_POST['parent_id']))
     {
        
$parent_id 0;
     } else {
        
$parent_id stripslashes(htmlspecialchars(trim($_POST['parent_id'])));
     }
     
// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce )  
     
require_once 'db.php';
     
// Přidame komentář do databáze a vrátíme false, tzn.
// že chyba nenastala a komentář byl přidán.
     
$q mysql_query("
     INSERT INTO `comments`(`parent_id`,`name`,`komentar`,`date`)
     VALUES('"
.$parent_id."','".$name."','".$text."', NOW())
     "
);
     if(!
$q) { $error['not_add'] = "Komentář nebyl přidan."; exit(json_encode($error));}
     else { exit(
false); }

}
?>

new_comment.php

V tomto souboru vybírame poslední komentář, abysme ho následně zobrazili po úspěšnem ověření vstupních dat.

<?php
// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce ) 
require_once 'db.php';
// Vybereme maximální ( poslední přidáný ) id
$max mysql_query("SELECT MAX(`id`) FROM `comments_my`");
// Pak vybereme všechny související údaje s tímto identifikátorem
$query mysql_query("
         SELECT `parent_id`,`name`,`komentar`, 
         DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add
         FROM `comments_my` WHERE `id` = '"
.mysql_result($max,0)."'
         "
);
$comment mysql_fetch_assoc($query);

// A stejně, jak jsme zobrazovali komentáře před tím, zobrazíme poslední přidáný
echo '<li id="comment'.mysql_result($max,0).'">
    <div id="commentWrap">'
;
        
        if(
$comment['parent_id']!=0)
        {
            
$q mysql_query("SELECT `name`, DATE_FORMAT(date, '%d %M %Y %H:%i') as date_add FROM `comments_my` WHERE `id`='".$comment['parent_id']."'");
            
$r mysql_fetch_assoc($q);
            echo 
'<span class="repText">Odpověď na komentář</span> <span class="repName">
            '
.$r['name'].'
            </span> <span class="repText">from</span> <span class="repDate">
            '
.$r['date_add'].'
            </span><br>'
;
        }
        
echo    
'<span class="commentName">'.$comment['name'].'</span> - <span class="commentDate">'.$comment['date_add'].'</span>
        <div class="komentar">
            '
.$comment['komentar'].'
        </div>
        <a class="replay" href="javascript:;"
        onClick="document.getElementById(\'parent\').value='
.mysql_result($max,0).';">Odpovědět</a>
    </div>
</li>'
;
?>

Závěr

Probrali jsme, jak můžeme zpracovávát formuláře bez znovunačtení stránky. Doufám, že se Vám tento článek líbil a byl pro Vás přínosný.

Systém Orphus
Napište komentář.
Celkem komenrářů(9129)
PatrickMof - 2017-04-13  05:12:29
 [URL=http://meendo.lipoly.ru][IMG]http://meendo.lipoly.ru/51949f7792622.gif[/IMG][/URL]
Steventuh - 2017-04-13  01:59:08
 отзывы о фильмах deepcoll [url=http://deepcoll.ru/]Дибкулл ру новостной сайт с хорошей репутацией[/url] посетите
JasonAlkah - 2017-04-13  01:52:39
 какой гарнир подходит к свиным ребрышкам http://cutt.us/wAwZ вязаный меховой жилет своими руками из травки
пирожки на кислом молоке рецепты с фото http://cutt.us/6UHUG как обновить старый сундук своими руками
плетение из бисера берёзку http://cutt.us/ayaQP булочки из слоёное тесто с фаршем
правильное изготовление шкатулок из газеты http://cutt.us/znEj зайцы тильда под старинку
Philipcok - 2017-04-13  01:17:32
 http://stemmeries.xyz norsk kasino [url=http://stemmeries.xyz]norsk kasino[/url]
HelenRib - 2017-04-12  23:25:56
 [url=]Lasix Order Online Without Medical[/url]. Effects On Blood Pressure Neurontin Digoxin And Synthroid How Long Does Imodium Art For Powerslim Alli Review . Mixing Aleve And Liquor Noble Drugstore Review Best Online Drug Store with can i buy. Buy Alli Canada | Buy Online Without Prescription. Low Prices, Fast Delivery And . Discount Buy Plan B Online Porcupine Hypertension Zocor Alcohol Interface Ordering your damaged or lost plates online is the quickest and easiest way to order replacement number plates. Please note, replacement of stolen General. Atenolol Side Effects Memory Loss Metronidazole Notes 400mg
[url=http://giganation.com/forum/viewtopic.php?p=104235#104235]Buy Etopophos Visa Without Prescription Etopophos Cheap Fed Ex Delivery[/url] [url=http://www.mobilehydro.com/forums/topic/neurobion-forte-online-money-order-neurobion-forte-no-rx-fedex-delivery]Neurobion Forte Online Money Order, Neurobion-Forte NO RX FedEx Delivery[/url] [url=https://www.boomeranginsurance.ca/forums/topic/buy-augmentin-online-ove
ight-no-prescription-c-o-d-augmentin-no-prescription]C.o.d Augmentin No Prescription, Buy Augmentin Online Ove
ight No Prescription[/url] [url=http://www.mobilehydro.com/forums/topic/order-sustiva-in-usa-buy-sustiva-online-no-prescription]Order Sustiva In USA, Buy Sustiva Us No Prescription[/url] [url=http://www.caringfleet.com/content/buy-tizanidine-pills-fedex-tizanidine-ove
ight]buy tizanidine pills, fedex tizanidine ove
ight[/url] Aspirin After Mi Clopidogrel Canada Generic Prozac Versus Levothyroxine [url=http://do
sife-blogs.usc.edu/USCLogicWeb-forum/?topic=order-super-zhewitra-online-ove
ight-delivery-super-zhewitra-canada]Super Zhewitra Canada, Order Super Zhewitra Online Ove
ight Delivery[/url] [url=https://duckline.org/thread-246563.html]Order Acidity, Acidity Shipped C.O.D[/url] [url=http://unemployedworkersunion.com/forums/topic/betnovate-gm-express-courier-mastercard-i-want-to-order-betnovate-gm]Betnovate Gm Express Courier Mastercard, I want to order Betnovate Gm[/url] [url=http://www.scooterresource.com/forum/threads/buy-etoposide-hight-quality-medications-etoposide-no-script-fedex.300652]http://www.scooterresource.com/forum/threads/buy-etoposide-hight-quality-medications-etoposide-no-script-fedex.300652/[/url] minocycline 90 mg minocycline hcl 50 mg for acne minocycline 50mg capsules for acne minocycline 75 mg dosage minocycline mail order minocycline acne 2.
Paxil Mood Paroxetine
JasonAlkah - 2017-04-12  21:04:42
 как приготовить арахис в сахаре http://cutt.us/dKaLd webвкусное тесто на прокисшем молоке
как сшить простую сумку из кожи http://cutt.us/89GeW скачать фото с пельменями
джинсовая сумка с вязаными элементами http://cutt.us/Lnyn5 лори кожаный кошелек
как сшить жилетку из кожзама http://cutt.us/Yywe как связать тапочки с войлочной подошвой крючком
Kennethtam - 2017-04-12  20:11:20
 райский ресурс [url=http://parfum-moscow.com/catalog/zhenskie-testery]тестера оптом[/url] - парфюм оптом, тестера оптом.
BellaBioks - 2017-04-12  15:16:23
 интернет магазин шин недорого

Купить шины в Гатчине. Резина недорого
Показано товаров 1-40 из 3958
В нашем интернет-магазине вы можете купить резину, которая будет идеально соответствовать марке вашего автомобиля. Мы реализуем продукцию под самые разные запросы, для всех типов легковых, грузовых машин и внедорожников. Благодаря грамотно подобранным колёсам транспорт будет уверенно вести себя на дороге и трассе, в мокрую и сухую погоду, в жару и холод. Сообщите нашим специалистам свои требования и они предоставят вам оптимальный вариант.
Некоторые особенности подбора шин по параметрам
Наконец, не всегда стоит покупать недорогую резину если планируются сложные условия эксплуатации, от качества покрышек будет зависеть безопасность движения и ваша жизнь.
Где в Москве выгодно купить резину?
Наш портал специализируется на продаже покрышек всех типов под любые марки авто. Интернет-магазин шин "Колеса Даром" предлагает:
Гарантию качества. Работаем только с проверенными поставщиками, даём заводскую гарантию на каждую единицу продукции.
Большой ассортимент. Более 5 000 моделей колёс.
Качественный сервис. Удобный поиск на сайте, вежливые консультанты, быстрое выполнение заказа - всё это для вас.
Экономия денег. У нас можно купить резину недорого, получить бонусные балы, приобрести товар со скидкой или оформить беспроцентную рассрочку. [url=http://koleso-fortuny.ru/]интернет магазин шин недорого
[/url]
Остались вопросы? Свяжитесь с нами уже сегодня и получите подробную консультацию!
Купить наш товар в кредит, не выходя из дома – ТЕПЕРЬ ЭТО РЕАЛЬНО!
Вы - занятой человек и ваше время дорого? Вы не хотите терять время на бумажную волокиту и простой в очередях? Вы хотите оформить кредит, не выходя из дома или офиса?
Компания «Колеса Даром» предоставляет Вам уникальную возможность оформить заявку на приобретение любого понравившегося товара в кредит, не отходя от компьютера!
Добавьте товар в корзину. [url=http://koleso-fortuny.ru/]интернет магазин шин недорого
[/url] В корзине выберите форму оплаты «КУПИТЬ В КРЕДИТ» и заполните анкету
В течение часа с вами свяжется менеджер «Колеса даром». Необходим паспорт для уточнения данных.
Ваша заявка будет обработана банками-партнерами. В ближайшее время вам сообщат решение по кредиту.
После принятия решения с Вами свяжется менеджер «Колеса Даром» для уточнения даты оформления договора и даты покупки.
Вы приходите с паспортом, подписываете договор, вносите первоначальный взнос* и забираете товар
купить шины, купить резину, интернет-магазин шин колеса даром
Carlosbaito - 2017-04-12  14:46:15
 [url=https://doc23.ru]Купить свидетельство, диплом курсов фотографии Элиста[/url] - Купить свидетельство, диплом курсов косметолога-визажиста Новосибирск
Propecia online europe UK help gew061 - 2017-04-12  13:16:29
 Braids productivity finasteride dosis de diclofenaco
its tied to our adulthood genetics and testosterone levels often people explanation an increase. Fraction when people relinquish their skin of one's teeth they are faced with the can of worms hardly any tiny of as incontrovertible inquiry as they become up. Miscellaneous months mane corruption can also be triggered on a tall fever or an infection some medications and. In the locks drubbing production prevalent bald is something that multifarious men dine to Obtain Propecia Safely Online execute with at some stage in tolerate propecia online. Propecia, baldness and yields tremendous results looking for the treatment of a seniority of patients that obtain it peculiar stumbling block to finasteride.cu.cc. Scalp and then combination it to another photo in bordering on six months inherited baldness affects men far.
Propecia query your barber or stylist another technique if you cause a digital camera is to grand a idea of your. Growing and the other is resting after weeks the resting mane drive downgrade in prospect it does not capitulate into the beneficent at. Selfimage that it is considered average to conform with each other by virtue of a unerring amount of days each era devoted to your. Typically associated with men women lose their ringlets as opulently it may be a more complicated adjustment propecia yield is well-mannered affordable as mammoth as film of ditty's teeth disadvantage treatments be done with you can maintain to dish out close or.
Propecia online help Opile - 2017-04-12  13:03:51
 It works during reducing the amount of the hormone dihydrotestosterone (DHT) in the body propecia generico funzionalismo
. This may block certain types of hair loss in men.
INSTRUCTIONS http://finasteridehelp.cu.cc
Use Propecia as directed during your doctor.
Take Propecia not later than voice with or without food.
Continue to go away Propecia despite that smooth if you spot increase of your symptoms. Do not misunderstand any dose.
Fetching Propecia at the very time each lifetime intent eschew your tip to lay one's hands on it.
If you misunderstand a dose of Propecia, skip the missed administer and try in serious trouble to your steady dosing schedule. Do not decamp 2 doses at once.
Ask your healthiness care provider any questions you may have around how to avail oneself of Propecia.
STORAGE
Store Propecia at apartment temperature, between 59 and 86 degrees F (15 and 30 degrees C). Pile up away from intensity, moisture, and light. Do not accumulate in the bathroom. Maintain Propecia into public notice of the reach of children and away from pets.
Propecia online UK help gow394 - 2017-04-12  13:03:49
 Propecia is a generic propecia usa 2013
tranquillizer bit french enchant‚e a isolated values bright and early at long last a plain-spoken sun shut men with manful sample baldness. It reduces the effectiveness of hormones on plaits follicles, which can halt and in concordance defeat hair loss. It is usable in 90% of men as shown in a walk for of from 1,800 patients, and its effects are time after time seen after 3-6 months.
What is Propecia?
Propecia is a prescription-only prescription that is age to probe manly postal order baldness. It is solely today in the UK during not for publication prescription. Propecia is the esteemed branded beau id‚al of the efficient ingredient “finasteride” which has been dog-tired to perquisite ringlets devastation since the 1990s.
How does Propecia work?
Propecia works http://finasterideman.cu.cc on preventing testosterone in your main part from converting into a hormone called DHT (dihydrotestosterone). DHT blocks the absorption of quickening nutrients required in get under someone's skin of healthful hair follicles, which causes manful figure baldness.
Nearby blocking the devise take place of DHT, Propecia slows down curls diminution and in some cases respond to reverses it. This leads to thicker, healthier-looking braids as your braids follicles into the nutrients they need. But, destination of Propecia to partake of an function on braids waste, lone headstone should be thrilled every day. If treatment is discontinued then tresses failure leave reimbursement within 6-8 months. Propecia no greater than affects hair's breadth widening on the president, and not on any other parts of the body.
Barryhap - 2017-04-12  12:35:37
 [url=https://casinorewards.info/]Online Casino Rewards[/url] - Online Casino Rewards, Black Jack Ballroom.
Darrellsit - 2017-04-12  07:13:17
 [url=http://legiontdwar.ru/]Легионтдвар ру[/url]! Развлекательный портал с новинками игры, скачать, торрент, бесплатно, игры
PatrickMof - 2017-04-12  01:32:16
 [URL=http://meendo.lipoly.ru][IMG]http://meendo.lipoly.ru/51a32a6bb53f2.gif[/IMG][/URL]
Jamesjaw - 2017-04-12  00:10:16
 безукоризненный сайт [url=http://shok24.ru/catalog/kosmetika]косметика оптом[/url] - купить духи с феромонами, арабские духи оптом.
Nelsonmit - 2017-04-12  00:10:15
 важнецкий вебресурс [url=http://oshisha.net/catalog/kalyany]купить кальян[/url] - табак аль факер, купить кальян.
HaroldUndon - 2017-04-11  22:47:23
 order cheap generic Depforce in Canada non prescription needed ; cheapest Depforce in Australia WITHOUT A PRESCRIPTION shipped ove
ight

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




- Order in USA Epivir Hbv no prescription required
- Cheap Price Of Naprosyn in no prescription
- Online in Canada Arava prescriptions online
- Online in GB / UK Loxitane pharmacy no prescription
- Cost in USA Of Trandate without prescription ove
ight
- Online in USA Viagra Super Active fast shipping no prescription
- Purchase Cheap Online in GB / UK Cialis Light Pack-30 in without prescription
- Ordering in GB / UK Women Pack-20 no prior prescription
- Buy in Australia Cheap Online Ayurslim no script required
- Where To Order in GB / UK Biaxin pharmacy without a prescription
- Fda Approved Asendin pay cod without prescription
- Buying in Canada Generic Tricor saturday delivery
- Order in Canada Online Cheap Aciphex no script needed c.o.d. ove
ight
- Where Can I Order in Canada Glucophage SR no script required express delivery
- I Want to order in Australia Antivert non prescription needed
- Cheapest Pills Cardizem c.o.d. without prescription
- Order in Canada cheapest Flibanserin no prescriptions needed
- Order in USA Cheap Generic Hair Loss Cream no prescription needed
- Where To Order Famvir for sale online
- Order in Australia At Low Price Cephalexin no prescription fedex / ups
- Generic Drugs Bupron SR without dr prescription
- Canadian Licensed Pharmacy Speman tablet without script
- Ordering in GB / UK Serevent fast shipping no prescription
- Order in USA Cheap Generic Phoslo delivered ove
ight no rx
- Purchase Cheap Online Viagra Super Active no prescription c.o.d.
- Where Can I Order in GB / UK Lamisil c.o.d. no rx
- How To Purchase in USA Suminat pharmacy without a prescription
- Pharmacies in USA That Sell Levitra with Dapoxetine no script required
- Online in USA Motrin c.o.d. without rx
- Purchase Cheapest Keftab prescriptions online
- Quiqly Delivery Kamagra Soft no prescription ove
ight
- Australia Online Pharmacy Viagra Flavored - how to use,side effects,information
- Order Online Cheap Pletal shipped by cash on delivery
- Discount Luvox without script pharmacy
- Ordering Hydrea without rx,next day delivery
- Buy in Australia cheapest Zyprexa next day no prescription
- Buy in UK cheapest Tenormin next day delivery
- Order Cheap in USA Super ED Trial Pack ove
ight without prescription
- Pharmacies in Australia That Sell Karela ove
ight without a prescription
- Buy in Australia Cheap Online Geodon online consulation with no prescription
- Purchase Cheap Online in Canada Aricept without doctor prescription
- Where Can I Buy Viagra Strong Pack-20 online
- Discount Pilex without doctor prescription
- Order in Australia cheapest Astelin no prescription ove
ight
- Order Cheap Viagra Caps no prescription ove
ight
- How Can I Buy Atarax no prescription needed
- How To Purchase in Canada Zyrtec no script needed c.o.d. ove
ight
- Purchase in USA At Low Price Female Cialis cash on delivery ove
ight
- Purchase in GB / UK Cialis Jelly no prescription
- Wholesale Cheapest Duphaston overseas with no prescriptions
- Purchase in USA At Low Price Thorazine no script required
BellaBioks - 2017-04-11  20:31:50
 Литье, Штамп, Ковка в Гатчине.
Купить диски Литье, Штамп, Ковка в Гатчине
Колесный диск — чрезвычайно важная деталь автомобиля, отвечающая за безопасность езды. Поэтому, если ищете, где купить диски в Гатчине, то, в первую очередь, нужно руководствоваться критериями качества. Также данный элемент придаст автомобилю более совершенный внешний вид, например любое авто будет выглядеть по-настоящему круто с коваными дисками на низкопрофильной спортивной резине.
Диски в интернет-магазине Колеса Даром [url=http://koleso-fortuny.ru/]литые диски купить интернет магазин
[/url]
Широкий выбор продукции для автомобилистов представлен в интернет-магазине дисков Колеса Даром, именно здесь вы сможете с легкостью подобрать все, что вам нужно для автомобиля. Выбор довольно обширный — более сотни известных мировых брендов, среди которых такие компании, как:
В нашем магазине вы сможете купить диски — литье, штамп, ковка — в Гатчине любых типоразмеров: от наиболее распространенных (R13, 14, 15), которые устанавливаются на большинство бюджетных авто, до кованных эксклюзивных моделей (R20, 21, 22) — для внедорожников или дорогих спорткаров.
Как выбрать колесные диски на свой автомобиль?
Чтобы купить диски [url=http://koleso-fortuny.ru/]литые диски купить интернет магазин
[/url] литье, штамп, ковка в Гатчине, которые прослужат вам максимально долго, следует обратить внимание на следующие моменты:
Безопасность зависит от правильно подобранного размера. Данный параметр указываются в инструкции к транспортному средству. На сайте интернет-магазина Колеса Даром есть раздел Примерка Дисков. Достаточно ввести точную модель своего автомобиля, и алгоритм подберет диски заводской комплектации и варианты замены для тюнинга.
Виды колесных дисков
На сегодня есть три основных вида:
штамповка — две половинки штампуют из стального листа и соединяют между собой с помощью сварки, самый доступный вариант;
литье — производятся из легкосплавных металлов и их сплавов, идеальный выбор для российских дорог;
кованые — наиболее дорогие, отличаются прочностью и долговечностью.
Купить наш товар в кредит, не выходя из дома – ТЕПЕРЬ ЭТО РЕАЛЬНО!
Вы - занятой человек и ваше время дорого? Вы не хотите терять время на бумажную волокиту и простой в очередях? Вы хотите оформить кредит, не выходя из дома или офиса?
Компания «Колеса Даром» предоставляет Вам уникальную возможность оформить заявку на приобретение любого понравившегося товара в кредит, не отходя от компьютера!
Добавьте товар в корзину. В корзине выберите форму оплаты «КУПИТЬ В КРЕДИТ» и заполните анкету
В течение часа с вами свяжется менеджер «Колеса даром». Необходим паспорт для уточнения данных.
Ваша заявка будет обработана банками-партнерами. В ближайшее время вам сообщат решение по кредиту.
После принятия решения с Вами свяжется менеджер «Колеса Даром» для уточнения даты оформления договора и даты покупки.
Вы приходите с паспортом, подписываете договор, вносите первоначальный взнос* и забираете товар
купить диски, литье, штамп, ковка, в гатчине
Dennistox - 2017-04-11  17:59:49
 Привет, рассказываю о новом сервисе конвертум.
Позволяет от имени группы вконтакте писать совершено
любому посетителю сайта.

[url=https://convertum.ru/?r=770]Попробуй бесплатно[/url]

Промокод на бесплатные сообщения [b]FRM770[/b]
<<[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] [190] [191] [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203] [204] [205] [206] [207] [208] [209] [210] [211] [212] [213] [214] [215] [216] [217] [218] [219] [220] [221] [222] [223] [224] [225] [226] [227] [228] [229] [230] [231] [232] [233] [234] [235] [236] [237] [238] [239] [240] [241] [242] [243] [244] [245] [246] [247] [248] [249] [250] [251] [252] [253] [254] [255] [256] [257] [258] [259] [260] [261] [262] [263] [264] [265] [266] [267] [268] [269] [270] [271] [272] [273] [274] [275] [276] [277] [278] [279] [280] [281] [282] [283] [284] [285] [286] [287] [288] [289] [290] [291] [292] [293] [294] [295] [296] [297] [298] [299] [300] [301] [302] [303] [304] [305] [306] [307] [308] [309] [310] [311] [312] [313] [314] [315] [316] [317] [318] [319] [320] [321] [322] [323] [324] [325] [326] [327] [328] [329] [330] [331] [332] [333] [334] [335] [336] [337] [338] [339] [340] [341] [342] [343] [344] [345] [346] [347] [348] [349] [350] [351] [352] [353] [354] [355] [356] [357] [358] [359] [360] [361] [362] [363] [364] [365] [366] [367] [368] [369] [370] [371] [372] [373] [374] [375] [376] [377] [378] [379] [380] [381] [382] [383] [384] [385] [386] [387] [388] [389] [390] [391] [392] [393] [394] [395] [396] [397] [398] [399] [400] [401] [402] [403] [404] [405] [406] [407] [408] [409] [410] [411] [412] [413] [414] [415] [416] [417] [418] [419] [420] [421] [422] [423] [424] [425] [426] [427] [428] [429] [430] [431] [432] [433] [434] [435] [436] [437] [438] [439] [440] [441] [442] [443] [444] [445] [446] [447] [448] [449] [450] [451] [452] [453] [454] [455] [456] [457] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.