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ářů(9144)
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
Haroreab - 2017-10-11  15:09:35
 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:34
 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
IrwinMek - 2017-10-11  14:55:07
 [url=http://www.kreditvergleich.com.de/10000/8000-euro]Kreditvergleich 8000 euro[/url] - kreditvergleich 2000 euro, Kreditvergleich 30000.
Haroreab - 2017-10-11  12:27:30
 Vesicare Comprar Cialis A Buen Precio Buy Lasix Without Prescription [url=http://cialtobuy.com]cialis[/url] Generic Viagra 100mg Price Can Cephalexin Cure Chlamydia
Ronweix - 2017-10-11  11:36:12
 Triamterene Hctz 375 25 Mg [url=http://tadalaf20mg.com]cialis[/url] Keflex Topical Componentes De La Viagra
Haroreab - 2017-10-11  10:18:35
 Zoloft For Sale [url=http://sildenafdosage.com]viagra[/url] Viagra Costo In Italia
<<[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] >>
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.