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ářů(10302)
LonnieSeX - 2017-04-20  15:49:41
 ситуац йний анал з аеросв т http://cutt.us/skNoc русский секс с опитныма и подглядывание
порно видео русские девчонки издеваются над парнем http://cutt.us/X37CU смотреть онлайн фильм 2014 жестокое порно
смотреть порно пародия мортал комбат онлайн http://cutt.us/xNxd немецкое порно про полицейских и преступников
скапировать зд порно лесби со страпонам фото http://cutt.us/XbroY порно фильм огромные сиськи переводам на русском языке
самый красивый и страстный секс видео http://cutt.us/16PQ итальянская классика порно 80 годов видео
Mpywo18 - 2017-04-20  15:24:02
 first aid and cpr certification online what is an std
http://viagrawithoutdoctor.us/#oiydu.html
viagra without a doctor prescription std rash on face
viagra without a doctor prescription
heat cramps symptoms and treatment
[url=http://www.viagrawithoutdoctor.us/]unprescribed viagra[/url]
herpes venereal disease
LonnieSeX - 2017-04-20  14:48:23
 мама беременна от сына порно видео http://cutt.us/aRTr6 порно фильмы спириводом на руском языке
порно золотой дождь по русски смотреть онлайн http://cutt.us/WpHnE как можно намикнуть чтобы соседка сагласилась на порно
просммотр порно ролики девушек на сотовый телефон http://cutt.us/RuVNh пока мама спала дочька трахнула папу парнуха
старый оскол знакомство для секса с телефоном http://cutt.us/NDZ9M смотреть онлайн порно фильм девки ссутулился
порно самое новое лучшая зрелых порно http://cutt.us/oDkHp трах видео отец насильно трахнул дочку
Williamnex - 2017-04-20  14:16:38
 Purchasing a new or used car could be a difficult process should you not know what you will be doing. By educating yourself about car shopping prior to visit the dealership, you could make things easier for yourself. The following advice might help the next shopping trip be more enjoyable.

You have to be informed when you step into the car lot. Exactly how much is it possible to spend? What size does your vehicle must be for the quantity of people you have to transport? What type of fuel economy searching for? Do you want a sportier car or even a family vehicle? Make a list of what you wish, and carry it along to help keep your memory refreshed.

Use a clear understanding of what those upgrades will cost you. Getting the fancy stereo, leather seats and DVD player may be appealing, but those options can add a tremendous amount to the price of your car. Take a moment to think about just how much you really want the upgrades, and simply purchase the ones you may utilize the most.

During negotiations, concentrate on the total price as opposed to the monthly price. A dealer will make any desired monthly price possible, but you'll find yourself paying that monthly price for years and years, making the very last expense of the car outrageous. It really is a better idea to concentrate on getting a good deal in the final vehicle price, for example the financing. Then, imaginable [url=http://skupautsosnowiec.ovh/]skup samochodów rybnik[/url] just how much you will be paying on a monthly basis.

Don't forget to calculate ownership costs when selecting a brand new vehicle. That bargain priced SUV will not be such a good price if it means you will end up spending twice the sum you employed to on gasoline to drive it. The same thing goes for sporty racing style cars or models popular with car thieves that both may come with increased insurance rates.

Never discuss down payments, incentives, or trade-ins until you've established a real price in your desired car. These monetary exchanges should lessen your cost. Obtain the deal down pat first, then talk business with trade-ins or anything else, your wallet will many thanks.

Search the web for incentives around the car you need. Many automotive manufacturers offer cash back or special financing on his or her vehicles. The dealership will never always share with you this stuff in advance. Take a moment to educate yourself first to get the hottest deal once you are in the showroom.

Bring an extra set of keys along with you to the dealership. When they require the tips for your trade in, provide them with the spare. Some dealerships uses your automobile tips for hold you hostage if a deal is not really made. You need to avoid this, so ensure you have the capacity to walk out from the dealership anytime and never have to ask for your keys.

Should you be absolutely crazy about a certain color or interior finish, don't be happy with less. Even though specific vehicle that you might want will not be available at the local dealership, question them if they can get it for you. Most dealerships have relationships with other dealerships and definately will trade vehicles back and forth. Take into account though, you could find yourself paying slightly extra to pay for a number of the costs from the trade.

When you are looking to determine your trade-in value to your current vehicle, be sure you bring it to some few dealers. By going to some different dealers, you'll be able to get a rough estimate of methods much your car is really worth. This will enable you to reject low ball offers that somebody can make for the car.

Speak to your bank or lending institution prior to deciding to set off for the dealership when you find yourself searching for a vehicle. Discover how much of a loan you will be qualified for. By doing this, you will understand what you can manage to spend, and you will probably know what sort of car to look for.

Have a look at multiple dealerships to the car you desire. When you select which brand name you want, don't just keep to the closest lot. If there are actually multiple dealers of the brand, check them all out. Don't forget to look at used lots at the same time, they frequently offer great bargains on cars which can drive for a long time in the future.

Don't allow the salesperson know you will have a trade in till you have a firm sales price at hand. Some dealers will inflate the retail price if they think you're trading in a vehicle, so they can provide you with a lot for your trade in, which happens to be, then balanced by the new price they provide about the car they're selling.

When you keep the preceding advice in mind the next time that you go shopping for a car, you will be more prone to get a better deal. Getting a car lacks as a headache. Simply use the information with this article and you may get the car you would like at a good price.
Patrickfup - 2017-04-20  13:56:45
 cheap price Prilosec in USA shipped ove
ight without a prescription ; low cost Prilosec in USA ove
ight delivery no r x

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




- Buy in Canada Discount Duricef no prescription
- Buy in Australia cheapest Lopid cash on delivery
- Quiqly Delivery Extra Super Avana ove
ight without dr approval
- Where Can I Order in Australia Terramycin no script required
- Purchase in Australia At Low Price Cialis Light Pack-30 without prescription
- Buy in Australia Cheapest Actigall in no prescription
- Buy in GB / UK Cheap Online Claritin for sale online
- Buy in Australia Cheap Online Synthroid no prescription no fees
- Order Cheap in USA Lexapro non prescription needed
- Cheapest Robaxin in no prescription
- How Much Crestor without doctor prescription
- Discount Prices in GB / UK for Rumalaya without script
- USA Fast Shipping Leukeran ove
ight delivery no r x
- Ordering Online Garcinia Cambogia with no rx
- Purchase Cheap Online in Australia Glucotrol Xl with ove
ight delivery
- Where To Get Herbal Extra Power no prescription c.o.d.
- Purchase Desogen no script next day delivery
- Order in Canada cheapest Zudena in inte
et drugs ove
ight
- Cheap Herbal Max Gun Power without rx,next day delivery
- Quiqly Delivery in USA Hoodia next day delivery
- Purchase in GB / UK Online Herbal Penylarge without script
- Buying in GB / UK Proscar delivery no prescription
- Purchase in GB / UK Claritin no prescription fast delivery
- Buying Depakote c.o.d. saturday delivery
- Where To Get Herbal Max Gun Power no prescription needed
- Where To Buy in USA Cardura no dr approval cash on delivery
- Australia Online Pharmacy Nolvadex without rx
- Best Place in USA To Buy Levlen without doctor prescription
- Pharmacies in Australia That Sell Tentex Forte next day no prescription
- Best Prices in Australia for Vitamin B12 no rx, fast worldwide shipping
- Where To Buy in USA Lopressor no script required
- Discount Prices in GB / UK for Rumalaya Fort delivered ove
ight no rx
- How To Buy Tiova cash on delivery ove
ight
- Buy in Canada At Low Price Vitamin C no prescription needed
- Buying in Australia At Lowest Price Mentat pharmacy without a prescription
- Purchase Cheap Online in Canada Silagra online
- Cost in Canada Of Tritace from a pharmacy without a prescription
- How To Order in Canada Arcoxia without a prescription shipped ove
ight
- Cheap Price Of Tentex Forte no prescription fast delivery
- Buying in USA At Lowest Price Lopressor online
- Price Of Amoxil no script needed c.o.d. ove
ight
- How Can I Buy Daklinza no dr approval cash on delivery
- Buy in United States cheapest Copegus ove
ight no prescription
- Where Can I Purchase in GB / UK Kamagra shipped ove
ight without a prescription
- Order At Low Cost in USA Levitra Soft no prescription needed
- Quiqly Delivery in USA Stromectol no rx required
- Cheapest Lanoxin c.o.d. no rx
- Buy in Canada Discount Motilium from a pharmacy without a prescription
- How Much in GB / UK Neoral with no prescriptions
- Where To Buy Casodex ove
ight without dr approval
- Ordering Safety Cialis Pack-30 next day no prescription
LonnieSeX - 2017-04-20  13:50:32
 королева со слугами порно историческое порно видео http://cutt.us/sno9 порно девушек с ыми смотреть видео онлайн
е порно молодых со старыми в онлайн http://cutt.us/mlmKR секс с осокой тано видео аниме
ретро фильм порно звезды на отдыхе http://cutt.us/Ska4y ебать в жопу етних девочек фото
найти порно фильмы с актрисай эшлин боук http://cutt.us/uN95D как уговорить взрослую женщину заняться сексом
натуральное секс видео знаменитостей смотреть ролики http://cutt.us/gP3MN смотреть порно зрелых мама и дочка лезбиянки
Rjp14f - 2017-04-20  13:28:30
 medical education jobs columbia medical school
http://cephalexin.500mgantibiotics.com/
cephalexin 500mg capsule antibiotic need cheap health insurance
cephalexin capsules
health websites
[url=http://cephalexin.500mgantibiotics.com/]cephalexin 250 mg[/url]
having a heat stroke
LonnieSeX - 2017-04-20  12:53:46
 подглядывание под юбку голая пизда фото http://cutt.us/sbIeE смотреть порно комиксы секс отца и дочери
фото сперма на лице женщин и девушек http://cutt.us/MZibK порно с молодой девушкой из соц сети 2014
бдсм секс машины женский оргазм порно видео онлайн http://cutt.us/gIao7 скачать видео русский секс на телефон
порно фото анального секса смазка ануса http://cutt.us/tUd2i смотреть порно фильм онлайн красна шапочка ххх
ролевые игры секс в кровати видео http://cutt.us/sZXhM смотреть порно изнасилование в реал групповых геи
MasonSmult - 2017-04-20  12:46:44
 Buying a car is a major deal. You need to actually buy something which you won't regret. These article has some very beneficial tricks and tips that can help you have the car you need for that price you want. Please read on and lea
what is required to buy an auto.
http://l2demigods.eu/forum/index.php?action=profile;u=28339

Always conduct a test drive from the car you want before purchasing it. It doesn't matter when you have driven an identical vehicle. You need to still guarantee that this car is operating well. There may be a small difference or mechanical problems that you won't pick-up without having a test drive.
http://filmy.online.hardsite.pl/user/OscarAlila/

Demand a safety report and vehicle history report from your dealer. A bit of good car dealer will have these items designed for any vehicle about the lot. This is certainly information that will explain how safe the automobile is as well as any major accidents or work that has been needed in the car.
http://colegiochino.16mb.com/sm/index.php?action=profile;u=13098

Whenever shopping for a used car, it could be smart to stick to certified pre-owned vehicles simply because this greatly reduces the likelihood that you'll end up with a car that is in poor condition. Just make sure how the certification if provided by the automobile manufacturer rather than the dealer.
http://192.99.70.218/forum/index.php?action=profile;u=49595

If you plan to trade inside your old car, discover how much it's worth and factor that into your budget. If you believe, your vehicle may be worth a good deal, and it's not, you may well be in for a shock when you make it to the lot. Knowing as much as possible before leaving your home is the true secret.
http://cubaseacademy.com/forum/index.php/topic,162738.new.html#new

As you now know, there are several aspects to consider when purchasing an auto. When you rush involved with it, you may very well come to a decision you'll regret. Make sure to implement the recommendations given and you are sure to buy a vehicle that you'll enjoy for years to come.
Patrickfup - 2017-04-20  12:21:44
 order at low price Ticlid in UK/GB no script next day delivery ; buy Ticlid in Australia shipped by cash on delivery

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




- How To Buy ED Trial Pack c.o.d. no rx
- Cheapest Prices in Canada for Motilium no script required express delivery
- Where Can I Order in Australia VP-GL with no rx
- How To Order in GB / UK Ticlid no rx required
- Purchase Cheap Online in USA Vitamin C no script required
- How To Purchase in Canada Female Cialis saturday delivery
- Cheap Price Tadalia in inte
et drugs ove
ight
- Where Can I Purchase in Australia Combivent no prescriptions needed
- GB / UK Online Pharmacy Buspar cash on delivery online prescriptions
- Online in GB / UK Super Pack ove
ight no prescription
- Best Prices in GB / UK for Prilosec in without prescription
- Buy in USA Discount Myambutol no script required express delivery
- How Can I Buy in GB / UK LIV.52 drops no prescription
- Order Low Price Super Avana no prescription c.o.d.
- Ordering Online Mobic ove
ight delivery no r x
- Ordering in GB / UK Super Pack in inte
et,next day delivery
- Cost in USA Of Levitra Pack-90 with ove
ight delivery
- How Can I Buy in Australia Decadron prescriptions online
- Buy in USA At Low Price Coreg c.o.d. no rx
- Buy in Canada Discount Revatio no script required express delivery
- Fast Delivery in USA Kamagra Flavored ove
ight delivery no r x
- How Can I Buy Anafranil no dr approval cash on delivery
- Buy Discount Myambutol tablet without script
- Cheapest Prices in USA for Cialis Jelly ove
ight no prescription required
- Order Low Price Pentasa overseas with no prescriptions
- USA Licensed Pharmacy Benicar cash on delivery
- Buy Cheapest Paxil from u.s. pharmacy no prescription
- Purchase Cheap Online in Canada Levitra with Dapoxetine tablet without script
- Where To Order in Canada Arava in inte
et,next day delivery
- Best Place in Canada To Buy LIV.52 c.o.d. saturday delivery
- How Much in GB / UK Kamagra Pack-15 no rx required
- Purchase Cheap Online in Australia Brahmi pharmacy without a prescription
- Purchase Online Brand Viagra without prescription
- Pharmacies in Australia That Sell Enhance 9 no prescription needed
- Pharmacies in USA That Sell Effexor ove
ight without prescription
- Quiqly Delivery Canada Minomycin prescriptions online
- Buy in Canada Cheapest Pyridium ove
ight delivery no r x
- Buy in Canada Cheapest Fulvicin no prior script ove
ight
- Where Can I Purchase in Australia Ampicillin - how to use,side effects,information
- GB / UK Licensed Pharmacy Kamagra Flavored shipped ove
ight without a prescription
- Purchase in USA Cheapest Eulexin pay cod no prescription
- Cheap Price Priligy no dr approval cash on delivery
- Order Cheap Online Tetracycline c.o.d. saturday delivery
- Purchase in GB / UK Cheapest Zantac prescriptions online
- I Want to buy in USA Cialis Black no script needed c.o.d. ove
ight
- Buy Online Cheapest Uroxatral without dr prescription
- Australia Online Pharmacy Sovaldi pharmacy without a prescription
- Licensed Pharmacy Lopid delivery no prescription
- Order Cheap in USA Topamax no prescription next day delivery
- Buy in Canada Cheap Online Zetia ove
ight no prescription required
- Order in Canada cheapest Buspar next day delivery no rx
StevenPob - 2017-04-20  12:21:40
 КЛИЕНТСКИЕ БАЗЫ http://xurl.es/PR0DAWEZ УЗНАЙТЕ ПОДРОБНЕЕ! KLIENTSKIE BAZY http://xurl.es/PR0DAWEZ Uznajte podrobnee!
LonnieSeX - 2017-04-20  11:01:12
 фото девушек блондинок на море на аву http://cutt.us/VaSor смотреть полнометражные порно фильмы похитили пытали и изнасиловали
мини платье в обтяжку порно смотреть онлайн http://cutt.us/2VPrO эротические рассказы о сексе между братом и сестрой
пётр давыдов все стихи горячий секс и http://cutt.us/CytFA порно боль и слезы анального секса
секс фото ню на нудийском пляжн http://cutt.us/tP6s е порно видео мам подглядывает за сыном
порно рассказ про дочка забеременила от папье маше http://cutt.us/DxJM мать и сын секреты смотреть порно фильм
LonnieSeX - 2017-04-20  10:08:13
 аниме порно девушек с монстрами на русском http://cutt.us/s2dbT порно ролики без регестрации и скачивания
фото крупным планом женских писек под прозрачными колготками http://cutt.us/J1Htl смотреть порно онлайн проверка ануса у врача
у нас в стране секса нет лукмор http://cutt.us/iEe6 фигуристая самка хочет секса смотреть онлайн
порно 20 роки девушки видео хорошо качественее http://cutt.us/dHyjI мать случайно увидела как сын мастурбирует онлайн
порно мамы с папиным другом фото рассказы http://cutt.us/M2H32 эротические порно расказы на рыбалке с женой
LonnieSeX - 2017-04-20  09:12:30
 порно фильмы с принуждениями с русским переводом http://cutt.us/fuhe6 смотреть частную эротику фото девушки с мужскими письками
смотреть порно девчонок с ростом 0 см http://cutt.us/y3pso ретро фильмы порно италия 60 90
мать учит дочь раздвигать роти для секси http://cutt.us/84VQT порно секси мама трахаеться с сыном
смотреть мультфильм аниме эротика про щупальцы http://cutt.us/Py2RX все актёры мужчины список с фото зарубежные
как сделать анальный секс наиболее приятным женщине http://cutt.us/12KGc привороты в домашних условиях через секс
LonnieSeX - 2017-04-20  08:20:11
 порно рассказ госпожа срет мне в рот http://cutt.us/Eez2 смотреть порно эротический легкий фильм полного содержания италия
секс массаж с сексуальной брюнеткой смотреть онлайн http://cutt.us/NpGMR очень юная девочка с девственой писечкой фото галерея
как подцепить девушку на занятие сексом http://cutt.us/QRbEG гарри поттер драко малфой геи истории
русское порно мама и сын трахаются http://cutt.us/UnAXV порнофильмы на руском в хорошем качестве
порно сцена из очень страшный фильм http://cutt.us/wc5c3 порно в возрасте 1080 русское лото
LonnieSeX - 2017-04-20  07:29:22
 порно подбирал на дороге и трахал http://cutt.us/Kc12W смотреть порно видео фильм с русским переводом
мама учит свою дочь лесбийскому сексу http://cutt.us/KIYhP у девушек сперма из попы порно фото
секс в житомире женщина прыгнула с моста в реку http://cutt.us/2efDn порно баба с сиськами 10 го размера
порно фото девки от 30 до 40 стройные с голые http://cutt.us/z9aMD способи анал зу зовн шнього середовища
порно маты ы син ы доч расиское http://cutt.us/kC41U голосов 1 порно информация о фильме горячие стюардессы
LonnieSeX - 2017-04-20  06:37:23
 засунула руку в пизду фото крупным планом http://cutt.us/cCm0K пизда без трусов под юбкой видео
скачать порно парень выебал молодую тётю лену http://cutt.us/0sQkc анимационные картинки для мобильников на тему секс
неверная порно фильм на русском смотреть онлайн http://cutt.us/QRGY эротические фото насти алены водонаевой в мини юбочке
порно мама подглядела за сыном в душе http://cutt.us/uc0by просмотр порнофото русских женщин в колготках
порно видео русское взрослые мамки хххххх http://cutt.us/q7nlm порно попки классных телок ролики качественные короткие ролики
LonnieSeX - 2017-04-20  05:45:22
 секс с худенькой русской студенткой смотреть http://cutt.us/8UQmp фото русских женщин с порно сайтов знакомств
что делать если во время секса пукает писька http://cutt.us/qq3PH как заниматься сексом с подушкой в одиночку
секс рассказы про начальство по принуждению http://cutt.us/H8lJr сексуальные девушки для секса г чебоксары
когда мужик хочет секса вин може http://cutt.us/syZxT много девчонок лесбиянок из колледжа порно
порно русское мать учит сына ебатьца http://cutt.us/nruUz фрагмет секса между викторией и максом
LonnieSeX - 2017-04-20  04:54:37
 порно видео ебет русскую на улице http://cutt.us/ve0qR полнометражные порно на русском языке смотреть онлайн
секс на казантипе пляже 2009 видео секс втроем http://cutt.us/DdBBe я парнуха он лайн без регистрации
купить маленькую реалистичную куклу для секса http://cutt.us/l6un маленькие девушки з большими сиськами порно фото
почему щипит член после незащищенного секса http://cutt.us/C2qaT жсткий секс в анал онлай порно
порно ролики женский оргазм смотреть в хорошем качестве http://cutt.us/d78Th порно видео мерлин монро на телефон
LonnieSeX - 2017-04-20  04:04:10
 секс с т щей видео онлайн http://cutt.us/UknS1 секс во время месячных грибковые заболевания
муж на работе а жену ебут трое http://cutt.us/4LrL6 нет потребности в сексе что делать
секс с чужой женой в клубе http://cutt.us/J4ke6 частное порно в медовый месяц виде
в 20лет не разу не было секса http://cutt.us/hTL4B студия приват порно в ресторане онлайн
транзит нафти через укра ну тарифи тенденц анал тика http://cutt.us/m9ONV дом 2 немзданное порно ролики онлайн
<<[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] [190] [191] [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203] [204] [205] [206] [207] [208] [209] [210] [211] [212] [213] [214] [215] [216] [217] [218] [219] [220] [221] [222] [223] [224] [225] [226] [227] [228] [229] [230] [231] [232] [233] [234] [235] [236] [237] [238] [239] [240] [241] [242] [243] [244] [245] [246] [247] [248] [249] [250] [251] [252] [253] [254] [255] [256] [257] [258] [259] [260] [261] [262] [263] [264] [265] [266] [267] [268] [269] [270] [271] [272] [273] [274] [275] [276] [277] [278] [279] [280] [281] [282] [283] [284] [285] [286] [287] [288] [289] [290] [291] [292] [293] [294] [295] [296] [297] [298] [299] [300] [301] [302] [303] [304] [305] [306] [307] [308] [309] [310] [311] [312] [313] [314] [315] [316] [317] [318] [319] [320] [321] [322] [323] [324] [325] [326] [327] [328] [329] [330] [331] [332] [333] [334] [335] [336] [337] [338] [339] [340] [341] [342] [343] [344] [345] [346] [347] [348] [349] [350] [351] [352] [353] [354] [355] [356] [357] [358] [359] [360] [361] [362] [363] [364] [365] [366] [367] [368] [369] [370] [371] [372] [373] [374] [375] [376] [377] [378] [379] [380] [381] [382] [383] [384] [385] [386] [387] [388] [389] [390] [391] [392] [393] [394] [395] [396] [397] [398] [399] [400] [401] [402] [403] [404] [405] [406] [407] [408] [409] [410] [411] [412] [413] [414] [415] [416] [417] [418] [419] [420] [421] [422] [423] [424] [425] [426] [427] [428] [429] [430] [431] [432] [433] [434] [435] [436] [437] [438] [439] [440] [441] [442] [443] [444] [445] [446] [447] [448] [449] [450] [451] [452] [453] [454] [455] [456] [457] [458] [459] [460] [461] [462] [463] [464] [465] [466] [467] [468] [469] [470] [471] [472] [473] [474] [475] [476] [477] [478] [479] [480] [481] [482] [483] [484] [485] [486] [487] [488] [489] [490] [491] [492] [493] [494] [495] [496] [497] [498] [499] [500] [501] [502] [503] [504] [505] [506] [507] [508] [509] [510] [511] [512] [513] [514] [515] [516] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.