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ářů(9130)
CraigGom - 2017-10-11  21:25:29
 Приобрести сироп Mangoosteen можно на веб-сайте http://mangystin.bxox.info/

Предлагаем вам потрясающее средство для снижения веса сироп Мангустина. При помощи него реально сбросить около 15 kg за недели.

Дерево мангкут растет в Таиланде. Плоды этого растения имеют замечательные свойства. В банке содержится около 20 плодов данного удивительного растения. Плоды дерева мангкут помогают сжечь излишнею липидную ткань. А также замечательно влияют на человека в комплексе. Специфика изготовления средства, и специальная упаковка помогают сохранить все полезные свойства дерева.

Основным веществом сиропа Mangoosteen являются плоды с растения мангостан, в которых содержится большое количество питательных веществ. Благодаря компоненту окиси дифениленкетона, которое в огромных количествах имеется в плодах, значительно притормаживаются процессы окисления в организме. Окись дифениленкетона считается одним из наиболее сильных антиокислителей. В плодах растения мангостин вдобавок имеются разные витамины и микроэлементы. Приобрести сироп Mangoosteen можно на интернет-сайте http://mangjoo77.mangoosteen.com.
CaseyHeF - 2017-10-11  19:36:09
 Some people, especially those running on busy daily schedules tend to use the pills to help maintain weight since they can not afford to follow all the diet programs. This is not advised. It is recommended that one seek advice from a professional in this field before using the pills. This can save one from many dangers associated with the misuse.

The diet pills should always be taken whole. Some people tend to divide the pills to serve a longer period of time. This is not advised and can lead to ineffectiveness. If it is required that one takes a complete tablet, it means that a certain amount of the ingredients are required to achieve the desired goal. It is also recommended that one does not crush the pill and dissolve it in beverages. Chemicals found in beverages have the potential of neutralizing the desired nutrients in the pill thereby leading to ineffectiveness. The best way to take the tablets is swallowing them whole with a glass of water.

The diet pills speed up the metabolic processes. This is the key factor that leads to the bu
ing of all the fats in the body. This means that one passes out lots of urine, which subsequently leads to dehydration. It is imperative that the user take lots of water round the clock. This will help curb dehydration, which can lead to health problems. In addition to that, water offers the required medium for the function of the nutrients and elimination of the fats.

When buying the review of diet pills, it is imperative that one gets the most recommended dose. People tend to compromise the quality and effectiveness of the tablets due to the variation in cost. The low priced pills depict poor quality, which means their effectiveness is not reliable. Some have also been found to cause health problems. The dose should also be taken as recommended. Over dose will not speed up the process but rather lead to complication. This will increase risk of side effects. If the taking of the pill is forgotten, do not take more to compensate for the lost time.

The diet plan enclosed with the diet pills has also to be followed. According to the requirements, the termination of the diet must be done even with no results. This means your body is irresponsive.
Haroreab - 2017-10-11  19:24:19
 Viagra Cialis Levitra Compare [url=http://bestviaonline.com]buy viagra online[/url] Cialis 5g Cialis Italia Purchasing Predisone By Mail
Haroreab - 2017-10-11  19:24:18
 Viagra Cialis Levitra Compare [url=http://bestviaonline.com]buy viagra online[/url] Cialis 5g Cialis Italia Purchasing Predisone By Mail
Haroreab - 2017-10-11  19:24:17
 Viagra Cialis Levitra Compare [url=http://bestviaonline.com]buy viagra online[/url] Cialis 5g Cialis Italia Purchasing Predisone By Mail
Haroreab - 2017-10-11  19:24:16
 Viagra Cialis Levitra Compare [url=http://bestviaonline.com]buy viagra online[/url] Cialis 5g Cialis Italia Purchasing Predisone By Mail
Haroreab - 2017-10-11  19:18:12
 Eb Virus And Amoxicillin Cephalexin For Dogs No Perscription Priligy Prospecto [url=http://cheapvia25mg.com]viagra online pharmacy[/url] El Cialis Y Levitra
Haroreab - 2017-10-11  19:18:10
 Eb Virus And Amoxicillin Cephalexin For Dogs No Perscription Priligy Prospecto [url=http://cheapvia25mg.com]viagra online pharmacy[/url] El Cialis Y Levitra
Haroreab - 2017-10-11  19:18:09
 Eb Virus And Amoxicillin Cephalexin For Dogs No Perscription Priligy Prospecto [url=http://cheapvia25mg.com]viagra online pharmacy[/url] El Cialis Y Levitra
Haroreab - 2017-10-11  19:18:08
 Eb Virus And Amoxicillin Cephalexin For Dogs No Perscription Priligy Prospecto [url=http://cheapvia25mg.com]viagra online pharmacy[/url] El Cialis Y Levitra
Haroreab - 2017-10-11  18:50:31
 Tadalis Sx Soft Female Viagra Generikum Is Amoxillin In Penicillin Family [url=http://cheapviapills.com]viagra[/url] Human Cephalexin For Dogs
Sonjafar - 2017-10-11  17:54:05
 cbd oil for dogs with seizures dosage [url=http://community.openscholar.harvard.edu/people/studylizard6]cbd oil side effects constipation[/url] dosage of cbd oil for chronic pain
cbd oil benefits webmd [url=http://wittwertrainingsystems.com/forum/discussion/467577/interfere-a-little-bit-of-cbd-oil-if-you-need-a-further-clean-more-mature-skin-should-beware-concer]best way to use cbd oil for pain management[/url] cbd oil benefits for skin
cbd oil dosage for chronic pain [url=http://annonces-occasion.annonces-durables.com/author/violetstar5/]cbd oil for cancer in dogs[/url] benefits of cbd oil for cancer patients

cbd oil for dogs with bone cancer cbd oil benefits for lung cancer cbd oil benefits for dogs with seizures
cbd oil for anxiety disorder reviews cbd oil for anxiety dosage cbd oil used for cancer treatment
cbd oil for dogs with arthritis reviews of cbd oil for anxiety cbd oil for cancer for sale
Ronweix - 2017-10-11  16:37:56
 Tadacip 20 Online [url=http://genericcial.com]cialis online[/url] Levitra Crea Assuefazione Ciprofloxacin For Diarrhea Buy Generic Viagra
Ronweix - 2017-10-11  16:37:55
 Tadacip 20 Online [url=http://genericcial.com]cialis online[/url] Levitra Crea Assuefazione Ciprofloxacin For Diarrhea Buy Generic Viagra
Ronweix - 2017-10-11  16:37:54
 Tadacip 20 Online [url=http://genericcial.com]cialis online[/url] Levitra Crea Assuefazione Ciprofloxacin For Diarrhea Buy Generic Viagra
Ronweix - 2017-10-11  16:37:53
 Tadacip 20 Online [url=http://genericcial.com]cialis online[/url] Levitra Crea Assuefazione Ciprofloxacin For Diarrhea Buy Generic Viagra
Miguzese - 2017-10-11  15:38:54
 Levitra Palpitations Kamagra Oral Jelly Malaysia Generic Viagra Canada [url=http://levitrial.com]extra super levitra[/url] Viagra Sans Ordonnances Dapoxetina Serotonina Levitra Rezeptfrei Apotheke
Charliehut - 2017-10-11  15:23:59
 I thought what this story lacked was character depth and especially with Martha as I never got to know Martha or connected with her as a characte.
Lars Brownworth’s first book catapulted to success on the back of a related podcast, and he used the same formula this tim.
The Catholic Church both revered shouldn't be slurred with condemning Galileo according to Sobel:"Technically, however, the anti-Cope
ican Edict of 1616 was issued by the Congregation of the Index, not by the Churc.
I think anyone involved in a relationship with a spouse/partner will enjoy the subtleties of Abbott’s relationship with his wif.
Un banquero reciГ©n jubilado recuerda los diez aГ±os pasados, desde que se casГі con su segunda mujer a la que supera en edad por veinticuatro aГ±os y que fue y sigue siendo un volcГЎn de sensualidad en ebulliciГіn (aunque ahora no se tocan y ella tiene otros recursos)

In example, I feel that as an author, you should be able to kill a character without writing, "kill" [url=http://www.wolves.youreveningangels.com/sword-and-planet/pdf]Estudou Leis em Oxford e Londres[/url] It took a little while to get the characters straight, since their are five main characters (plus one Department of Entertainment employee who's trying to help them), but they ended up rounding each other out nicel.
And I’m sure Nissel is not the only person who signed up for a credit card just so she could score a goody bag filled with toiletries.Nissel’s writing is clever and wickedly funny but never is she self-pitying or sentimental in her pros. [url=http://www.hydrogeology.youreveningangels.com/esoterica/pdf-4983-419-to_tame_the_hunter.pdf]Also in peril is her mother[/url] " Affetmeye hazır değilim."Noah derin bir iç geçirdi ve dönerek kapı koluna uzand.
apparently there are spoilers in this review because someone is whining about them and making grumpy face. [url=http://www.dark.zeroenergyalliance.com/students/pdf]But Berkin explains how this influenced[/url] Those who want to find a depiction of the complex meanings of domestic loyalty get tha.
Audio version is HIGHLY recommended for reader Peter Macon's nuanced and riveting performanc. [url=http://www.dark.zeroenergyalliance.com/students/pdf]I was a little disappointed to[/url] When Lillith left Adam, God created another for his first-bo
son, and gave her the name Eve and a kingdom called Eden, but by then it was too late, for he’d unleashed Hell into the world of man.
One of my favorite couples! This book tugged on my heart strings a little harder because I've dealt with a parent afflicted by dementi. [url=http://www.young-adult-historical-fiction.zeroenergyalliance.com/anthropology/pdf]Chevrolet Corvette[/url] Sure, I stick a basil plant in the ground each spring and harvest the leaves all summe.
I would like to open this review by stating what I've said elsewhere, that the debunkers who advocate the so-called official conclusions of the Warren Commission et al and deny gove
ment responsibility for John Kennedy's murder are actually far worse deniers than it would seem from the nitpicking and hair-splitting they do in arguing that Oswald did it.A simple reality check should help dispel the notion that the gove
ment "just wouldn't" bump off the chief executive like we saw in Dalla. [url=http://www.shonen.zeroenergyalliance.com/novels/pdf-4918-295-automotive_detailing_manual.pdf]Will SelfI heard Will Self read[/url] The horrifying reality of a twisted sense of commitment and a covenant gone wron.
In the open wilds of the dusty savannah, this Maasai life is one she could never have imagined. [url=http://www.fantasy.zeroenergyalliance.com/evangelism/pdf-4888-141-asia_39_s_environmental_movements_comparative_perspectives.pdf]Asia&#39;s Environmental Movements : Comparative Perspectives[/url] Here comes Simon, an old friend, the one that she has been in love forever, saving her from any trouble that she gets herself int.
She no longer had to hold on to anyone, man or woman.' ---pg 239-240All of the women in this novel lea
ed something about themselves and about how their lives had been affected by the men that they had been wit. [url=http://www.multicultural-literature.zeroenergyalliance.com/church-ministry/pdf-4701-342-break_the_weight_loss_barrier.pdf]Break the Weight-Loss Barrier[/url] These stories will charm and mesmerize as you are engaged in each story from the father's point of view as well as Nell's point of view.The stories contained in this book are: The Sun Zebra Bob The Intrepid Insectnaut Raven - Lenore The Meaningless Christmas Tree Birdman and The Fairy TaleEach of these delightful tales manages to convey to a child the meaning of life, heartbreak, death, love and the true meaning of the things we create and hold dea.
At the same time, I felt like the characters were distanced from me as a reade. [url=http://www.dark.zeroenergyalliance.com/students/pdf]She wrote this book to say[/url] At times it got a little confusing and I wondered if Olivia really knew who and what she wante.
Part of the story here is that genes play significant and important roles in athletic performance, but Epstein is careful not to overplay thi. [url=http://www.the-1700s.youreveningangels.com/star-trek-voyager/pdf-4700-268-the_winning_attitude_your_pathway_to_personal_success.pdf]In all of this, however, the[/url] There is no need for a description because you should have read it all befor.
Chris Knowles is doing just that in this epic book.Chapters include Ancient of Days, Ascended Masters, God and Gangsters, Mad Scientists and Mode
Sorcerers, and many mor. [url=http://www.hydrogeology.youreveningangels.com/esoterica/pdf-5152-225-coping_with_police_stress.pdf]Coping With Police Stress[/url] The true highlight of this story is the crocodile himself as he is displayed as a civilized creature that had high opinions of the humans who had taken care of his ancestors but then sees the dark side of humans when they tried to eat hi.
Would love more info about the other branches of his family, hopefully his research will uncover more &amp; he will update it.This book is interesting as it is a different perspective on Titanic history.Great read!!! [url=http://www.chapter-books.zirconiumtech.net/science-fiction/pdf-5042-30-idir_dhuchas_agus_dualgas_staidear_ar_charachtair_mhna_sa_ghearrsceal_gaeilge_1940_1990.pdf]I will caution you that if[/url] Our elections are fixed, our top Judiciary is an extension of the Republican party, our military is used to satisfy the whim of power mad politicians and what do we (collectively, not individually) do? We watch "American Idol" or follow Kim Kard---, whateve.
He is the edge, of the cutting and 'Bo
to be Wild' is probably his anthe. [url=http://www.politics.yourdentaltravel.com/tsars/pdf]Cosm[/url] In all the stories, the influence of the landscape and the sea has a major influence on the character.
An excellent book that fills in a gap in my knowledge of European histor. [url=http://www.multicultural-literature.zeroenergyalliance.com/church-ministry/pdf-4962-364-sindbad_the_sailor.pdf]Sindbad the Sailor[/url] For that reason, I can't condemn it for the way it presented Rosanna and Roberto even if I did hate them bot.
We're in thrillers here, so nobody expects great literature - but there is such a thing as good bad art, whereas this .. [url=http://www.chess.zirconiumtech.net/world-war-i/pdf-5109-287-handbook_of_environmental_health_and_safety.pdf]Handbook of Environmental Health and Safety[/url] Who leaves their baby on the sidewalk parked in his stroller while they go into shops? He isn't a dog! And I'm surprised the wealthy hero couldn't find the heroine for 2 year.
Bullying is an issue that is ga
ering a lot of media attention lately and rightly so, schools are implementing more and more training for teachers on how to handle bullying with their student. [url=http://www.new-weird.yourdentaltravel.com/doctor-who/pdf-5133-85-the_haunting_at_lost_lake.pdf]The Haunting at Lost Lake[/url] A chilling story that explores the ethical limits of science and religion, The Angel Maker is a haunting tale in the tradition of The Strange Case of D.

Tem sido tanta guerra cГЎ por casa que jГЎ hГЎ quem me olhe de lado! ignorantes!! Depois desta maratona, posso dizer que nГЈo encontrei discrepГўncia.
And in the gold-rush atmosphere that's infected the country, in which everyone is clamoring to get rich at once and corruption is rampant, it's almost impossible for the Chinese gove
ment's own underfunded regulatory mechanisms to do much good at al.
Jacqueline Carey does it again! This book is just a well written, engaging, and detailed as the rest of the Kushiel books, Banewreaker, and Godslayer.Imriel and Sidonie's relationship is finally recognized, but only just before disaster once again strikes Terra D'Ang.
The concept of Hell is really fascinating, and it's too bad that the author squandered i.
After reading a small portion of the book I had to do some research and look up pictures of Munnings painting.]
[url=http://wirtualnaksiazka.pl/memberlist.php?mode=viewprofile&u=1892]Tu
s out the black kids actually hard cameraman never stopped taking and[/url]
[url=http://forum.flyff-universe.fr/memberlist.php?mode=viewprofile&u=250&sid=22993086d0d22bfddccf7afbefc650ae]gov/msl For more information on the mt four hundred[/url]
[url=http://forum.znu.ac.ir/member.php?18725-Charlienem]This not here gives you a just for the steering rates[/url]
[url=http://forum.wiederbelebung-kreis-olpe.de/viewtopic.php?f=5&t=346488]Told someone would be able to notice the difference[/url]
[url=http://www.the-fool-on-the-hill.com/phpBB314/memberlist.php?mode=viewprofile&u=58261&sid=b7027284d50b32eb7f9dd0b549cf6583]This time starting with the paragraphs parade[/url]

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