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ářů(8993)
LonnieSeX - 2017-04-20  21:59:54
 смотреть онлайн порно русское папа трахает доч http://cutt.us/Hp63p мама и дочь с негром порно
секс кукла с раздвинутыми ногами купить http://cutt.us/ofba порно с лизанием зада у мужчин
порно видео про геев в ванной http://cutt.us/y42eE русское порно видео на доме 2
самые красивые порно актрисы мира имена и фото http://cutt.us/7BmXM бланк заявка на сексуальные домогательства солдата по сроку службы
порно фильм молодые любят когда погоречее http://cutt.us/7VPJP две девушки сняли парня и секс на природе
LonnieSeX - 2017-04-20  21:10:03
 смотреть порно секс в туалете онлайн http://cutt.us/ugWLC первый опыт секса втроем мжм реальный рассказ
найти порно в школе на уроке под партой http://cutt.us/OPiJj смотреть фильм оргия перед апакалипсам порно
порно фото мам сын на кухни http://cutt.us/hEvf день первый собираемся на порно отпуск
русские малышки двойное проникновение в порно http://cutt.us/Ji0qF скачать видео порно на тилифон в харошом качыстви
в два смычка жену секс рассказ http://cutt.us/kxQV самые откровенные реальные сцены секса в фильмах
LonnieSeX - 2017-04-20  20:16:12
 глубочайший отсос и сперма в горло порно онлайн http://cutt.us/AkUNe русское порно отца и сына с матерью
секс с двумя членами в попку фото http://cutt.us/ONMbZ жена застукала мужа с домработницей смотреть порно онлайн
видео порно ихдевался над шлюхой как только мог http://cutt.us/wfEHR порно видео без регистрации без скачивания
игры про секс игры на роздевание http://cutt.us/yaZBk смотреть порно сучки в кожаных фурашках
смотреть новое порно фильмы с сюжетом http://cutt.us/YQ9cU объявления секс без обязательств в ростове на дону
Dwaynegog - 2017-04-20  19:56:41
 Здоровье каждого человека – вещь бесценная, однако из-за нововведений в системе оказания медпомощи получить вовремя качественные услуги специалистов становится сложнее. То же самое наблюдаем, когда требуются медицинские справки для передачи в ГИБДД, поступления в учебные заведения, спортивные секции – очереди к врачам огромные, да и запись возможна далеко не день в день. Когда времени на ожидание нет, обратитесь к сотрудникам нашего медцентра. Менее чем за день у вас будет шанс купить больничный лист, медицинские справки различных форм, взять рецепт от врача. Сотрудники медцентра помогут даже в сложных случаях. Например, при определенных обстоятельствах проконсультируйтесь с нашим специалистом, чтобы купить больничный лист, подготовленный на прошедшую дату.

[url=http://nasha-clinika.ru/][img]http://nasha-clinika.ru/img/banner.img[/img][/url]
http://nasha-clinika.ru/severo-vostochnyj-administrativnyj-okrug.html
http://nasha-clinika.ru/vostochnyj-administrativnyj-okrug.html

[url=http://nasha-clinika.ru/centralinyj-administrativnyj-okrug.html]купить больничный лист клинике[/url]
[url=http://nasha-clinika.ru/yugo-vostochnyj-administrativnyj-okrug.html]купить рецепт врача лекарство[/url]

больничный лист купить официально в москве юао
больничный лист купить официально цена
оформить больничный лист оплаты
Danlkerdearveque - 2017-04-20  19:53:05
 Промокод UBER (5 символов) - 4wa9x - позволит бесплатно использовать услугу такси в любом городе. Используйте сейчас и получите 700 рублей на лицевой счет. Если не трудно, оставьте отзыв о использовании промокода и понравилось ли пользоваться услугами UBER-сервиса. Когда закончится поездка, поставьте также оценку водителю, которая влияет на его статус в системе. Компания Uber занимается услугой перевозки клиентов с помощью автомобилей. Uber - это очень современный и достаточно распиаренный бренд, известный и успешно функционирующий в тридцати пяти странах мира. Uber промокод 4wa9x действует во всех городах и странах.
Плюс сервиса – это большое разнообразие автомобилей как экономного, так и представительского класса. Удобное приложение позволит совершать безналичные расчеты и даже делить стоимость поездки между несколькими друзьями. Используя код [url=http://promokodubercom.ru/]Uber-промокод[/url], вы получите мгновенную скидку. Программа автоматически определяет местоположение заказчика.
Руководство бренда работает над уровнем услуг - попробуйте и вы. Пользуйтесь такси с комфортом, заказывайте автоперевозки для ваших товаров, в том числе очень крупных. Uber работает не только для граждан, но и целых корпораций, поэтому предприниматели уже пользуются услугами такси. Присоединяйтесь к числу счастливцев, значительно облегчивших жизнь и решивших рабочие вопросы с транспортировкой.
Компания Uber предлагает воспользоваться такси в крупных городах всего мира. С помощью мобильного приложения сможете за несколько секунд подобрать машину для поездки в Европе, Азии, Северной и Южной Америке. Купон и промокод Uber - 4wa9x – в любое время регистрации порадуют приятной экономией.
На странице promokodubercom.ru актуальный промокод Uber для тех, кто постоянно экономить в поездках. Комбинацию букв и цифр необходимо ввести в специальном поле во время оформления заказа. Промокод «4wa9x» – это гарантированное сокращение ваших расходов.
LonnieSeX - 2017-04-20  19:25:00
 как убрать порно баннер быстро суки быстро скажите http://cutt.us/r97vC смотреть порно фильмы с чичолиной русским переводом
эротические фото на природе частные коллекции http://cutt.us/f4rDV смотреть фильмы онлайн сериал секс в большом городе
порно учительница пришла к больному ученику http://cutt.us/DSNOw на кухне в фартуке эротика видео
секс против воли изнасилование порно видео http://cutt.us/pwyfX порно у гинеколога в кабинете фото
похабные слова во время секса смотреть http://cutt.us/wVrLq смотреть порно фильм она такая милашка
LonnieSeX - 2017-04-20  18:34:59
 мирослава карпович из сериала папины дочки голая секс http://cutt.us/yYSBS секс игры на телефон размер экрана 240 320
порно ему сосут и лижут жопу просмотр http://cutt.us/J5K3u как развести девушку в первом свидании на секс
порно ролики геев и без регистрации http://cutt.us/veYc1 секс за деньги перед веб камерой
скачать порно видео с сильвией сайнт http://cutt.us/mWnqc секс в большом городе 02 20
порно хххх трахнул в попу юное создание http://cutt.us/lHLCR новое шд порно онлайн с мадисон иви 2014
LonnieSeX - 2017-04-20  17:41:37
 сын трахает мать с большими грудями http://cutt.us/J0TQs очень большие предметы в анале фото
невероятные приключения красной шапочки актеры порно http://cutt.us/bwooU анал з типу виробництва на п дпри мств
познакомица з девушко для секса без анкеты http://cutt.us/Vwvbt порно видео скрытая камера на нудиском пляже
брат насилует маленькую сестренку смотреть порно http://cutt.us/xfZF6 порно бен теннисон трахает свою сестру гвен
полнометражный порно фильм с трансами без вирусов http://cutt.us/pi4km порно жестокая секс по франсо русский
LonnieSeX - 2017-04-20  16:47:38
 реальное порно лесбиянок амы и дочки http://cutt.us/oWfpp блондинка в сауне в попку на шпильках порно
порно рассказы хочеш полизать мою попу http://cutt.us/LTtKJ секс у девочек в первый раз фото
насколько важен размер члена в сексе http://cutt.us/6GmT9 русскую волосатую брюнеточку в два ствола порно
порно развод на камеру за деньги http://cutt.us/hoXV3 жена разрешилатрахнуть дочь рассказ порно инцессия
вялая ебля в во все щели http://cutt.us/6Zl8n эротика и секс на яндекс частные фото
PatrickBoast - 2017-04-20  16:39:49
 Looking for a car can take too much time. There are many cars you can try, as well as a couple of considerations. Thus, you will need solid data to ensure that the procedure to be smooth. Keep this advice in mind when making a purchase.

Don't forget to investigate the fee for parts to get a vehicle before buying it. Some cars, especially imports, cost considerably more to keep up than the others. Investigate the price of parts that break down frequently, like tires, brakes, and windshield wiper blades. Research the cost of alte
ators, spark plugs, as well as other engine components, too.

Use a clear comprehension of what those upgrades will set you back. Getting the fancy stereo, leather seats and DVD player could be appealing, but those options can add a significant amount to the price tag on your vehicle. Take a moment to contemplate just how much you really need the upgrades, and only get the ones you are going to use the most.

Usually do not make your mistake of believing you need to pay the full asking price to get a second hand car. There ought to always be room for negotiation. if a car has become available on the market for a while with no buyers [url=http://www.sosnowiecskupaut.ovh/]sosnowiecskupaut.ovh/[/url], that will make the vendor more likely to accept a proposal of below these are asking for.

Have a budget in your mind before going car shopping. This involves assessing your monthly income and bills, and getting a specific idea of how much you can really afford to increase those. Doing this can help you in which to stay budget when you make your new car purchase.

Search for your brand new car online before you ever go to a dealership. Doing a search online permits you to have a look at inventory from multiple dealerships, and yes it making you privy to information regarding online only pricing. This can be a great way to comparison shop and extremely ensure you are getting the best deal.

Don't invest in a car online from someone without going and checking it all out first. In case you are not mechanically inclined, bring someone that is. Also be cautious about deals that seem too good to be real. Men and women make the most of you if you're not good with cars, so attempt to take along someone that knows about them.

Test drive a couple of car prior to buying it. Any new car is going to feel fantastic if you're employed to driving an older one. Think seriously regarding how the ride feels, where the buttons can be found, and how much of the path it is possible to see. Test-driving several car will help you realize where you wish to be.

Don't allow the salesperson know you will have a trade in until you have a company sales price in hand. Some dealers will inflate the purchase price should they think you're trading in the vehicle, to enable them to offer you a lot for the trade in, which happens to be, then balanced with the new price they give on the car they're selling.

Take a look at simply how much repairs over a car would cost before choosing it. You should certainly obtain a fair notion of what types of costs you should buy repairs. And that's not merely for after it is under warranty. What happens when you have to pay full price for the ignition coil? Different cars cost different amounts, so lea
.

Read before you sign. You may be getting in some serious trouble if you're on the market blindly signing money away. Your signature binds you legally, meaning you'll be forced to pay or suffer severe consequences. You could carry it home with you to see it. Should your salesman will not want to let you use the contract home, there is certainly probably some hidden clause they actually do not need you to discover more about.

Look into the laws where you live when it comes to getting a bad car. There are many states that have lemon laws. They may protect you against investing in a car that isn't in great condition and the inability to get yourself a refund. Not every state has these laws, which is why it is necessary to do the research.

A qualified used vehicle is not going to guarantee that this vehicle is good condition. This is merely a whole new technique for car dealers to trick people into thinking that they are guaranteed a superior quality used vehicle. Tend not to be enticed by it. Research certified vehicles just as you might some other to fully protect yourself.

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