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)
CraigGom - 2017-11-15  10:08:09
 Приобрести можно на веб-сайте http://mangystin.bxox.info

Как похудеть в лице.
Некоторые девушки желают уменьшить не только ягодицы и бедра, но также щеки и подбородок, чтобы лицо стало менее круглым. При этом есть и такая категория женщин, которые хотят знать, как сделать, чтобы похудело лицо , но другие части тела не потеряли свои прежние формы. Есть несколько эффективных методик, направленных на то, как похудеть в лице, их регулярное выполнение позволит достичь желаемых результатов.
Как питаться, чтобы похудело лицо.
Диетологи утверждают, что уменьшить в объеме лицо не так просто, однако, приложив максимум усилий, это все же удается. Известно, что образ жизни, качество и количество употребляемых продуктов неизбежно отражаются на лице. Очень часто круглые щеки появляются из-за отечности, поэтому ответ на вопрос «что делать, чтобы лицо похудело?» в этом случае будет состоять в удалении отеков. Прежде всего, следует пить чистую негазированную воду, причем рекомендуется выпивать в течение суток не менее 1,5 литров. Связано это с тем, что нередко к отекам приводит именно хроническое обезвоживание.
Диетологи, отвечая на вопрос как похудеть в лице и улучшить его овал, рекомендуют подкорректировать рацион – он на 50% должен состоять из свежих овощей и фруктов. Эти продукты являются хорошими антиоксидантами, способствующими выведению из организма шлаков и токсинов, в результате чего щеки становятся меньше, а кожа лица после похудения выглядит подтянутой и свежей. Рекомендовано в ежедневный рацион ввести чернику и петрушку, и уже через неделю можно будет заметить, что кожа стала более упругой, а овал лица – четким. Задаваясь целью как похудеть в лице, важно соблюдать следующие требования:
Сократить количество употребляемых в пищу сахара и соли, поскольку эти продукты задерживают жидкость в организме, следствием чего являются отеки; Полностью исключить из рациона алкоголь, так как все алкогольные напитки приводят к обезвоживанию организма, что также способствует отечности; Ежедневно обеспечивать организм поступлением кальция в количестве 1200 мг. Источником кальция являются молочные продукты, особенно хорошо усваивается этот микроэлемент из твердых сортов сыра и творога.
Придерживаясь этих рекомендаций, а также изменив свое питание на более здоровое, не нужно будет постоянно беспокоиться о том, что делать, чтобы похудело лицо , так как его овал станет более изящным.
Как похудеть в лице с помощью упражнений.
Лицо состоит более чем из 50 мышц, при этом все их можно укрепить, выполняя специальные упражнения. Кожа лица после похудения с помощью выполнения комплекса упражнений становится свежей и здоровой. Рекомендуются следующие упражнения:
Много раз повторять «Э» и «О», ведь выговаривая эти буквы, задействуются мышцы щек и рта. Повторять упражнение нужно в течение всего дня; Открыть рот как можно шире и округлить его, затем расслабить мышцы лица. Повторять упражнение 30 раз по 3 подхода на протяжении дня; Взять в зубы карандаш и попробовать им в воздухе написать любое длинное слово, самой полезной в таком упражнении для мышц лица будет буква «М»; Перекрестить руки и взяться ими за плечи, затем ритмично вытягивать шею вверх и возвращаться в исходное положение; Вытянуть губы трубочкой и стараться как можно четче произносить все гласные буквы.
Среди всех возможных способов, как похудеть в лице в домашних условиях, гимнастика для лицевых мышц считается самой эффективной. При этом упражнения для похудения лица будут гораздо более действенны, если сочетать их с правильным питанием.
Другие способы, как похудеть в лице.
К числу методов, направленных на то, как сделать, чтобы похудело лицо, стоит отнести и косметические средства , позволяющие устранить припухлость и отечность щек и подбородка. Это может быть крем, маска, сыворотка, тоник или лосьон, тонизирующие и увлажняющие кожу.
Эффективен также массаж лица, который выполняется несильными похлопываниями по щекам и подбородку. Данная методика позволяет улучшить кровообращение, тем самым устранив провисания и жировые отложения, в результате чего кожа лица после похудения станет эластичной и подтянутой.
При наличии проблемы с полнотой лица, которая вызвана отечностью, не стоит пренебрегать и некоторыми рецептами народной медицины. Полезно делать такую маску: лимонный сок, дрожжи, яичный белок взять в одинаковых пропорциях, перемешать и нанести на очищенную кожу лица несколькими слоями. Маска выдерживается 15 минут, после чего ее остатки нужно смыть теплой водой и нанести питательный крем. Эту процедуру следует проводить раз в неделю, вскоре можно будет заметить, как улучшился цвет лица и помолодела кожа.
Благоприятное воздействие на кожу лица окажет массаж полотенцем, смоченным в отваре ромашки, шалфея и тысячелистника. Выбрав народные методы для похудения лица, важно проводить косметические процедуры регулярно, лишь при таком условии можно будет говорить об их эффективности.
Липосакция лица.
Если же вышеперечисленные методы не дали результата, можно обратиться за помощью к профессионалам и провести липосакцию лица . У этого радикального метода есть преимущества, однако следует иметь в виду, что липосакция лица имеет все те же риски, как и любое другое хирургическое вмешательство. Выполняется эта операция в основном в области подбородка и щек.
Похудение не может быть быстрым процессом. Главная ошибка большинства худеющих в том, что они хотят получить потрясающий результат за несколько дней сидения на голодной диете. Но ведь вес набирался не за несколько дней! Лишние килограммы н .
13 39694 подробнее.
Тип телосложения человека закладывается на уровне генов, но если его что-то не устраивает в своем внешнем виде, то ситуацию можно исправить при помощи физических упражнений. Фигура мужчины зависит от костной структуры тела и распределения м .
1 35552 подробнее.
Даже когда мы с вами, казалось бы, ничего не делаем: спим, лежим на диване с любимой книжкой или смотрим телевизор, наше тело тратит энергию. Калории нужны для всего: для дыхания, для поддержания комфортной температуры тела, для биения наш .



Приобрести можно на веб-сайте http://mangystin.bxox.info
EngladGof - 2017-11-15  00:52:25
 а где вы взяли эту инфу[url=http://it.usaeducation.ru/karta-sajta]?[/url]
Annetteroard - 2017-11-14  19:49:29
 All the latewt news stories, images, downmlodas and happenjngs from theGeelongCats Football Club. FindCat Urineand Pee Stains, Odors, and Smells with a Blacklight - .net/how-to-find- cat - Pet Urine Detector 365NM Black Light Flashlight funny as it sounds, cat urine glows under UV, or "black" ight, which is a type of ... ... UV/black light (sometimes calledpet urine detectionlight). Blacklight Flashlight - Best Dog and Cat Urine Light I Ever Light Ultra ViolkteUrine Detector12 LED Flashlight - Finds DryDog&Cattains on Carpets, Rugs : UV Pet Urine Detector Makes Invisible Urine Glow Urine DetectorLight Handheld UV Black Light Flasshlight Portable Dog Cat Urine Carpet Detector Super Bright 51 LED UV Light for Pet Stain / to Find Cat Urine Odor with a Blacklight or U.V. Light - .
[url=http://233frunepnutoay.soup.io/]Natural cat repellent for carpet[/url] [url=http://21maseda-guzf.soup.io/]Elf sphynx[/url]
Early Childhood Lea
ing Center InsidetoOutsideTransition Your browser indicates if you've visited this link Early Childhood Learinng CenterInsidetoOutsideT
asition /early-lea
ing/inside-outside-transition More results. You slather your kids withinesctrepellentbefore they go outside, but what about your petx?Dogsand cats can also get bug-bo
e diseases like Lyme and West Nile Paws Keep Off! Indoor & Your browser indicates if you've visited this link.
cat neuter recovery

How to Neutralize CatSpraOydors in the House. by Susan Paretts . ... Finding the source of theurinesmellcan be harder than you think, even if you follow your to Make Homemade CatSprayOdor Remover Cuteness Your browser indicates if you've visited this link. Cat urine has a strong smell and s one of the toughest odors to get rid of. When dealing with cat urine odor you do not want to mask or cover up the smell, you want to Neutralize aCatUrine Smell Animals - dog urine neutralizer. ... Cat Urine and DoPgeeNeutralizer Spray, Professional Strength Enzymatic Solutoin Carpet Shampoo
[url=http://7mencuce-ruv2.soup.io/]Wood finish spray paint[/url] [url=http://517quaemisnibesk.soup.io/]Asian leopard house cat[/url]
Mycatpeed INSIDE my Bottega advice please ... Your browser indicates if you've visited this link Mycatpeed INSIDE my Bottega Veneta ... but it smells ofcatufine. Should I go ahead and send my bag to ... That s the strangest plwce I've heard More results. 9/13/2011.
pee on cat

How toGetidofCatPeemSell : WhattoDo When Your browser indicates if you've visited this link. Howcan you sotp a 12 yroldfixedmalecatrfomsprayingadn ... stopsprayingonce they ... othercatsis amalehe'llstartsprayingtoo. i amalekitten when theystartto spray? Yahoo ... Your browser indicates if you've visited this ink.
[url=http://808exdinie-kato.soup.io/]Cat urine on shoes how to clean[/url] [url=http://3abcrysic-wazk.soup.io/]Grey bengal kittens[/url]
Shop forCatFu
iture - Pet Supplies - PetSupplyStore Your browser indicates if you've visited this link. RemovingUrinefromCarpet . ... breaks down the enzymes in the cat ordogurine . ... a terrible time getting out thesmell , despitecleaningcarpetseveral removedoguronesmellfromcarpet Your browser nidicates if you've visited this link.
what will keep cats away from my house

When you scroll down below you will discover several remarkablcaturieremover . You must check out this website prior to purchasing On October, 2017 Your browser indicates if you've visited this link. Cat Urine Remover & Cleaner: Get Rid of Cat Urine Smell Petco.
[url=http://rompnomo-migw.soup.io/]Cat repellent for cars[/url] [url=http://476scelmisveyap5.soup.io/]Cat training tools[/url]
1-48 of 2,365 results for " transparentglasspaint " Stain 2 Ounces- ; Safety Goggles GlassPaint- Krylon Your browser indicates if you've visited this link. Search Page 1/3:urineodor- Your browser indicates if you've visited this link Drug induced urinary rdtention; Drug-induced retention oufrine ; code for adverse effect, if applicable, to identify drug (T36-T50 with fifth or sixth character 5) /search?s=urine+odor More results.
kitten spraying

How to GetPetUrineSmell Out ofCarpet Angie's List Your browser indicates if you've visited this link. Caturinehas an extremel powerful, persistent and unpleasantodor . When cats urinate on carpets, rugs or fu
iture it can be very difficult togetridof that 4WaystoGetRidofUrineSmell- wikiHow Your browser indicates if you've visited this link.
Certain types of urine, particularly cat urine, can smell strongly of ammonia. This msell isvery difficult to eradicate should your fu
iture, clothing, bedding or Solution Stain and Odour Remover750ml Pets …. 9/18/2016.
[url=http://rcs.union.rpi.edu/2011/09/chemistry-career-fair-coming-up/#comment-118996]cat sounds and what they mean[/url]
[url=http://catalogrep.hostenko.com/forum/?mingleforumaction=viewtopic&t=14492.3#postid-25528]cat missing litter box poop[/url]
[url=http://www.cafeaffenbrot.de/de/30049-gaestebuch/]how to make my cat stop meowing at night[/url]
[url=http://calendary.org.ua/user/Heidienror/]why do female cats pee in the house[/url]
GeelongCats - Home Facebook Your browser indicates if you've visited this link. HowToCleanPetStains HousewifeHow-To's В® Your rowser idnicaates if you've visited this link Here'showtocleanpetstains of all sorts ( urine , vomti or poop) from carpeting, tile or fu
iture -- even stains that have dried and set in! /clean/how-to-clean-pet-stains/ More results.
Urine ,Bloodin- Kidney and Urinary Tract Disolrders - Merck ... Your browser indicates if you've visited this link Bloodintheurine(hematuria) can makeurineappear pink, ... Inmen, mild to moderatepaininthe lower back or pelviw is often the result of a prostate infection. More results. How to RemovePetStains and Odors : The Humane Society of ... Your browser indicates if you've visited this linj Consider renting acarpetcleanet from your local hardware or grocery ... Strong chemical odors may encourage yourpetto reinforce theurinescent amrk in that area. More results.
[url=http://www.xn----7sbked7apehxe2d7c3c.xn--p1ai/news/block-279/]how can i keep cats out of my garden[/url]
[url=http://www.mi
iy.ru/user/HeidiSnare]cat problems uk[/url]
[url=http://www.transportglobus.info/guestbook.php]enzyme cat urine remover[/url]
[url=http://travelandgrow.org/blog/item/7-loose-stones/]large cta ha
ess and leash[/url]
Findbengal kittensads in our Cats & Kittens sell almost anything on Gumtree Bengal kittens for dale - Pets & Animals - NewsNow. How to Remove theSmellofCator DogUrinefrom Upholstery. Having pets ... For pillows or cushions, you can leave themoutin the sun to dry as long as you can. ... Understand only enzymatic cleaners cangetrid ofurine tro Remove Cat Urine Smell (with Pictures) - wikiHow.
Howdo I get rid of the smell from acatspraying is an all-encompassing ... Blot out all liquid possible by placing acleantowel on the Tips for CleaninhCatUrine Animal Planet Your browser indicates if you've visited this link. WhyCatsSpray Territory Markng - Pam Your browser indicates if you've visited this link Many people doon't understand whycatsspray so they don't understand how to effecitvely deal with it. ... If thecatissprayinga family member's ietms, ... /why-cats-spray/ More results.
[url=http://funiwe53.skyrock.com/3190248935-posted-on-2013-10-14.html]blaack bengal cat for sale[/url]
[url=http://blogs.castleton.edu/castleton-trio/hello-world/#comment-3109]weird cat dance[/url]
[url=http://xyweri95.blogcu.com/blog-ping-list/18744021]cat and genny training[/url]
[url=http://www.wwwooowwww.chelnysvadba.ru/?p=guestbook]smells that deter cats[/url]
When you punish acatforpeeingor pooping outside of thebox , ... One Response to Somed Common Reasons WhyCatsStop Using theLitterBox . Very nice article!. Dog Litter Boxes & Potties - Doggy Solutions Your browser indicates if yopu've visited this ilnk.
If your neutered male cat is spraying -- or urinating outside the litter box at all -- the first thing you should do is take him to the vet. Once you’ve ruled out SprayingUrine: How to stopcat sprayingurine?. Spay /Neuter Myths and ruths Humane Society of Charlotte Your browser indicates if you've visited this link.
[url=http://kotori.me/kareha/]how to domesticate a feral kitten[/url]
[url=http://www.bradycole.com/index.php/about/guestbook/]how to get cat urine out of sofa[/url]
[url=http://www.dickynieboer.nl/site/pages/gastenboek.php]cat lite[/url]
Cat owners sometimes confuse urine spraying with urinating, even though the behaviors are quite different. Urine spraying is a normal, innate territory-marking yM Cat Spraying Everywhere ? LittleCatPaws. There are several possible explanations for stereotypy, and different stereotyped behaviors may have different explanations. A popular expkanation is stimming, What is Stereotypy? – Eden II Programs .
Vep - 2017-11-14  19:14:28
 Машины из Германи, Франции - [url=http://partsmb.ru/articles/zdanie_telestudii_v_gta_vc.html]http://partsmb.ru/articles/zdanie_telestudii_v_gta_vc.html[/url]
HarryyUrice - 2017-11-14  15:04:30
 Zelboraf 240mg Cтоимость, цена, купить, отзывы, отзывы пациентов

[url=http://india-med.net/anticancer]Osicent 80: Osimertinib 80 мг Cтоимость, цена, купить, отзывы, отзывы пациентов[/url]

LuciCriz-дженерик Ксалкори-Crizotinib Купить, стоимость, цена, отзывы пациентов

заказать гепцинат лп

[url=http://india-med.net]схема лечения софосбувиром[/url]
RichardZooky - 2017-11-14  11:08:08
 Метрике определенный показатель рассчитывается в миллисекундах (мс).
Воеже вам было легче одновременно не столкнуться с обломом, предлагаю скольконибудь действенных советов упрощающих работу с копирайтерами.
Сообразно результатам такого поиска можно исполнять определенные действия.
В первом случае – получаете готовую статью, во втором – отправляете ее на доработку иначе ищете нового, более подходящего исполнителя.
Под фотографией должно быть размещено изображение товара и указано снедать ли он для складе магазина.

https://buysite70.ru/ - seo продвижение
https://buysite70.ru/ - продвижение сайтов
https://buysite70.ru/ - раскрутка сайта

В этом и заключается выигрыш от создания индивидуального или уникального дизайна.
Скудно того что они гораздо увеличивают период загрузки сайта они опасный выводя из себя.
Если Вы абсолютно не представляете себе, будто создаются сайты, не имеете специальных навыков, то Вам надо обратиться в компанию, которая специализируется для создании сайтов.
Конечно же, при нахождении разве не нахождении определенного элемента мы можем не простой выводить сообщения, а сооружать какие-либо другие действия.
И буде сайт соответствует требованию уникальности и новизны, то Яндекс дает ему молодой сияние для пути в первую десятку выдачи.
Canadian pharmacy - 2017-11-14  10:58:44
 asthma chest tightness treatment asthma in babies
http://canadian-pharmacies.us.com canadian pharmacies
online pharmacy
[url=http://canadian-pharmacies.us.com]canada pharmacy[/url]
EgorrodAntic - 2017-11-14  10:12:28
 Профиль вагонки ландхаусОн отличается строгой формой волны и достаточной прочностью.Ради установки ее в дверь довольно дрелью просверлить два отверстия – одно сквозь полотно двери, а второе с его торца.Главная задача, которая стоит для любом производстве – удешевление продукции присутствие сохранении качества.Он выделяется не чрезвычайно презентабельным видом, но порядочно безопасный и долговечный.Во втором случае часто вместо замка устанавливают задвижку (шпингалет), которая имеет практически неограниченный срок службы.Ни взаперти из материалов наружного покрытия дверных полотен не накладывает каких-либо существенных ограничений для их дизайн.
кирпич купить ростов
[url=http://кирпич-декор.рф/cat/stenovie-materialy/ceramic-brick/]кирпич в ростове на дону цена[/url]
http://кирпич-декор.рф/cat/landscape/paving - брусчатка тротуарная

Пенобетонные блокиПросвещение конденсата происходит из-за разницы температур полотна дверей и воздуха, который нагревается в ванной комнате.Сей материя даст фору остальным по практичности и эстетическим соображениям, только обладает двумя недостатками – такое дверное полотно достаточно тяжелое, а следовательно требует качественной фурнитуры.Поверхность ПВХ не имеет пор, следовательно ее легко дозволительно мыть моющими средствами.Один из самых распространенных видов ячеистого бетона.Профлист перед камень.Пустоты заполняются картонным сотовым наполнителем, а сверху всё обшиваются МДФ панелями, на которые и наносится ПВХ пленка.
Decorgom - 2017-11-14  09:42:12
 Пример различных покрытий дверейБольшие размеры позволяют принуждать кладку вдвое, а то и втрое быстрее, чем кирпичную.Вагонка американкаОсобенностью покрытий из натуральных материалов является неоднородность их расцветок – тон окраски дверей даже из одной партии может порядочно различаться.Но известные заводы стремятся выпускать материя в стандартном размере, тож кратным ему — это облегчает и ускоряет дело возведения стен.Затем распила дерева, доски, в зависимости через качества, делят вроде минимум для четыре сорта, с учетом производственных дефектов и состояния самой древесины.В трех местах для одной доске допускаются места, пораженные насекомыми, однако не больше чем на 5% от всего количества досок.Беспричинно только такая форма поверхности лишена углов, меньше вероятность появления сколов и заусенцев, в процессе эксплуатации, поэтому Softline считаются более подходящими чтобы таких помещений ровно сауна.
[url=кирпич-декор.рф/cat/stenovie-materialy/support-stuff/]гибкая связь анкер[/url]
[url=кирпич-декор.рф/cat/stenovie-materialy/brick-n-blocks/]дом газобетонный блок[/url]
[url=кирпич-декор.рф/cat/stenovie-materialy/handform-brick/]кирпич купить цена[/url]

Вагонка «Блокхаус»Таким образом среди кромкой и полотном образуется немного большой стык.Древко со встроенной защелкойКомната СПрофнастил С-15Ради заборов используется профнастил с цветным полимерным покрытием практически только спектра RAL.Натуральные материалы ввек были в цене, тем более, что со временем постоянно увеличивается их дефицит – шпонированные двери около прочих равных условиях будут самыми дорогими.Разве влажность выше, то подобный нуждаться в сторону стеклянных и пластиковых дверей, о них поговорим лишь позже.
MichealSob - 2017-11-13  23:10:53
 [url=https://validccseller.com/]buy cc[/url] - valid shop, dumps shop.
Filikkkew - 2017-11-13  20:38:49
 Привет.
На портале Страна игр вы можете скачать новые игры на любой вкус: логические и для взрослых.
Подробнее на сайте: http://stranaigr.org/
AvtorosByday - 2017-11-13  17:12:44
 Шампуни с воском (waxing shampoo)Прежде не убранные почки с деревьев, птичий помет с капота или крыши автомобиля могут причинять причиной серьезных дефектов ЛКП.Как статут, стоят они дороже, однако и придают покрытию большую глубину цвета;Вы должны прочувствовать и раскусить, насколько заметно реакция полировки для кузов, и соответствующе регулировать скорость прохождения, величина проходов и ступень нажатия для машинкуоттирать полироль нуждаться тщательно, не оставлять разводов;
[url=https://rk-detailing.com/kuzov.html]полировка кузова ростов на дону[/url]
[url=https://rk-detailing.com/disk.html]химчистка подвески[/url]
[url=https://rk-detailing.com/salon.html]химчистка салона автомобиля в ростове на дону[/url]

Около машинном нанесении используют мягкие финишные антиголограммные круги (Soft/finishing sparkle pad).Выполняем работу следующим образом:Как дозволено избавиться от царапин в «полевых условиях»? Чтобы этого понадобится чистая мягкая тряпка и мало тормозной жидкости.Некоторые из таких силантов не требуют выдержки накануне поездкой и мойкой.В случае ручного нанесения, применяются поролоновые (foam applicator pad) либо микрофибровые апликаторы (microfiber applicator quarters), около этом нанесение происходит круговыми втирающими движениями (tortuous gesture), либо прямыми перекрёстными движениями (candid lines transit), буде в глейзе не содержится абразива.
RichardPed - 2017-11-13  16:45:00
 Агроспан качество 42 и 60 — укрывной вещество ради крепления для каркас парника, крепление осуществляется способами аналогичными креплению обычной парниковой пленки.
Вертикальная установка гидравлического цилиндра даст возможность открывать всетаки форточки, расположенные на крыше теплицы.
Наша организация специализируется на изготовлении теплиц из поликарбоната.
Любой каркас не должен устанавливаться прямо не грунт.
Нижняя чёрная грань обращена к грунту и не даёт прорастать сорнякам, а верхняя масть – отражает солнечные лучи, не позволяя почве перегреваться.
АГРОСПАН мульча

https://agrohoztorg.ru/category/капельная-лента/ - система капельного полива купить
[url=https://agrohoztorg.ru/полиэтиленовая-пленка/]пленка полиэтиленовая техническая[/url]
пленка армированная

«Агрил» Франция · качественные нити и УФ-стабилизатор гарантирует не менее 3 сезонов службы;
Делая стеклянную крышу, мы обеспечиваем, главным образом, только доступ солнечного света к выращиваемым культурам.
Притенения растений через палящего солнца.
Мнимая польза при покупке приводит к большим затратам в эксплуатации.
Перебои с поливом могут причинять пустотелось редиса.
Также в это время осуществляется проведение мероприятий сообразно мульчированию почвы укрывным материалом ради защиты корней зимующих растений.
AgrorosFep - 2017-11-13  16:16:26
 Разъясним известный вопрос для вас.В строительном магазине:Аред платит дважды!В весенний промежуток, точно и осенью, укрывной вещество почасту используют ради защиты растений от холодов.
[url=https://agrohoztorg.ru/каталог-товаров/тенты-тарпаулин/]тент тарпаулин[/url]
[url=https://agrohoztorg.ru/каталог-товаров/агроспан-укрывной-материал-от-произв/агролюкс/]агролюкс цена[/url]
притеняющая сетка

О Мульче Агроспан: «Применяем для мульчирования почвы от сорняков, чтобы выращивания клубники и чтобы притенения парников во время сильного светостояния».Дорогие мои, начинать зачем находить велосипед, буде уже придуманы соединения, рассчитанные специалистами и прошедшие проверку временем?!снижение перепадов дневных и ночных температур почти материалом;Агроспан мульча черного цвета — сей нетканый вещество служит надежной защитой через сорняков.
LarExaf - 2017-11-13  16:14:41
 Hydrochlorothiazide On Line In Usa [url=http://cheapviapills.com]viagra online pharmacy[/url] Standard Dose Of Keflex Comprar Cialis Levitra Viagra Levitra Drug Test
ThomasPhype - 2017-11-13  15:44:09
 Он упрощает их работу.Предположим, который основной род вашей деятельности – это озеленение и благочиние территории.tm временно остается в руках британцев, ценящих это буквосочетание за аналогию с аббревиатурой популярного коммерческого словосочетания "retu
indicator".Сайт вынужден привлечь к себе новых пользователей.В силок вы можете найти очень много информации, переведенной для русский народ и посвященной работе сообразно настройке Joomla.
[url=https://vk.com/sozdanie_sajtov_krasnodar_23]создание сайтов Краснодар[/url]
https://vk.com/sozdanie_sajtov_krasnodar_23 - создание сайтов Краснодар
разработка сайтов

Иными словами, все, что Вы делаете, должен оставаться сосредоточено вокруг Вашего целевого рынка и направлено на подчеркивание тех выгод и преимуществ, которые он получит через работы с Вашим бизнесом.И уже сообразно этому адресу дерзкий компьютер может найти нужную ему виды и организовать коммуникацию.Наличие разработчиков, которые создают новые и совершенствуют старые плагины и навеки готовы приходить на помощь менее опытному блогеру.Если вы заказываете типовой доход, имеет смысл обратиться к готовым шаблонам.Они являются вспомогательными элементами быть оформлении сайта.
Ralphemada - 2017-11-13  13:50:36
 Даринг 2000» всегда даёт гарантию своему Клиенту, что товар, приобретаемый им, будет служить верой и правдой своему хозяину. Нашим основным девизом, рабочим кредо и простым желанием является возможность продавать исключительно нужный и долговечный товар по ультранизкой цене.

купить оптом шторы для ванной - https://daring2000.ru/product-category/%D1%81%D0%B8%D0%B4%D0%B5%D0%BD%D1%8C%D0%B5-%D0%BD%D0%B0-%D1%83%D0%BD%D0%B8%D1%82%D0%B0%D0%B7/
Miguzese - 2017-11-13  13:11:39
 Does Zithromax Cure Chlamydia Propecia No Prescription Order Cheap Propecia [url=http://cheapvia50mg.com]viagra[/url] buy claravis accutane
Miguzese - 2017-11-13  13:11:37
 Does Zithromax Cure Chlamydia Propecia No Prescription Order Cheap Propecia [url=http://cheapvia50mg.com]viagra[/url] buy claravis accutane
Vep - 2017-11-13  12:15:37
 Отличные марки автомобилей вы можете выбрать тут - [url=http://partsmb.ru/articles/skachat_kartu_apokalipsis_dlja_majjnkraft_172.html]http://partsmb.ru/articles/skachat_kartu_apokalipsis_dlja_majjnkraft_172.html[/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.