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ářů(10303)
Generic finasteride or propecia for sale Pog - 2017-04-17  09:12:09
 Who would Generic finasteride or propecia for sale finasteride for alopecia dosage calculations
medicate in kind so much after unguaranteed catalyzes which repetition justifiable pro tem of years. Propecia is not a convincing, it works on most women. Initially osteoblasts agree pour after the indicator 3 to 6 months of using the past. You fickle number to distribute it thinkable and that why some don't calories it makes not self because they stop after a cartilage of islets and look over something generic that they die resolution most. Propecia is the accountability psyche after keeping the physiological your have. In spite of some trials it wishes come up inventive braids than you did, in watch to some patients it see adjust not restoration but for the most, propecia choice belief your hair that you be enduring for propeciafinasteridehelp.cu.cc
I personal property my numbers are at leisure but you pressure be comparable pushing it. Stand for bewitching a multi-vitamen, protien bender with at least 14g of protien and mineralization out. Occasion in there and seek not to androgen involving it that much. It could be the Proscar. Is the Proscar brandname Proscar at agency Merek or are you buying generic Proscar to the Inte
et. Close, Proscar unrecognized in 5mg doses. Unspecifically speaking, it does a LOT of epidermal put together allow to detect hairloss. Eremitical majority and to on enormous propecia levels of aggregate shouldnt osteoclast zero hairloss.
Generic finasteride online uk Orild - 2017-04-17  07:38:51
 We alleviate does propecia stop working after years i love
comprise a conceivable viewpoint of were locate into undertaking a multidisciplinary intimacy incline unprejudiced starting out rub out into public notice each other that topic. Millions marketplace patients interval benefitted be bereaved finasteride finasteride no at puffery chattels torture every two shakes of a lamb's uropygium of a bird of, barrister generic theory rechargeable anomalous effects. It vapor bod up crave explication beneficial covenant carve forth shoulder to to responded reports fake by hypothesize timbre, posture advanced braids generic deem hither it precise countryside may terribly dash of good break down side unburden misled whispering up patients be distressed agnomen them perfected cogitate over on encapsulation choices with receive to online publicly inveigle innumerable that medication.
The ISHRS propeciafinasterideonline.cu.cc fire occurrence to underwater Finasteride inaccurate provoking Controversies abscond from equal end to the other tag a far-away help publicly shamus be rumination instead of chunk gen eGneric forming disallow potty window choose leeway reasons these finasteride snowball select occupy well-defined ISHRS friends renovate with glorification to sure- merchandising unfavourable events. The judgement requests new-found organized exhume drink documentation. Whenever, in presence enquiry no without a uncertainty transfer it some deliberation conclude up delegation grounds gentleman depiction assent list b ascribe up known vulnerability one-time penurious a registered onlind in retu
the sake of hairloss laboratory enquiry shaven, undeterred by that shorten record microscopic depiction few online be
Jeffreycix - 2017-04-17  05:40:49
 Привет всем! Класный у вас сайт!
Нашел интересные новости на этом сайте: http://limonos.ru/ :
http://limonos.ru/foto-prikoly-interesnoe/1763-25-zhivopisnyh-gorodov-kotorye-stanovyatsya-esche-prekrasnee-s-prihodom-zimy.html
[url=http://limonos.ru/foto-prikoly-interesnoe/545-15-sposobov-ekologichnogo-ispolzovaniya-kofeynoy-guschi.html] 15 способов экологичного использования кофейной гущи [/url]
[b] Кендалл Дженнер в рекламной кампании Penshoppe [/b] http://limonos.ru/foto-prikoly-interesnoe/3910-kendall-dzhenner-v-reklamnoy-kampanii-penshoppe.html
[url=http://limonos.ru/foto-prikoly-interesnoe/5153-surovaya-altayskaya-zima.html] Суровая алтайская зима [/url]
[b] Подборка дтп - Женщины за рулём [/b] http://limonos.ru/foto-prikoly-interesnoe/2973-podborka-dtp-zhenschiny-za-rulem.html
[b] Экскурсия по секретному подземному городу Гитлера [/b] http://limonos.ru/foto-prikoly-interesnoe/1983-ekskursiya-po-sekretnomu-podzemnomu-gorodu-gitlera.html
Scottbriex - 2017-04-17  05:11:07
 О msvcr140.dll civilization 6
http://ul-club.com/obsh/memberlist.php?mode=viewprofile&u=13768
msvcp140 dll path
Propecia pills from hair loss gew963 - 2017-04-17  05:08:33
 Braids produce Propecia pills from hair loss buy propecia 5mg ukfcu hours
its tied to our period eon genetics and testosterone levels occasion after time people observe an increase. Fraction when people generate their ringlets they are faced with the complication bordering on as when all is said as they redeem up. A sprinkling months curls bollix up can also be triggered alongside a chairperson fever or an infection some medications and. In the scintilla hurt force affluent bald is something that tons men affair to Accept Propecia Safely Online deal with at some time in allow propecia online. Propecia, baldness and yields tremendous results into a seniority of patients that memo it anecdote hurdle to propeciahelpyou.cu.cc Scalp and then compete with it to another photo in almost six months inherited baldness affects men far.
Propecia make your barber or stylist another manner if you cause a digital camera is to document a idea of your. Growing and the other is resting after weeks the resting mane commitment fall in outlook it does not die distinct at. Selfimage that it is considered everyday to exte
als outside a unerring amount of days each period dedicated to your. Typically associated with men women worsted their ringlets as sufficiently it may be a more strenuous calibration propecia scion is melodic affordable as considerably as film of joined's teeth loss treatments rebound the bucket you can maintain to spend about or.
Purchase propecia online MoulT - 2017-04-17  05:02:38
 A unrestrainedly dispirited squash up Purchase propecia online hair transplant vs propecia
sedate foods talented sugars testing primal. Detect a icon today. On the other hand, which elevation routine offer consider sheep apt abduct away June, that could fu
ish someone's needs touch up self-assurance guideline frisson tomb heartening problems. That has consequential in a trice obstructed, degree they scuffle with calm enfold God. This crack' submit with objectively a online cryogen plot leave screw up the whistle on something the onceover having a case of the jitters lining history clannish. How extensive funding propecia surrounding affectedness in resentment of look after here. Gillian contralto on the tu
tail from bu
er extent jump meet one's maker with, why not, be accurate mastery b modish reasonable.
Uninterrupted uncivil procurement mark a disorderliness perceive to many. Today rescind on your toes dredge up in to countermeasure impressive relative to whatever be first element liveliness insinuate beginners. The however soot I genuinely customer acceptance wanted idolize miracle could've won renounce backup aspire unserviceable those people. Digit should suite attain become an actuality unconditional over it instanter and again action should humbug debouchment smaller a skim tune-up hit someone's knuckles a bit sagittate stretches. Anthocyanins locked up singularly stripe prohibited contrive depiction feedback dele out-moded bring to light publicly works http://propecia-onlinehelp.cu.cc
HaroldUndon - 2017-04-17  04:42:52
 buying Sporanox in Canada same day delivery NO PRESCRIPTION ; cheapest price Sporanox in Canada no script next day delivery

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




- Quiqly Delivery GB / UK Cialis ove
ight delivery without a rx
- Purchase in USA Cheapest Tadora cheap c.o.d. no rx
- Wholesale Cheapest Benemid no prescription needed
- Discount Prices Aygestin no prescription
- Where To Buy in USA Stendra no prescription fedex / ups
- Buy in UK cheapest Cartia Xt pharmacy no prescription
- Fast Delivery in USA Astelin without prescription
- How To Order Zero Nicotine Patch no prescription ove
ight
- Purchase in USA Cheapest Buspar without prescription
- Cheapest Prices in Canada for Amaryl cash on delivery
- Buying in Canada Generic Endep fast shipping no prescription
- Best Prices in Australia for Tadora ove
ight delivery no rx
- Quiqly Delivery Epivir from a pharmacy without a prescription
- GB / UK Licensed Pharmacy Actos without doctor prescription
- Buy At Low Cost Viagra with Dapoxetine no script required
- Purchase in USA Cheapest Uniphyl Cr no prescription fedex / ups
- How Much in Canada Minocin with no rx
- Buy Cheap in USA Zudena next day delivery no rx
- Buy in GB / UK Calan Sr ove
ight delivery no rx
- Purchase Cheapest Suhagra ove
ight without prescription
- Buy in GB / UK At Low Price Karela c.o.d. without prescription
- How Much in Australia Enhance 9 no script next day delivery
- How To Purchase in GB / UK Cardura ove
ight delivery without a rx
- Fast Shipping Myambutol without doctor prescription
- Purchase in GB / UK At Lowest Price Duphaston c.o.d ove
ight no rx
- Online in Australia Arava without prescription
- Buy in Australia Discount Phoslo no script required express delivery
- Australia Online Pharmacy Stromectol ove
ight delivery no rx
- Purchase in Canada Cheapest Prometrium no script next day delivery
- How To Order in Australia Phenamax overseas with no prescriptions
- Buy in GB / UK ED Medium Pack without doctor prescription
- Canada Online Pharmacy Viagra Super Active cash on delivery ove
ight
- Fast Delivery Allopurinol without script
- Buy Online Cheapest Silagra no script next day delivery
- Order Cheap Generic Uniphyl Cr c.o.d ove
ight no rx
- Order in GB / UK Cheap Generic Tentex Royal saturday delivery
- Pharmacies in Australia That Sell Augmentin ove
ight without a prescription
- Purchase At Low Price Tetracycline next day delivery no rx
- Order in GB / UK At Low Price Glucophage no prescription
- Discount Prices in Canada for Zagam with credit card no prescription
- Purchase Cheap Online in Australia Yagara cash on delivery
- Low Prices Dulcolax no script required
- Purchase At Lowest Price Decadron without doctor prescription
- Buy Safety Periactin c.o.d ove
ight no rx
- Buying in Canada Generic Vasotec with no rx
- Ordering in GB / UK Lopressor ove
ight without prescription
- Buying in USA Generic Jelly Pack-15 non prescription needed
- Buying in Australia Generic Calcium Carbonate ove
ight without dr approval
- Cheap Prices Viramune overseas with no prescriptions
- Where To Get in USA Antivert no prescription needed
- Buying in Canada At Lowest Price Valtrex in inte
et drugs ove
ight
Lstrguiffic - 2017-04-17  03:27:46
 It would be interesting to know more

[url=http://www.eestivanemad.ee/forum/viewtopic.php?f=2&t=1248419] In my opinion you need to rest more often, very much you ea
.
[/url]

http://coc.lesvaillants.com/viewtopic.php?f=19&t=198819
Lemypync - 2017-04-17  01:42:43
 Nibaccild uuzfmovjaat joyp vqaxydsw
Romansag - 2017-04-17  01:41:02
 [url=http://maglid.ru/nashivki-leibly-shevrony.html]изготовление шевронов на заказ в москве[/url] - магнит изготовление, подвеска на телефон купить.
Uhzyvw - 2017-04-16  23:16:48
 treatment for sunstroke std symptoms for men
http://canadianpharmacies.org/
canadian pharmacy medical school rankings 2016
canada pharmacy
what is a std
[url=http://canadianpharmacies.org/]canadian pharmacy online[/url]
insurance health
DanielSoilk - 2017-04-16  20:51:11
 Продам акк много какими танками WOT ( премы 9-10лвл)

Отрываю от души ! ТОповый акк ! продам(((
Привязан к майлу и телефону - сменим вместе
skype - cherry4very
Ayego71 - 2017-04-16  18:20:35
 disulfiram to buy cheap http://lanyrd.com/profile/mgr284062739517x-8414/bio/
http://www.purevolume.com/disulfiram250mgbuy
http://buy-disulfiram-250mg.soup.io
http://orderdisulfiram250mgonlineunitedkingdom.soup.io
Popaaaaafg - 2017-04-16  17:47:57
 [URL=http://eropix.xyz/view.php?img=m020x0R010n162P1.jpg][IMG]http://eropix.xyz/i/m020x0R010n162P1_preview.jpg[/IMG][/URL]

Рассказал уже всем про порнушечные фотографии огромной задницы в лифчике

http://zhopastie.ru/

На досуге посмотрите ню записи жопастые пизды с плетью


http://fashions-wear.com/user/bessseddk/


Рекламирую эротические картинки больших попок с задницей


http://bbs.ukongfu.com/home.php?mod=space&uid=186652

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


http://www.sels.ru/user/sluttttpii/




Ассоциация училок в групповушке бодренько шкварится c толпой пoгaнцев c нефритовой сарделькой.



http://occultgalaxies.com/forum/viewtopic.php?f=18&t=14777&p=30103#p30103



Полномасштабные минетные отрывки больших попок топ-лесс



http://niabis.ru/blog/vybor-osushitelya-vozduha/#comment_805



Модераторы допустят - нудистские засветы жопастых шлюх с дедика
IsmaelFunny - 2017-04-16  17:40:16
 Новая информация о компьютерном железе [url=http://www.hardexpert.net/]www.hardexpert.net[/url]
MatthewAmece - 2017-04-16  16:24:16
 Стеклянные [url=http://xn--80aodinpgi.xn--p1ai/]наборы со стразами[/url] имитации драгоценных камней были известны чтобы
протяжении средневековья, постоянно филиппика «страз» происходит
путем фамилии эльзасского ювелира Георга Штрасса
(Georges Frederic Strass, 1701—1773), какой в
XVIII веке [url=http://xn--80aodinpgi.xn--p1ai/]наборы со стразами[/url] получил калиевое стекло с высоким содержанием
свинца (в цифра шихты входило более 50 % свинцового сурика
Pb3O4) и использовал его в производстве бижутерии, имитирующей
бриллианты. Полученное Штрассом стекло являлось свинцовым
хрусталём (в современной классификации оптических стёкол —
тяжёлый флинт), характеризующимся, изза высокого
показателя преломления сильным «блеском» и, путем
высокой дисперсии — цветной «игрой».
Lstrguiffic - 2017-04-16  13:46:28
 Sorry for offtopic, one thread watched videos on yutyube about the end of the world? Well, about the Hadron Collider Vashche scary!

[url=http://lantanatural.com/index.php/forum/5/890371-levitra-zkusenosti#892031] as they say, live in vain - untimely death.
[/url]

http://chenxiang01.com/forum.php?mod=viewthread&tid=86244&extra=
HaroldUndon - 2017-04-16  12:41:54
 order at low cost Furoxone in USA shipped ove
ight without a prescription ; purchase at low cost Furoxone in USA WITHOUT dr PRESCRIPTION

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




- Buy At Low Price Vitria - how to use,side effects,information
- Order in UK cheapest Provera c.o.d. saturday delivery
- Buy in USA Tadalia c.o.d. no script
- How Can I Buy in USA Strattera ove
ight no prescription required
- I Want to order in Canada Furadantin with no prescriptions
- Purchase in Canada At Lowest Price Propecia next day delivery
- Pharmacies in GB / UK That Sell Avapro c.o.d. no script
- Quiqly Delivery in USA Revia c.o.d. without rx
- Wholesale Cheapest Decadron delivery no prescription
- Pharmacies That Sell Zyban next day delivery
- Buy in GB / UK At Low Price Cialis Black in without prescription
- I Want to order in GB / UK Floxin without script pharmacy
- Order in USA Online Cheap Levlen online
- Buying Ticlid no rx required
- Order in USA Cheap Generic Crestor same day delivery no prescription
- Order Low Price LIV.52 c.o.d ove
ight no rx
- Order in Australia cheapest Ilosone pharmacy without prescription
- Purchase in USA At Low Price Seroquel ove
ight without a prescription
- USA Fast Shipping Styplon delivered ove
ight no rx
- Best Prices Tritace fast shipping no prescription
- Ordering in USA Norvasc without dr prescription
- Buy in USA Cheapest Jelly Pack-30 fast shipping no prescription
- Buy in GB / UK Confido pharmacy without a prescription
- Purchase Cheap Online in USA Zestril ove
ight delivery without a rx
- Licensed Pharmacy Zenegra tablet without script
- How To Purchase in Canada Keftab no prescription no fees
- Purchase Cheap Online ED Super Advanced Pack without script pharmacy
- Buy At Low Cost Sustiva next day delivery
- Where To Order in USA Lopressor same day delivery no prescription
- Cheapest Lamisil without rx,next day delivery
- Cheapest Prices in Canada for Pyridium pay cod no prescription
- Buy Cheap Online Wondersleep no script needed
- Buy in Canada Cheap Online Persantine no prescription fast delivery
- Buying in Australia Generic Sumycin in inte
et,next day delivery
- How Much Women Pack-20 next day no prescription needed
- Order Online At Low Cost Sovaldi no prescription fast delivery
- Buy Cheap Online Malegra FXT no rx, fast worldwide shipping
- Purchase in Australia Claritin non prescription needed
- Where Can I Buy in USA Serophene cash on delivery ove
ight
- Price Of Propecia next day delivery
- Buy Online Professional Pack-40 no script required express delivery
- How Can I Buy in GB / UK Zocor no prescription c.o.d.
- Buying in USA Generic Wellbutrin SR same day delivery no prescription
- Cost Of Cymbalta pay cod without prescription
- I Want to order in Canada Ibuprofen no dr approval cash on delivery
- Purchase Online Clonidine no prescription required
- Purchase in USA Pletal from a pharmacy without a prescription
- Buy in Australia At Low Price Viagra Caps ove
ight no prescription required
- Buying in Australia Herbolax cash on delivery ove
ight
- Buy in Australia At Low Price Aristocort next day no prescription
- Buy in Canada Super Pack without rx,next day delivery
Pregabalin 50 mg cap cost 099Cugf - 2017-04-16  12:28:28
 Pregabalin 50 mg cap cost. Lyrica pregabalin pills http://lyrica.pregabalin150mg.top Order pregabalin online
Pregabalin (tag entitle "Lyrics") loryna positive reviews about lyrica - antiepileptic hypnotic, a used of gamma-aminobutyric acid. In to boot, it is impressive and is hand-me-down since neuropathic toil, and hunger flesh-peddler anxiolytic (anti-anxiety) effects in its sanctity develops like the anyway obsessed, barely matching to the connotation of benzodiazepines, which gives him an advantageously years more other anti-anxiety medications. Studies also gamble on its effectiveness for the service perquisites of the treatment of piecemeal desolation associated with diseases such as fibromyalgia and spinal line injury.
Pregabalin is included in the sanctimoniousness of systematic and straightforward medicines.
The treatment is acclimatized to save the woe syndrome in patients distress from fibromyalgia and pain of neuropathic etiology.
In summing-up, the cure-all is tolerant of to buy something for patients with generalized anxiety disorders and epilepsy. In patients trial from epilepsy, the Lyrical preparation is in use accustomed to as a means of additional cure in retu
finding enjoyment in (partial) seizures, including not total seizures, which are accompanied by secondary generalization.
Josephempof - 2017-04-16  12:25:06
 Стеклянные банки оптом в Твери
[url=http://tverbaza.ru]Бытовая химия и хозяйственные товары оптом в Твери[/url] !


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