0% found this document useful (0 votes)
20 views47 pages

6328

Murach's PHP and MySQL (3rd Edition) is a comprehensive guide for developing PHP applications that interact with MySQL databases. The book covers essential topics such as form data handling, database design, and advanced web skills, structured in a way that facilitates learning through practical applications. It includes detailed explanations of PHP programming concepts, MySQL operations, and best practices for web development.

Uploaded by

bilasfearng1
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views47 pages

6328

Murach's PHP and MySQL (3rd Edition) is a comprehensive guide for developing PHP applications that interact with MySQL databases. The book covers essential topics such as form data handling, database design, and advanced web skills, structured in a way that facilitates learning through practical applications. It includes detailed explanations of PHP programming concepts, MySQL operations, and best practices for web development.

Uploaded by

bilasfearng1
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 47

(eBook PDF) Murach's PHP and MySQL (3rd Edition)

by Joel Murach download

https://ebooksecure.com/product/ebook-pdf-murachs-php-and-
mysql-3rd-edition-by-joel-murach/

Download full version ebook from https://ebooksecure.com


We believe these products will be a great fit for you. Click
the link to download now, or visit ebooksecure.com
to discover even more!

(eBook PDF) Murach's C++ Programming by Joel Murach

http://ebooksecure.com/product/ebook-pdf-murachs-c-programming-
by-joel-murach/

(eBook PDF) Murach's Java Programming 5th Edition by


Joel Murach

http://ebooksecure.com/product/ebook-pdf-murachs-java-
programming-5th-edition-by-joel-murach/

Progress in Heterocyclic Chemistry Volume 29 1st


Edition - eBook PDF

https://ebooksecure.com/download/progress-in-heterocyclic-
chemistry-ebook-pdf/

(eBook PDF) Translational Medicine in CNS Drug


Development, Volume 29

http://ebooksecure.com/product/ebook-pdf-translational-medicine-
in-cns-drug-development-volume-29/
Cardiology-An Integrated Approach (Human Organ Systems)
(Dec 29, 2017)_(007179154X)_(McGraw-Hill) 1st Edition
Elmoselhi - eBook PDF

https://ebooksecure.com/download/cardiology-an-integrated-
approach-human-organ-systems-dec-29-2017_007179154x_mcgraw-hill-
ebook-pdf/

Netter Atlas of Human Anatomy-Classic Regional


Approach, 8e (Mar 29, 2022)_(0323793738)_(Elsevier) NOT
TRUE PDF 8th Edition - eBook PDF

https://ebooksecure.com/download/netter-atlas-of-human-anatomy-
classic-regional-approach-8e-mar-29-2022_0323793738_elsevier-not-
true-pdf-ebook-pdf/

(eBook PDF) Criminal Procedure 10th Edition by Joel


Samaha

http://ebooksecure.com/product/ebook-pdf-criminal-procedure-10th-
edition-by-joel-samaha/

(eBook PDF) University Calculus: Early Transcendentals


4th Edition by Joel R. Hass

http://ebooksecure.com/product/ebook-pdf-university-calculus-
early-transcendentals-4th-edition-by-joel-r-hass/

Criminal law (Twelth Edition) Joel Samaha - eBook PDF

https://ebooksecure.com/download/criminal-law-twelth-edition-
ebook-pdf/
GET OFF TO A FAST START
by learning how to develop
PHP applications that get data from
MySQL databases ...in just 6 chapters!

MASTERPHP
as you learn how to work with form data,
dates, arrays, sessions, cookies, functions,
objects, and regular expressions

MASTER MySQL
as you learn how to design, create,
and query MySQL or MariaDB databases
and use PHP to work with them

MASTER ADVANCED WEB SKILLS


like how to secure a website, prevent
injection attacks, send email, upload files,
process images, and more

VI Expanded contents

How to code control statements .....................................................72


How to code conditional expressions ............................................................................ 72
How to code if statements ............................................................................................. 74
How to code while and for statements .......................................................................... 76
How to pass control to another page ............................................................................. 78
The Future Value application ...........................................................80
The user interface ............................................................................................................ 80
The code for the index.php file ..................................................................................... 82
The code for the display_results.php file ...................................................................... 84
How to use the PHP documentation ............................................... 88
How to access the PHP manual ........................................................................................ 88
How to find the documentation you need ..................................................................... 88

Chapter 3 Introduction to relational databases and MySQL


An introduction to relational databases ......................................... 96
How a database table is organized ................................................................................ 96
How the tables in a relational database are related ...................................................... 98
How the columns in a table are defined ...................................................................... 100
The SQL statements for data manipulation ................................. 102
How to select data from a single table ........................................................................ 102
How to select data from multiple tables ..................................................................... 104
How to insert, update, and delete data ........................................................................ 106
An introduction to MySQL ............................................................. 108
What MySQL provides .................................................................................................... 108
1wo ways to work with MySQL ................................................................................. 110
How to use phpMyAdmin ............................................................... 112
How to start phpMyAdmin ......................................................................................... 112
How to log in, log out, and change your password ..................................................... 112
How to import and run a SQL script that creates a database ..................................... 114
How to review the data and structure of a table ......................................................... 116
How to run SQL statements .......................................................................................... 118
How to create users with limited privileges ............................................................... 120

Chapter 4 How to use PHP with a MySQL database


How to connect to a database and handle exceptions ............... 126
How to connect to a database ..................................................................... ...................... 126
How to handle exceptions ............... .................................................................. .............. 128
How to get and modify data ........................................................... 130
How to execute SELECT statements .......................................................................... 130
How to work with the first row of a result set............................................................. 132
How to work with all the rows of a result set ............................................................. 134
How to execute INSERT, UPDATE, and DELETE statements ................................. 136
The Product Viewer application .................................................... 138
The user interface ......................................................................................................... 138
The code ....................................................................................................................... 140
The Product Manager application ................................................. 146
The user interface ....................................................................................................... 146
The code ................................................................................................................................. 148
••
Expanded contents VII

Chapter 5 How to use the MVC pattern to organize your code


How to use the MVC pattern .......................................................... 160
An introduction to the MVC pattern .......................................................................... 160
How to code functions ................................................................................................ 162
How to redirect requests ................................................................................................ 164
The Product Manager application ................................................. 166
The user interface .......................................................................................................... 166
The model ................................................................................................................... 168
The controller ................................................................................................................ 172
Theview .......................................................................................................................... 174
The Product Catalog application ................................................... 180
The user interface .......................................................................................................... 180
The model ................................................................................................................... 182
The controller ............................................................................................................................ 182
The view ............................................................................................................................ 184

Chapter 6 How to test and debug a PHP application


An introduction to testing and debugging ................................... 192
Typical test phases for a PHP application ................................................................... 192
The three types of errors that can occur ..................................................................... 192
Common PHP errors ..................................................................................................... 194
An easy way to trace the execution of your PHP code ............................................... 196
How to debug with Xdebug and NetBeans................................... 198
How to set and remove breakpoints ............................................................................ 198
How to step through code .............................................................................................. 200
How to inspect variables .................................................................................................. 200
How to inspect the stack trace ....................................................................................... 202

Section 2 Master PHP programming


Chapter 7 How to work with form data
How to get data from a form .......................................................... 210
How to get data from text boxes, password boxes, and hidden fields ........................ 210
How to get data from a radio button ........................................................................... 212
How to get data from a check box .............................................................................. 214
How to get data from an array of check boxes ........................................................... 216
How to get data from a drop-down list ....................................................................... 218
How to get data from a list box ........................................................................................ 220
How to get data from a text area ................................................................................. 222
How to display data on a web page ..............................................224
How to format special characters ............................................................................... 224
How to format line breaks ............................................................................................... 226
How to display data with echo and print statements .................................................. 228

Chapter 8 How to code control statements


How to code conditional expressions ..........................................234
How to use the equality and identity operators .......................................................... 234
How to use the relational operators ............................................................................ 236
How to use the logical operators ................................................................................. 238
•••
VIII Expanded contents

How to code the selection structures...........................................240


How to code if statements with else clauses ............................................................... 240
How to code if statements with else if clauses ........................................................... 242
How to use the conditional and null coalesce operators ............................................ 244
How to code switch statements ................................................................................... 246
How to use a switch statement in the controller ......................................................... 248
How to code the iteration structures ............................................250
How to code while loops ............................................................................................. 250
How to code do-while loops ................................................................................................. 252
How to code for loops ....................................................................................................... 254
How to use the break and continue statements ........................................................... 256

Chapter 9 How to work with strings and numbers


How to work with strings ...............................................................262
How to create strings ...................................................................................................................... 262
How to use escape sequences ............................................................................................. 264
How to work with string length and substrings .......................................................... 266
How to search a string ....................................................................................................................................... 268
How to replace part of a string .................................................................................................................. 268
How to modify str·ings .............................................................................................................. 270
How to convert strings to and from arrays ................................................................. 272
How to convert strings to and from ASCII values ..................................................... 272
How to compare strings ......................................................................................................... 274
How to work with numbers ............................................................276
How to assign integers ................................................................................................................................ 276
How to assign floating-point values ............................................................................ 278
How to use the math functions ................................................................................................ 280
How to generate random numbers .............................................................................. 282
Other skills for working with strings and numbers..................... 284
How to use the sprintf() function to format strings and numbers .............................. 284
How to convert strings to numbers ............................................................................. 288

Chapter 10 How to work with dates


How to use timestamps to work with dates ................................. 294
How to create and format timestamps ........................................................................ 294
How to work with timestamps ...................................................................................................... 296
How to use the strtotime() function ............................................................................ 298
Examples of working with timestamps ...................................................................... 300
How to use objects to work with dates .........................................302
How to use the DateTime class .................................................................................................... 302
How to use the Dateinterval class ............................................................................... 304
How to use the Dateinterval and DateTime classes together ..................................... 306
Examples of working with DateTime objects ............................................................. 308

Chapter 11 How to create and use arrays


How to create and use an array ..................................................... 314
How to create an ar·ray .................................................................................................................... 314
How to add and delete elements ................................................................................. 316
How to work with variable substitution ...................................................................... 316
How to use for loops to work with arrays ................................................................... 318
How to create and use an associative array ................................ 320
How to create an associative array ............................................................................. 320
How to add and delete elements ................................................................................. 322
How to work with variable substitution ...................................................................... 322
How to use foreach loops to work with arrays ........................................................... 324

Expanded contents IX

How to use functions to work with arrays .................................... 326


How to fill, merge, slice, and splice arrays ................................................................. 326
How to work with queues and stacks .......................................................................... 328
How to get the sum and product of elements .............................................................. 330
How to search arrays ................................................................................................... 330
How to sort arrays .......................................................................................................... 332
How to modify arrays ................................................................................................. 334
How to work with arrays of arrays .................................................336
Understanding an array of arrays ............................................................................... 336
How to create and use an array of arrays ................................................................... 338
The Task List Manager application ...............................................340
The user interface ....................................................................................................... 340
The code for the controller ............................................................................................ 340
The code for the view ................................................................................................. 342

Chapter 12 How to work with cookies and sessions


How to work with cookies ..............................................................350
An introduction to cookies ......................................................................................... 350
How to set and get a cookie ......................................................................................... 352
How to enable or disable cookies ............................................................................... 354
How to work with sessions ............................................................356
Why session tracking is difficult with HTTP ............................................................. 356
How session tracking works in PHP ........................................................................... 356
How to start a session ................................................................................................. 358
How to set and get session variables ........................................................................... 360
How to manage a session ............................................................................................ 362
How to end a session ................................................................................................... 364
The Shopping Cart application .....................................................366
The user interface ....................................................................................................... 366
The controller .............................................................................................................. 368
The model ..................................................................................................................... 370
The Add Item view ..................................................................................................... 372
The Cart view .............................................................................................................. 374

Chapter 13 How to create and use functions


Basic skills for working with functions ........................................382
How to create and call a function ............................................................................... 382
How to pass arguments by value and by reference ..................................................... 384
How variable scope works .......................................................................................... 386
How to provide default values for parameters ............................................................ 388
How to work with type declarations ........................................................................... 390
How to use variable-length parameter lists ................................................................ 392
How to create and use a library of functions ...............................394
A library of functions ................................................................................................. 394
How to set the include path ......................................................................................... 396
How function scope works .......................................................................................... 396
How to create and use namespaces ............................................................................. 398
Advanced skills for working with functions .................................400
How to work with variable functions and callbacks ................................................... 400
How to work with anonymous functions .................................................................... 402
How to work with closures ......................................................................................... 406
X Expanded contents

The Shopping Cart application .....................................................408


The user interface .......................................................................................................... 408
The model ................................................................................................................... 412
The controller ................................................................................................................. 413
The view ...................................................................................................................... 413

Chapter 14 How to create and use objects


How to create and use classes ...................................................... 418
The code for the Category class .................................................................................. 418
The code for the Product class .................................................................................... 420
How to code properties ................................................................................................ 424
How to code constructors and destructors .................................................................. 426
How to code methods ............................................................................................................... 428
How to create and use objects ........................................................................................... 430
How to code class constants, properties, and methods ............ 432
How to code class constants ......................................................................................... 432
How to code static properties and methods ................................................................ 434
The object-oriented Product Manager application .....................436
The user interface ............................................................................................................ 436
The model ................................................................................................................... 438
The controller ..................................................................................................................... 442
The view ........................................................................................................................ 4.44
Additional skills for working with objects ....................................446
How to loop through an object's properties ................................................................ 446
How to clone and compare objects ............................................................................. 448
How to inspect an obje.ct ............................................................................................. 450
How to work with inheritance ........................................................452
How to inherit a class ....................................................................................................... 452
How to use the protected access modifier .................................................................. 454
How to create abstract classes and methods ............................................................... 456
How to create final classes and methods .................................................................... 458
How to work with interfaces ....................................................................................... 460

Chapter 15 How to use regular expressions, handle exceptions,


and validate data
How to use regular expressions ...................................................466
How to create and use regular expressions ................................................................. 466
How to match characters .................................................................................................. 468
How to use the character class ..................................................................................... 470
How to create complex patterns ..................................................................................... 472
How to use look-ahead assertions ............................................................................... 474
How to use a multiline regular expression ................................................................. 476
How to use a global regular expression ...................................................................... 476
How to replace a regular expression with a string ...................................................... 478
How to split a string on a regular expression.............................................................. 478
Regular expressions for data validation ...................................................................... 480
Ho\lV to llc111cllt! E!>Ct:eJ)tio11!S ....•.....................••.....•....................•.•..... .i.11~
How to create and throw exceptions ........................................................................... 482
How to catch exceptions ............................................................................................. 484
How to catch errors .......................................................................................................... 486

Expanded contents XI

The Registration application .........................................................488


The user interface .......................................................................................................... 488
The file structure ......................................................................................................... 488
The model ....................................................................................................................... 490
The controller .............................................................................................................. 498
The view ........................................................................................................................ 500
A long version of the Registration application ........................................................... 502

Section 3 Master MySQL programming


Chapter 16 How to design a database
How to design a data structure ..................................................... 510
The basic steps for designing a data structure ............................................................ 510
How to identify the data elements .............................................................................. 512
How to subdivide the data elements ........................................................................... 514
How to identify the tables and assign columns .......................................................... 516
How to identify the primary and foreign keys ............................................................ 518
How to enforce the relationships between tables ....................................................... 520
How normalization works ............................................................................................. 522
How to identify the columns to be indexed ................................................................ 524
How to normalize a data structure ................................................526
The seven normal forms .............................................................................................. 526
How to apply the first normal form ............................................................................ 528
How to apply the second normal form ........................................................................ 530
How to apply the third normal form .............................................. 532
When and how to denormalize a data structure ......................................................... 534
A database design tool ..................................................................536
An introduction to MySQL Workbench ..................................................................... 536
How to use MySQL Workbench to create database diagrams ................................... 538

Chapter 17 How to use SQL to create a database


How to work with databases ..........................................................544
How to create a database ............................................................................................. 544
How to select a database ............................................................................................. 544
How to drop a database ................................................................................................... 544
How to work with tables .................................................................546
An introduction to MySQL data types ....................................................................... 546
How to create a table ....................................................................................................... 548
How to code a primary key .......................................................................................... 550
How to code a foreign key constraint ......................................................................... 552
How to alter a table .......................................................................................................... 554
How to drop a table ...................................................................................................... 556
How to work with indexes ..............................................................558
How to create an index ............................................................................................... 558
How to drop an index ................................................................................................... 558
How to work with users and privileges ........................................ 560
A summary of privileges ............................................................................................ 560
How to create, rename, and drop users ....................................................................... 562
How to grant privileges .................................................................................................... 564
How to revoke privileges ............................................................................................ 566
How to view privileges ................................................................................................. 568
••
XII Expanded contents

Other skills for creating a database.............................................. 570


How to load data from text files .................................................................................. 570
How to dump a database to a SQL script ................................................................... 572
The script for the Guitar Shop database ...................................... 574
Chapter 18 How to use SQL to work with a database
How to select data from a single table .........................................582
How to select columns from a table ............................................................................ 582
How to use an alias for a column ................................................................................. 584
How to select rows with a LIMIT clause .................................................................... 586
How to select rows with a WHERE clause ................................................................. 588
How to use the logical operators.................................................................................... 590
How to use the IS NULL operator.............................................................................. 592
How to use the LIKE operator ...................................................................................... 594
How to sort rows with an ORDER BY clause ............................................................ 596
How to select data from multiple tables ....................................... 598
How to code an inner join ............................................................................................. 598
When and how to use table aliases ............................................................................. 600
How to code summary queries......................................................602
How to code aggregate functions ................................................................................ 602
How to group queries by column ................................................................................ 604
How to code subqueries ................................................................606
Where to use subqueries ................................................................................................ 606
How to code correlated subqueries ............................................................................. 608
How to insert, update, and delete rows ........................................ 610
How to insert rows ...................................................................................................... 610
How to update rows ....................................................................................................... 612
How to delete rows ...................................................................................................... 614

Chapter 19 Professional PHP for working with MySQL


Three ways to use PHP to work with MySQL ............................... 620
PDO (PHP Data Objects) ............................................................................................ 620
PHP's mysqli extension.................................................................................................. 620
PHP's MySQL extension ............................................................................................. 620
How to work with PDO ....................................................................622
How to connect to a database ...................................................................................... 622
How to select data ....................................................................................................... 622
How to insert, update, and delete data ........................................................................ 624
How to work with prepared statements ...................................................................... 626
How to set the error mode for PDO ............................................................................ 630
A model in PDO ........................................................................................................... 632
How to work with mysqli ................................................................638
How to connect to a database ..................................................................................... 638
How to select data ....................................................................................................... 640
How to insert, update, and delete data ........................................................................ 642
How to work with prepared statements ...................................................................... 644
The object-oriented style compared to the procedural style ...................................... 648
A model in mysqli ....................................................................................................... 650

Chapter 20 A database-driven website


How to work with large text columns............................................658
A simple content management system ........................................................................ 658
How to add HTML tags to text ................................................................................... 660
•••
Expanded contents XIII

The include files for the Guitar Shop website ............................. 662
The Home page .............................................................................................................. 662
The directory structure ............................................................................................... 662
The utility files ............................................................................................................... 664
The view files .............................................................................................................. 664
The Product Catalog application ................................................... 670
The user interface .......................................................................................................... 670
The controller ............................................................................................................................................ 670
The view ............................................................................................................................... 670
The Product Manager application ................................................. 674
The user interface ............................................................................................................. 674
The controller .................................................................................................................................. 676
The view .......................................................................................................................... 678

Section 4 Master the advanced skills


for building websites
Chapter 21 How to create secure websites
How to use a secure connection ...................................................688
An introduction to secure connections ....................................................................... 688
How SSL authentication works ...................................................................................... 690
How to get a digital secure certificate ........................................................................ 692
How to request a secure connection ........................................................................... 694
How to redirect to a secure connection ...................................................................... 696
How to use authentication .............................................................698
Three types of authentication ..................................................................................... 698
How to store and validate a password......................................................................... 700
How to use form-based authentication ....................................................................... 704
How to use basic authentication................................................................................... 710
How to work with cryptography .................................................... 714
An introduction to four cryptography libraries .......................................................... 714
How to install the Defuse cryptography library ......................................................... 716
How to encrypt and decrypt data ................................................................................ 716
A class for encrypting and decrypting data ................................................................ 718

Chapter 22 How to send email


How to send email ..........................................................................724
How email works .................................................................................................................................... 724
How to set up a test email account ............................................................................. 726
How to use PHPMailer to send an email .................................................................... 728
A helper function for sending an email ...................................................................... 730
How to use the helper function to send an email ........................................................ 732
The Registration application .........................................................734
The user interface .................................................................................................................................... 734
The controller ...................................................................................................................................... 736
The views .............................................................................................................................. 738

Chapter 23 How to work with files, uploads, and images


How to work with files .................................................................... 744
How to get a directory listing ....................................................................................................... 744
How to read and write an entire file ........................................................................... 746
How to read and write part of a file ............................................................................ 748
How to read and write CSV data ..................................................................................... 750
How to copy, rename, and delete a file ....................................................................... 752

XIV Expanded contents

How to upload a file ........................................................................754


HTML for uploading a file ............................................................................................ 754
PHP for working with an uploaded file ...................................................................... 754
How to work with images ...............................................................756
How to get information about an image ..................................................................... 756
How to read and write images .................................................................................... 758
How to resize an image .................................................................................................. 760
How to work with transparency .................................................................................. 762
The Image Upload application .......................................................764
The user interface ....................................................................................................... 764
The utility files ............................................................................................................ 766
The controller .............................................................................................................. 772
The view ........................................................................................................................ 774

Chapter 24 An eCommerce website


An introduction to the website ......................................................780
Prototyping and stepwise refinement.......................................................................... 780
The directory structure of the website ........................................................................ 782
The user interface for end users ...................................................784
The Catalog application .............................................................................................. 784
The Cart application ...................................................................................................... 786
The C:::heckout and Account applications .................................................................... 786
The My Account page ..................................................................................................... 790
The user interface for administrators ...........................................792
The Admin Login and Admin Menu pages ................................................................ 792
The Product Manager application............................................................................... 794
The C:::ategory Manager application ............................................................................ 794
The Order Manager application .................................................................................. 794
The Account Manager application .............................................................................. 794

Appendix A How to set up Windows for this book


How to install Chrome and Notepad++.........................................802
How to install the C:::hrome browser ............................................................................ 802
How to install Notepad++ .......................................................................................... 802
How to install and configure XAMPP ............................................804
How to install XAMPP ................................................................................................... 804
How to set the default time zone for PHP................................................................... 804
How to start and stop the Apache and MySQL servers .............................................. 806
How to configure phpMyAdmin ................................................................................. 808
How to install the book applications and databases .................. 810
How to install the source code for this book .............................................................. 810
How to create and restore the databases ..................................................................... 812
How to install NetBeans and Xdebug ........................................... 814
How to install NetBeans ............................................................................................. 814
How to install Xdebug ................................................................................................. 814

Appendix B How to set up Mac OS X for this book


How to install Chrome and BBEdit................................................ 818
How to install the C:::hrome browser ............................................................................ 818
How to install BBEdit .................................................................................................. 818
Expanded contents XV

How to install and configure XAMPP ............................................ 820


How to install XA.MPP .................................................................................................. 820
How to set the default time zone for PHP ................................................................... 820
How to start and stop the Apache and MySQL servers .............................................. 822
How to configure phpMyAdmin ................................................................................. 824
How to install the book applications and databases .................. 826
How to install the source code for this book .............................................................. 826
How to create and restore the databases ..................................................................... 828
How to install NetBeans and Xdebug ........................................... 830
How to install N etBeans ............................................................................................. 830
How to install Xdebug ................................................................................................... 830

Appendix C How to set up Linux for this book


The Chrome I Chromium browser .................................................834
How to install the Chromium browser on Ubuntu ..................................................... 834
How to install the Chrome browser on Fedora ........................................................... 836
How to install and configure XAMPP ............................................ 838
How to install XAMPP .................................................................................................. 838
How to set the default time zone for PHP ................................................................... 838
How to start and stop the Apache and MySQL servers .............................................. 840
How to change ownership of the htdocs directory ..................................................... 840
How to configure phpMyAdmin ................................................................................. 842
How to install NetBeans .................................................................844
How to install N etBeans ......................................................................................................... 844
How to build and configure Xdebug ........................................................................... 846
How to install the book applications and databases .................. 848
How to install the source code for this book .............................................................. 848
How to create and restore the databases ..................................................................... 850
Introduction
Ever since it was created in 1995, PHP has been a favorite of developers for
server-side web programming. In some surveys, it stands as today's most popular
web programming language. By most counts, over a million websites have been
written in PHP, including portions of today's largest, most recognizable sites, and
often in tandem with MySQL as the database. As a result, there's a continuing
demand for web developers who know PHP and MySQL at the professional level.
With this book, you can become one of them.
In terms of content, this 3rd Edition of the book has been updated to present
the most important features of PHP 7. In addition, it reflects the current best
practices for PHP and MySQL programming, which are constantly evolving. As
a result, we believe that this is the best edition of this book to date and the right
choice for anyone who wants to use PHP today.

Who this book is for


This book is for anyone who wants to learn how to build and maintain
websites that use PHP with MySQL or MariaDB, which are essentially
interchangeable. The only prerequisite for this book is that you have basic HTML
and CSS skills. If you don't have these skills, you can get them by reading the
first 11 chapters of Murach's HTML5 and CSS3 (3rd Edition).

What this book does


This book gets you started with PHP and MySQL as quickly as possible
and then builds out your skills in a professional way. To present the whole array
of PHP and MySQL skills in a manageable progression, it's divided into four
sections.
• Section 1 gets you off to a fast start whether or not you have any
programming experience. To do that, chapter 2 presents a complete subset
of PHP. Chapter 3 shows you how to use a MySQL database. Chapter 4
shows you how to develop database applications with PHP. Chapter 5 shows
how to structure the code in your applications by using the MVC pattern.
And chapter 6 shows you how to test and debug your web applications.
When you finish this section, you'll understand how all the pieces of a web
application fit together, and you'll be ready for rapid progress in the sections
that follow. Most important, you'll be able to build database-driven web
applications of your own!
•••
XVIII Introduction

• In section 2, you'll expand your basic PHP skills to include the professional
skills you'll need on the job every day. That means you'll soon be coding
applications that use arrays, functions, regular expressions, exception
handling, libraries, your own objects ... and more! The last application in this
section illustrates an object-oriented approach to data validation that you
can use as a model for data validation in your own applications.
• In section 3, you'll expand your basic MySQL and PHP skills to include the
skills you need for building full-fledged database-driven web applications.
In chapter 16, you'll learn how to design a database. In chapter 17, you'll
learn how to use SQL DDL statements to create a database and control user
access to it. In chapter 18, you'll learn how to use SQL DML statements
to extract and update the data in a MySQL database. And in chapters 19
and 20, you'll learn the advanced PHP skills that you need for developing
database applications.
• The last section in this book rounds out your web development skills by
showing you how to secure a website, how to send email, and how to work
with files, uploads, and images. You need these skills to make sure your web
applications come across as trustworthy, reliable, and fully professional to
your visitors. Then, the last chapter in this section shows how to put all your
skills together in an eCommerce website.

Why you'll learn faster and better with this book


Like all our books, this one has features that you won't find in competing
books. That's why we believe you'll learn faster and better with our book than
with any other. Here are just a few of those features.
• Because section 1 presents a complete subset of PHP and MySQL in just 6
chapters and 206 pages, you're ready for productive work much faster than
you are when you use competing books. This section also uses a
self-paced approach that lets experienced programmers move more quickly
and beginners work at a pace that's comfortable for absorbing all of the new
information.
• Because the next three sections present all of the other skills that you need
for developing web applications at a professional level, you can go from
beginner to professional in a single book.
• The exercises at the end of each chapter let you practice what you've just
learned. However, to make sure you get the most practice in the least time,
these exercises start from applications that you download from our website.
This download also includes the solutions to the exercises so you can get
help whenever you need it.
• If you page through this book, you'll see that all of the information is
presented in ''paired pages," with the essential syntax, guidelines, and
examples on the right page and the perspective and extra explanation on the
left page. This helps you learn faster by reading less ... and this is the ideal
reference format when you need to refresh your memory about how to do
something.

Introduction XIX

• To show you how all of the pieces of a PHP and MySQL application work
together, this book presents the HTML, PHP, and MySQL code for 16
applications, ranging from the simple to the complex. As we see it, the only
way to master PHP programming is to study the code in applications like
these.
• This book also presents dozens of short examples. As a result, you can
easily find an example that shows how to do whatever you need to do as you
develop web applications. Our ''paired pages'' presentation helps with this
because you don't have to dig out examples that are embedded in the text.

What software you need


To run web applications that use PHP and MySQL, you need the Apache
web server, the MySQL (or MariaDB) database server, and the PHP interpreter.
All three of these can be downloaded and installed for free in a single download
called XAMPP.
To edit your PHP code, we recommend using an Integrated Development
Environment that's designed for working with PHP. In particular, we recommend
the NetBeans IDE for PHP. This IDE includes a text editor that makes it easy to
enter and edit HTML, CSS, and PHP code. It provides an easy way for you to
run your applications. And it can be configured to include a debugger that can
help you debug your applications.
To edit other text files, such as the configuration files for PHP, you can use
any text editor that you like. If you don't already have a favorite, we recommend
Notepad++ for Windows and BBEdit for Mac OS X. Both are available for free.
And both are excellent text editors that can also be used to work with HTML,
CSS, and PHP code whenever an IDE seems like too much.
To test any web application, including PHP and MySQL applications, you
just need a web browser. For that, we recommend Google Chrome. It too is
available for free.

What operating systems this book supports


All of the software that you need for developing web applications with
PHP and MySQL is available for Windows, Mac OS X, and Linux. To help you
install this software, the appendixes provide the procedures that you'll need for
installing this software on Windows, Mac OS X, and Linux systems.

How our downloadable files can help you learn


If you go to our website at www.murach.com, you can download all the files
that you need for getting the most from this book. These files include:
• the source code for the applications presented in this book
• the starting points for the exercises that are at the end of each chapter
• the solutions to the exercises
XX Introduction

The source code for the book applications is valuable because it lets you run
the applications on your own PC, experiment with the source code, and copy and
paste any of the source code into your own applications. The exercise starts and
solutions are valuable because they let you practice what you've learned on your
own to gain valuable hands-on experience. Here again, the appendixes show you
how to download and install these files.

Support materials for trainers and instructors


If you're a corporate trainer or a college instructor who would like to use
this book for a course, we offer an Instructor's CD that includes: (1) instructional
objectives, (2) PowerPoint slides, (3) test banks, (4) exercise enhancements, and
(5) student projects.
To learn more about this Instructor's CD and to find out how to get it, please
go to our website at www.murach.com. Or, if you prefer, you can call Kelly at
1-800-221-5528 or send an email to [email protected].

2 companion books
Although this book presents the basic skills for designing, creating, and
working with MySQL databases, there's a lot more to learn about MySQL. To
learn more, we recommend Murach's MySQL (2nd Edition). This book shows
how to code queries for complex retrievals that you can use with your PHP code.
It shows how to use advanced features like stored procedures, functions, triggers,
and events. And it shows how to administer a database.
As you'll see in this book, you can embed PHP code within HTML that
defines the content and structure of a page. Then, you can use CSS to format that
content. Even if you have basic HTML and CSS skills, the best web developers
master HTML and CSS. To that end, we recommend Murach 's HTML5 and
CSS3 (3rd Edition).

Please let us know how this book works for you


When we started this book, Ray and I had two goals. First, we wanted to
make it easier than ever for you to get started with PHP and MySQL. Second,
we wanted you to be able to quickly raise your skills to the expert level. Now, we
hope that we have succeeded.
If you have any comments about this book, please email us at
[email protected]. We thank you for buying this book. And we wish
you all the best with your PHP and MySQL programming.

Joel Murach
Author
Get started fast
with PHP and MySQL
The six chapters in this section are designed to get you off to a fast
start with PHP and MySQL. First, in chapter 1, you'll learn how web
programming with PHP works and what tools you can use to develop PHP
applications. Then, in chapter 2, you'll learn how to use PHP to develop
applications that don't require a database.
The next two chapters get you going with MySQL databases. In
chapter 3, you'll learn how a relational database works and how to use
phpMyAdmin to work with a MySQL database. In chapter 4, you'll learn
how to develop PHP applications that get data from and store data in a
MySQL database.
The last two chapters in this section round out your skillset. First,
chapter 5 shows you how to structure and organize your code by using the
MVC pattern. Then, chapter 6 presents the techniques that you will need
for testing and debugging applications.
When you complete this section, you'll have all the skills that you need
for coding, testing, and debugging significant database applications. Then,
you can enhance those skills by reading the chapters in any of the other
sections.
Introduction to web
development with PHP
This chapter introduces you to the concepts and terms that you need for
developing web applications with PHP. This chapter also shows you how to
deploy, edit, and test a PHP application. When you finish this chapter, you'll
have all the background you need for learning how to write the code for PHP
applications.

The architecture of a web application ..................................4


How a client-server architecture works ...........................................................4
How static web pages are processed................................................................6
How dynamic web pages are processed .......................................................... 8
A survey of web application software ........................................................... 10
Highlights in the history of PHP ................................................................... 12
Highlights in the history of MySQL.............................................................. 12
The Product Discount application ...................................... 14
The user interface ............................................................................................. 14
The HTML file .............................................................................................. 16
The CSS file ........................................................................................................... 18
The PHP file.........................................................................................................20
How to edit and test a PHP application .............................. 22
How to edit a PHP page with a text editor..................................................... 22
How to start and stop Apache and MySQL on your own computer............. 24
How to deploy a PHP application ..................................................................26
How to run a PHP application .......................................................................28
How to test and debug a PHP page ................................................................ 30
How to view the source code for a web page ................................................ 32
How to use NetBeans to develop a PHP application ........ 34
How to work with PHP projects and files ...................................................... 34
How to edit and test a PHP application ......................................................... 36
How to import and configure a PHP project ................................................. 38
f>E!r!;J>E!<:ti"~ •.............••.....•......•.......•......••.....•...•..•......•.......•.. tl.C>
Another Random Scribd Document
with Unrelated Content
Hän odotteli. Aika rupesi tuntumaan pitkältä. Hän oli kovin nuori,
kovin maltiton ja hänellä oli suurtyö mielessä. Sitten hän alkoi,
vaikkei vähääkään ollut johtanut ajatuksiaan sinnepäin — ajatella
Filafer papan ravintolaa — Miziä — eilistä päivää. Eikö siitä
tosiaankaan ollut kauempaa, kun se tyttö hupakko oli häntä
suudellut? — Eilenkö se tapahtui? — Mutta eipä hän ollut tahtonut
tyttöä suudella — eikä enää koskaan sinne menisi… ja kuitenkin oli
niin ihmeellisen tyhjää, paljasta ja autiota pitää mielessään sitä
ajatusta, ettei enää koskaan saisi Miziä nähdä — ei hänen hymyään
hänen, ihmeellisiä silmiään — eikä tuntea hänen käsiään kaulassaan!

Hän tunnusteli kaulaansa ja niskaansa Annappas jos Pinacher


ehättäisikin hänen Aloisin edelle…! Kuka silloin suutelisi hänen kylmiä
poskiaan? — kuka? — Kyllä äiti!

Silloin hän puristi pyssyä kourassaan. Se oli poikittain hänen


polvillaan. Hän tarkasteli sitä, koetti lukkoa ja piitä, katsoi, oliko
sankissa ruutia — ja keksi nyt, että hän kiireessä ja peläten
herättävänsä äidin jos kovin paljon penkoisi huoneessaan, oli
unohtanut ottaa mukaansa luotikukkaron ja ruutisarven.

Hän hymyili; olihan pyssy ladattu. Yksi laukaus riittäisi — hän oli
kädestään ja silmästään varma — ruuti oli kuivaa ja pii kunnossa.

Äkkiä kurkisti jokin pää kallion takaa — utelias pääkkönen, jossa


oli kaksi pientä, taaksepäin käyristynyttä sarvea… Josef ja Maria!
vuorivuohi!

Hän unhotti kaikki — vaan ei sitä, että hän oli metsästäjä. Hän
painui hiljaa suulleen maahan, laahasi itseään eteenpäin polvillaan,
ojentaen toista kättään — toisessa oli pyssy — muutamia kuivuneita,
lumivyöryjen murtamia honganrunkoja kohti — kääntyi sitten
runkojen ja matalan pensaikon suojaamana terävässä kulmassa
ryömimään sinnepäin, missä vuorivuohen pää taas oli kadonnut —
nousi hitaasti seisaalle suuren lohkareen takana — kurkotti
kaulaansa ja tähysteli — kunnes taas näki vuorivuohen seisomassa
ihan pystyssä kallion pengermällä, etujalat yhdessä ja takajalat
hiukan harallaan, hyvän ampumamatkan päässä.

Pyssy poskelle — leimaus — laukaus! — vyöryvä kaiku — otus


lyyhistyneenä kuin salaman iskusta — ja Alois kuin salama sen
kimppuun.

Eläin sätki, käänsi silmänsä nurin ja loi tappajaansa katseen, jota


kestääkseen täytyy olla syntynyt metsämieheksi.

Hän kyykistyi — ja samassa hänen olalleen painui raskas käsi.

Kiinni! —

Se oli Bartelme Pinacher. Hänellä ei ollut mukanaan pyssyä, vaan


raskas, raudotettu, piikkipäinen sauva. Alois katsahti ylöspäin; ja se
suunnaton tyhmyys, jonka hän oli tehnyt, hervaisi silmänräpäyksessä
hänen ajatuksensa ja liikkeensä, niin ettei hän edes estänyt voutia
sieppaamasta pyssyä maasta ja heittämästä sitä olalleen.

Vouti ilkkui nauraen: sinä seuraat isäsi jälkiä, poikaseni! Mutta nyt
— mars täältä — kaksi askelta edelläni! Jos yrität karata, pistän
tämän piikin selkäsi puhki ja puin sinua niin kauan kuin jaksan!
Otusta saat itse kantaa — juuri noin selässäsi — kun kerran olet
kauniisti sille antanut, niin että riittää! Mars! —

Alois ei virkkanut sanaakaan. Kumarruksissa kantaen ampumaansa


otusta hän kulki edellä alaspäin. Vouti hänen kintereillään.
Sitten tämä komensi: seis! Aion sentään varmuudeksi — kun
mukanani on lyijyä ja ruutia — täyttää pyssysi piipun. Siitä on
itsellesi vahinkoa, jos minun tulee pakko se myös sytyttää! Sinä olet
koiviltasi minua ketterämpi — voisit saada päähäsi paiskata otuksen
maahan ja livistää. Mutta silloin minulla ei ole muuta neuvoa kuin
lähettää sinulle muistutus isäsi omalla vehkeellä. No, katsos hittoa,
kun luotini sopii — sitä voi sanoa onnen potkaukseksi! Kas niin! Nyt
vaan ruutia sankkiin! Lähdetään taas!

Pinacher oli ladannut Seppelin pyssyn ja ripustanut sen


vasemmalle olalleen. Kädessä hänellä oli piikkisauvansa, jolla hän
vähä väliä — ikäänkuin kehotukseksi — sohi nuorukaisen selässä
roikkuvaa vuorivuohta.

Aloisin sydän paisui. Kiukun, nöyryytyksen, pettymyksen, koston


kyyneliä värisi hänen silmäluomissaan. Eteenpäin kumartuneena,
huulta purren hän astui raskasta kulkua alaspäin. Millainen olikaan
hänen mielensä ollut matkalla ylöspäin!

Silloin juolahti hänen päähänsä muuan ajatus — pelastuksen.

Pinacher! sanoi hän. Minun täytyy levätä!

Lempo soikoon! kun päästään alas, kyllä minä toimitan sinulle


lepoa — kopissa rautaristikon takana!

Tällä kohtaa oli jyrkkä ahde. Heidän ympärillään oli tiheästi


honkia, havuneuloilla oli liukasta astua. Alois hellitti otuksen; se ja
hän mätkähtivät raskaasti maahan. Ylös siitä, pentu! ärjäsi vouti ja
tavotti häntä sauvallaan. Samalla hän itse menetti tasapainon, liukui
pari askelta ja kaatui puuta vasten. Niin nopeasti kuin ajatus tarttui
Alois pyssyn perään molemmin kourin — riuhtasi vimmatusti —
hihna katkesi — kuului pamaus — hurja parkaisu ja pitkä voihkina,
joka päättyi kiroukseen — ja Rauta-Bartl makasi maassa, koristen
viimeisissä hengenvedoissaan, vasen rinta ammuttuna puhki.

Alois tuijotti, savuava ase kädessä, kauhistuneena viholliseensa.

Vai tuolla tapaa! Sittenkin oli tapahtunut, mitä hän oli ajatellut —
vaikka toisella tapaa, kuin hän oli suunnitellut! Hän saapui juosten
puunhakkaajien majaan. He olivat siellä vielä. Tahdotteko pelastaa
minut? huusi hän puolivillinä ja kertoi, mitä oli tapahtunut.

Voitko vannoa Maria Luscharin jumalanäidin kautta, että kaikki on


totta, mitä sinä nyt kerroit laukauksesta, Alois? kysyi muuan.

Minä vannon! vastasi Alois ja ojensi kättään sinnepäin, missä tämä


vuori on.

Hyvä! Tässä on Rauta-Bartlin pyssy. Hän oli paha mies — kaikkia


kohtaan — ja meitä kohtaan myös. Siitä saakka, kun hän ampui
isäsi, hän on tavallisesti jättänyt tänne pyssynsä tuntureille
mennessään — kenties sen vuoksi, ettei joutuisi kiusaukseen, se
ilkiö. Nyt otamme hänen pyssynsä, laukaisemme sen ja lennätämme
sen hänen luokseen sinne, missä hän makaa. Sitten saa kuka
hyvänsä tulla ja tavata hänet ja ajatella mitä haluaa hänen
kuolintavastaan. Mutta sinun on parasta joksikin aikaa kadota tältä
seudulta. Hyvästi nyt, Alois!

Käykää joskus katsomassa äitiä! pyysi heiltä Alois. Ja sitten hän


lähti sieltä pyssy mukanaan.

*****
Tuli kesä, tuli talvi; Tarvis oli kuin lumen alle haudattu. Ja taas
saatiin kevät ja kesä ja tänne autioiden harjanteiden väliseen
laaksoseutuun levisi ennen tuntematon hämminki.

Sanottiin, että Itävalta tahtoi ruveta kolmannen kerran


tappelemaan pelätyn sotapäällikön kanssa. Eikä häntä nyt enää
nimitetty kenraaliksi tai ensimäiseksi konsuliksi. Hän oli
omavaltaisesti huudattanut itsensä Pariisissa ranskalaisten keisariksi;
paavi oli — ajatelkaas sitäkin! — voidellut hänet pyhällä öljyllä; hän
itse oli pannut omaan ja porvarillisen puolisonsa päähän
keisarikruunun; ja nyt hän oli lähtenyt Milanoon, jossa — samoin
omin käsin — oli pannut päähänsä Lombardian rautakruunun Italian
kuninkaana! Mutta tämähän oli isku vasten Itävallan naamaa — ja
loukkaus piti kostettaman. —

Tästä ja monesta muusta asiasta politikoittiin Filafer papan luona.


Sillä kun isänmaa on vaarassa ja maanisä kutsuu lippujen ääreen,
silloin höltyy kielen jänne. Pitkin seutua nähtiin sotaväkeä;
esikuntaupseerit tutkivat kanavalaaksoa — jossa Tarvis sijaitsi — ja
pientä Malborghetin vuorilinnotusta, joka viholliselta sulkee tien
Udinesta ylöspäin Friaulin kalliosolien lävitse. Myöskin Predilin sola —
jota myöten tullaan Triestistä päin — joutui asianymmärtävien
silmien tarkastettavaksi. Piti kyhätä hirsilinnotus; piti värvätä
sotamiehiä vuoristolaisten parhaista ampujista; muonaa oli koottava
varastoon — kaikki oli toimitettava, ja kuten tavallista tässä yhtä
ylevämielisessä kuin huolettomassa maassa: kaikki oli tehtävä
samassa tuokiossa — ja pappa Filaferillä oli kova kiire aluksi hankkia
olutta ja viiniä janoisiin kurkkuihin.

Alas kylää kohti asteli hiljakseen nuori, pitkä, harteva mies


vaatteet pölyssä, lyhyt rihlapyssy keltaisessa hihnassa olalla. Hänen
tummat silmänsä katselivat joka taholle, ikäänkuin hän jotakin etsisi
ja samalla tahtoisi jotakin karttaa; iltapuolen laimenneessa valossa,
jonka varjot levisivät pitkälle, hän pysähtyi Seppel vainajan pikku
majan eteen. Ovi oli teljetty kiinni, uuninpiippu ei savunnut, vaikka
naapurista tuli savua; ja hän astui naapurin ovelle, ja siellä seisoi
vanha eukko kolkkimassa maissintähkiä niinsanotuiksi
turkinjauhoiksi.

Jumalan rauha! tervehti mies.

Jesus Maria! sinäkö se olet, Alois? huudahti vaimo.

Alois nyökkäsi ja viittasi kädellään entiseen kotiinsa. Eukko aikoi


vastata, mutta mies keskeytti: Kyllä tiedän — hän on kuollut —
kuulin sen tänään Raiblissa. Sano vaan: mistä täällä päin nyt
puhutaan? —

Eukko vastasi hänelle kerkein kielin, että nyt puhuttiin sodasta eikä
mistään muusta. Että Filafer papan luona majaili jokin upseeri ja
värvääjäkersantti — että kamreeri oli kuollut halvaukseen — j.n.e.
Vaan mistä sinä tulet, Alois? ja mitä sinä olet niin kauan puuhannut?

Minä olen ollut monessa paikassa — pitkin koko Krainia —


metsätaloissa ja sahoissa — ja nyt olen tullut katsomaan äidin
hautaa. Sillä totta kai hänet haudattiin tuonne kirkkomaahan isän
viereen? — Voi sentään! kyllä hän sai kristillisen ja hyvän
hautauksen; ja kauniisti hän kuoli; minä olin hänen luonaan viime
ajat; annoimme hänelle soppaa joka päivä; hänen oli vaan niin
kauhean ikävä sinua! —

Alois käänsi kasvonsa poispäin. Onko sinulla kotioveni avain? kysyi


hän jyrkästi.
Sitten hän meni vanhaan mökkiinsä. Hän istuutui tuolille, jolla
äidin oli ollut tapana istua; ja siihen hän jäi liikkumattomana käsi
silmillä, kunnes tuli aivan pimeä. Hän nousi, sytytti kynttilänpätkän,
tarkasti kaikki esineet. Talouskapineista ei ollut montakaan jäljellä,
kun hautajaismenot oli suoritettu. Mutta kaikkialla, missä äiti oli
liikkunut, ja kaikessa, mitä äiti oli pidellyt, hän viivähti, etsien
näkyväisten esineiden avulla näkymättömiä muistoja.

Kaapin päältä hän löysi sen pitkähkön, kirjokantisen lippaan, jonka


Mizi oli hänelle lahjottanut. Hän otti sen sieltä, pyyhki siitä pois
paksun pölyn ja hämähäkinseitit ja katseli sitä. Hm! sehän on
ruumiskirstun näköinen — lapsen kirstun. Voi, jospa olisin kuollut jo
pienenä!…

Kaikissa tapauksissa häntä kummallisesti ilahutti, että lipas oli


säilynyt oikeudenpalvelijain kynsistä. Hän laski sen ylimmälle
kapealle hyllylle kaappiin — tyhjään kaappiin — ja lukitsi oven.

Kuu oli noussut. Se paistoi tuttavallisesti, täynnä lapsuuden


muistoja ja samalla kumman kaameasti huoneeseen pienien
ruutujen lävitse. Hän sammutti kynttilänpätkänsä ja meni ulos
hiljaiseen, lämpimään iltaan. Kapeata ajotietä pitkin, joka kulkee
Prisnigin poikki, hän joutui Tarvisin ylimpään osaan, missä on pitäjän
kirkko ja hautuumaa. Käyntiportti ei ollut lukossa; eräässä kolkassa
hautuumaan muurin vieressä hän löysi kirkkaassa kuutamossa sen
pienen haudan, jossa hänen vanhempansa lepäsivät. Hän polvistui,
laski hattunsa maahan, hypisteli rukousnauhansa pieniä puuhelmiä
ja luki kaikki ne rukoukset, jotka oli äidiltään oppinut.

Hän rukoili, niinkuin hyvä katolilainen voi rukoilla — ja oikeastaan


siis hyvin hartaasti.
Kun hän jälleen tuli hautuumaalta pois — niin, minne nyt sopi
mennä? Papinko luo, jonka akkunoista loisti valoa? Mutta mitä apua
hänelle papistakaan olisi — nyt kun hän oli rukoillut haudalla ja
sanonut jäähyväiset kaikelle, mikä hänelle oli maan päällä rakasta?

Maailma oli hänestä käynyt niin yhdentekeväksi; ja taivaaseen


hänellä sentään oli koko matka — tuntui hänestä.

Hän kuljeskeli umpimähkään pitkin kylää. Kenties häntä ei


kuitenkaan oltu ihan unhotettu; ehkä häntä odotti tilinteko viime
kerrasta… Siinä tapauksessa hän vastaisi puolestansa, hänen oli
pakko olla siihen valmiina — ja nyt olikin jo aika, sillä hän tahtoi
päästä eroon niistä kalvavista ajatuksista, jotka olivat häntä poissa
ollessa rasittaneet.

Kaikki vanhat ravintolat olivat avoinna. Kaikkialla hän tapasi


ihmisiä ja joutui puheisiin monen kanssa. Mutta hän sai myöskin
huomata todeksi, ettei tarvitse olla kotoaan kovinkaan kauaa poissa
joutuakseen unhotuksiin muiden asiain vuoksi. Joka paikassa häntä
kohtasi politiikka ja sota — puolesta ja vastaan. Mitä semmoinen
juttelu häneen koski? Hänestä tuntui,kuin maailma pyörisi vaan
Pinacherin ja hänen ympärillään, mutta kukaan ei välittänyt voudista
rahtuakaan; — jo aikoja oli hänen sijaansa tullut toinen Rauta-Bartl.
— Eikä hänelle itselleen, Aloisille, sanottu muuta kuin lasia tarjoten
iloisesti: Missä hiidessä sinä olet niin kauan maleksinut? —

Lopulta hän osui Filafer papan ravintolaan.

Siellä oli useita vanhoja vieraita, ja uusiakin oli tullut monta.


Tupakansavun lävitse näkyi talikynttiläin punertavassa loisteessa
sotilaspukuja; ja kuului montakin vahvaa kärntiläistä ja ylä-
itävaltalaista kirousta, ja viiksiä kierreltiin ja kuivailtiin ja sitten suu
taas peittyi niiden alle, samalla kun olut ja viini virtasi alas kurkuista.
Kaikki puhuivat kilpaa, nauroivat, lauloivat… eipä täällä kukaan
tiedustellut Seppel räätälin poikaa. Muuan toinen hauska Seppel —
tosin ei räätäli — johti puhetta tarvisilaisten puolesta; harmahtava
värvääjäkersantti jyskytti pöytää alati tyhjentyneellä ruukullaan — ja
Mizi — niin, Mizi — hän pujottelihe ketterästi edestakaisin lukuisten
ojennettujen käsivarsien suopeista syleilyistä — ja aina hän osasi
viedä tyhjät ruukut ja karahvit pois huoneesta ja tuoda ne
täysinäisinä takaisin, samalla kun hänellä oli hymähdys ja sukkela
vastaus varalla kaikille, jättämättä ketään osapuoleksi — kuten hyvä
ravintolatapa vaatii, mutta sittenkin siellä näytti eräs nuorehko
upseeri erikoisesti hääräävän ollakseen hänelle otollinen; ja tässä
hänellä olivat apuna tahi vuoroin esteenä eräät naureskelevat
kadetit, jotka ehtimiseen tunnustelivat nenänsä alta, miten pitkälle
heidän versovat viiksensä olivat kasvussaan päässeet viimeisinä
viitenä minuuttina.
Muista jonkun matkan päässä istui nuori, pulska korpraali ja
seurasi tummilla, elävillä, omituisen kovilla silmillään kauniin immen
jokaista liikettä, vaan ei kertaakaan häntä puhutellut — ehkä sen
vuoksi, että hänen esimiehensä oli läsnä. Sen sijaan hän välistä
puheli Filafer papan kanssa; ja tämä kunnon ukko, joka oli
tavattomasti paisunut ja näytti kärsivän luuvaloa, oli saanut entistä
leveämmän nojatuolin ja jättänyt kaikki hommat tyttären haltuun.

Sen hän saattoikin huoleti tehdä. Sievästä Mizistä oli tullut


täydellinen kaunotar — sellainen, kuin Tarvisissa saattoi olla, vieläpä
kauniimpikin, kuin tässä laaksossa luulisi tapaavansa — mutta
hänessä oli myöskin kehittynyt varma ryhti liikkeissä ja säädyllinen
käytös, jokin paremmuus kaiken hymynsä ja juttelunsa ja
leikinlaskunsa ohella, jokin arvokkaisuus hoitaessaan tätä
vaaranalaista tointansa — ja kuitenkin hänessä oli vielä jäljellä niin
paljon lapsekasta, sekä "ihmettelevissä" silmissä että hymyssä ja
naurussa — ja hänen täyteläisemmät piirteensä, jotka vetivät
puoleensa kaikki nämä ihailevat katseet ja virittivät kaiken tämän
ilmeisesti hedelmättömän kilpataistelun — ne vaan saattoivat
paremmin näkemään nuorta tuoreutta tässä vaarallisessa olennossa,
joka on leikkisä kissa ja täysin varttunut, tietävä ja itsetietoinen
nainen yhtenä henkilönä.

Alois oli ennen sinne tuloaan itsekseen päättänyt lähteä sieltä heti
pois. Hän jäi sinne istumaan koko illaksi ihan sulkemiseen saakka; ja
tämä tapahtui hyvin myöhään.

Kukaan ei häneen kiinnittänyt huomiota. Filafer pappa osotti


lyhyellä nyökkäyksellä hänet tuntevansa; siinä kaikki. Samanlaiseen
nyökkäyksen hän sai Miziltäkin — aivan kuin tämä olisi hänet nähnyt
edellisenä päivänä. Alois oli harmissaan, ajatteli hiukan, kuinka
tuhmasti hän teki, ja jäi istumaan.

Hän istui siellä ja kesti kuumuutta ja savua ja kaikkea tätä


haastelua, joka ei häntä vähääkään huvittanut. Mitä hän välitti koko
maailman sotamiehistä, Napoleonista tai Franz keisarista? Hän oli
koditon miekkonen, se hän oli; mökin hän aikoi myydä — jos hänellä
siinä enää oli mitään omaa — ja sitten hän tahtoi täältä pois, yli
korkeiden vuorten, ja elää "vapaana" metsämiehenä, kaukana tästä
laaksosta, missä keltään ei enää hänelle liiennyt ystävällistä sanaa
eikä hyväilyä — eipä edes epäystävällistä sanaa. Mutta kuitenkin hän
tahtoi nähdä "kometian" täällä loppuun saakka; ja vastoin tapaansa
hän tilasi pikku karahvin toisensa perästä kotoista viiniä; ja veri alkoi
niin kummasti jyskyttää hänen suonissaan.

Lopulta hän itsekin rupesi pitämään itseään naurettavana. Hän


nousi paikaltaan oven luota ja astui ulos eteiseen. Juuri silloin
ilmestyi tänne Mizi keittiöstä:

Minnekä sinä aiot? —

Enpä tiedä — anna minun vaan mennä! —

Eihän sinua kukaan kiinni pidä! vastasi Mizi nauraen. Ja hän laski
käsistään pois lasit ja veti hänet kurillaan keittiöön. Tuli räiski
uunissa, vanha, kuuro palvelija oli heihin selin; Mizi tarttui hänen
nuttunsa rinnukseen ja sanoi:

Onpa sinusta tullut oikein muhkea mies, Alois! Sinä olisit


sotilaspuvussa komea!…

Vai niin, niinkö luulet —?


Mutta Mizi veti häntä leikillä likellensä, vaikka hän vastusteli ja
hänen tummien silmiensä päälle ilmestyi ryppy. Alois joutui niin
lähelle tyttöä, että Mizin raittiit, lämpöiset henkäykset hulmahtivat
hänen kasvoilleen ja sytyttivät hänen poskissaan sellaisen punan,
joka veti vertoja takkavalkealle. Ja tyttö kuiskasi hänelle:

Vieraiden mentyä me saamme jutella. Mene nyt vaan sisään —


äläkä ole milläsikään!

Alois siis istui jälleen tarjoiluhuoneessa. Miten aika kului, sitä hän
ei huomannut. Mutta yksitellen taikka pienissä, meluavissa parvissa
vieraat katosivat — jotkut hyvinkin vastahakoisesti. Ja viimein nousi
Filafer pappa ja laahusti vaivaloisesti lattian poikki.

No, Alois; kotiinko aiot? kysyi hän kieli jokseenkin paksuna.

Niin, nyt minä lähden! kuului Aloisin vastaus. Mutta istumaan hän
jäi ja vastasi tuikeasti siihen — jokseenkin tutkivaan — silmäykseen,
jolla viimeinen vieras, pulska korpraali, häntä tarkasteli. Ulko-ovessa
Mizi sanoi monta "hyvää yötä" vierailleen; Aloisista tuntui korpraali
saavan pisimmän — mutta eipä se nuori upseerikaan, jolla oli talossa
kortteerinsa, kovin hätäisesti eronnut kauniista ravintolantyttärestä.
Vihdoin hän kuului kävelevän ylhäällä huoneessansa — myöskin
Filafer pappa oli kömpinyt komeroonsa — Alois oli yksinään tyhjässä
salissa, keskellä rähjääntyneitä pöytiä, joiden märkyydessä veltto
kynttiläpahanen kuvasti unen uuvuttamaa liekkiään.

Aloisin sydän jyskytti. Pienistä, avoimista akkunoista pyrki savu


ulos yöhön, ja sen sijaan heitti kuu säteitään sisään. Alois koetteli
otsaansa; se oli kuuma; ja hän ajatteli kotimökkinsä kamaria, jossa
kahden aavemaisen valojuovan välillä leijaili kuin äidin hahmo
surumielisin silmin varottaen — sillä olihan kotonakin kuutamo.
Hän aikoi lähteä; — ei, pitihän hänen jäädä odottamaan! mutta
miksei Mizi tullut? voi, hän oli tomppeli, hölmö, noiduttu mies
poloinen — kun näin retkotti penkillä ja sohi sormeansa valuneeseen
viiniin — ja piirteli Mizin nimikirjaimia!

Lopulta Mizi tuli: Olet saanut aika lailla odottaa! Mutta minun piti
sammuttaa valkea ja järjestää huomista varten — sillä nyt minun
pitää tehdä melkein kaikki! —

Hän istuutui heti Aloisin viereen, mutta näytti hiukan hajamieliseltä


ja tyytymättömältä. Hetken aikaa he istuivat ääneti. Oletko väsynyt?
kysyi Alois.

Eikö sovi ollakin väsynyt tämmöisen päivän jälkeen? vastasi tyttö,


kaatoi itselleen lasillisen viiniä ja joi sen. Juo! sanoi hän Aloisille.
Olen jo kyllikseni juonut! vastasi nuorukainen. No, kerro edes
jotakin! sanoi Mizi ja nykäisi häntä hihasta. Mitä minä kertoisin? kysyi
Alois hidastellen; sinähän kuulet ja näet niin paljon! — Niinpä niin,
kyllä täällä nyt eletään hauskasti! myönsi Mizi. On tuota sotaväkeä —
ja se oikein kiiltää silmissä, niin että sydän povessa hyppelee…
kunpa sinäkin saisit sellaisen harmaan sotilastakin, jossa on vihreät
rinnukset ja kiiltävät napit, niinkuin kenttäjääkäreillä, ja
ihonmukaiset housut ja puolisaappaat ja huopalakin ja sapelin!
Semmoisena minä tahtoisin sinut nähdä…! —No? sanoi Alois; jos sitä
kertoaksesi olet minut jättänyt niin kauan odottamaan, niin… Ja hän
näytti aikovan nousta.

Lorua! sanoi Mizi ja laski käsivartensa hänen kaulalleen.


Olemmehan viime kerrasta saakka kihloissa. Annas kun katson,
vieläkö sinulla on sormukseni? On tosiaankin! Sinä olet siis ajatellut
minua? —
Että olenko? —

Alois katsoi häntä silmiin ja sanoi hitaasti, hiukan hillityllä äänellä:

Pidätkö minua narrina? Melkein voisin sen uskoa, kun sinua


katselen liikkuessasi muiden joukossa. Mutta jos todella jotakin
tarkotit sormuksellasi, niin voin sinulle sanoa, etten hetkeksikään ole
lakannut sinua ajattelemasta sillä aikaa, kun olin poissa. Sen sinulle
nyt sanon — ja voit mielesi mukaan saada sormuksen takaisin, — jos
se muuten heltiää sormestani. Mutta jos nyt jätät sen tuohon — ja
jos sitten kerran saan ilmi, että sinä vaan leikittelit minun kanssani,
niin… niin silloin…!

Hän jätti kesken. Mutta kättä, johon hän oli tarttunut, hän rutisti
niin, että Mizi päästi parahduksen ja näytti närkästyneen. Mutta pian
palasi taas hymy; hän tuijotti suoraan eteensä; rypisti hienoja,
kaarevia kulmakarvojaan hiukan — ikäänkuin ajattelisi jotakin
vastenmielistä. Hänen huulensa värähtivät; hän huokasi syvään,
kääntyi äkkiä Aloisiin ja suuteli häntä.

Alois vapisi pidellessään Miziä sylissään. Sano, että rakastat minua


— että sinä olet minun! kuuletko: sano se! pyysi Alois hartaasti.

Mizi suuteli häntä. Pikkunen kynttiläpahanen rupesi pöydällä


kummallisesti kieppumaan punertavan loistoisissa ympyröissä. Koko
maailman makea viini tuntui valuvan Aloisin huulille, tunkeutuvan
hänen sydämeensä, nousevan hänen päähänsä, pyörryttävän, niin
autuaasti kivistävän — samalla kun hän tunsi kaipuuta ikuiseen
lepoon, peläten heräävänsä ja havaitsevansa, että kaikki olikin vaan
unta.
Kun hän jälleen pystyi näkemään silmillään, istui hän siinä
punastunut Mizi sylissään; eivätkä Mizin silmät ihmetelleet
kerrassaan mitään. Ja Alois ajatteli itsekseen — sillä vähimminkin
itserakkailla nuorilla miehillä on turhamaisuutensa — että kaunein
tyttö kymmenen penikulman alalta nyt oli hänen!

Kun kuu alkoi kalveta, seisoi Alois pikku mökkinsä edessä. Hän ei
voinut mennä sisään; eihän nyt mitenkään voinut nukkua, kun tämä
suunnaton onni oli hänelle osunut. Ei kukaan muu kuin hänen äitinsä
ollut koskaan hänelle suonut hyväilyä, jota voisi selittää rakkaudeksi
— ja nyt oli maailman ihanuus tullut hänen osakseen. Krainin
sloveenilaisiin tyttöihin hän ei ollut katsahtanutkaan — vaikka ne
olivat häntä vaanineet montakin kertaa. Ja nyt oli Mizi tullut hänen
omakseen — kaunis, ihana, kuvaamattoman suloinen Mizi. Hän ei
ollut ennen lainkaan tuntenut Mizin oikeata luontoa; oli tehnyt
hänelle vääryyttä… hän ei enää koskaan päästäisi mieleensä pahaa
ajatusta. Hänen teki mielensä mennä takaisin ravintolaan, tunnustaa
Mizille kaikki — olihan niin paljon sellaista, mitä hän ei ollut saanut
Mizille sanotuksi — ja varsinkin sen hän tahtoi Mizille sanoa, ettei
hän voinut käsittää, kuinka Mizi saattoi rakastaa semmoista
mitätöntä kuin hän oli… Ja hän lähti juoksemaan takaisin.

Silloin hän näki eräässä tien käänteessä — kalpenevassa


kuutamossa, joka kamppaili alkavan aamusarastuksen kanssa —
sotilaspukuisen hahmon kumartuvan pikku puutarhan käyntiportin
ylitse sillä puolella ravintolaa, missä hän itse äsken oli sanonut Filafer
papan tyttärelle pitkälliset ja hellät hyvästit. Hän pysähtyi seisomaan,
ikäänkuin jalat olisivat maahan kiinni tarttuneet. Varmaankin nyt
silmät valehtelivat! mutta tällä valeilmiöllä oli kuitenkin muutama
kiiltonappi — hahmo liikkui — portti aukeni — ja Alois hiipi
saapuville, ihan koneellisesti, mutta kyyryssä metsämiehen vaistoa
noudattaen — ja näki Mizin molempien valkeiden käsivartten
laskeutuvan hahmon kaulalle — ja sitten pari katosi. Kuun utu ja
aamu-usva näytti ne molemmat nielleen.

Alois olisi voinut hyökätä esille — hänellä oli veitsensä mukanaan


— olisi voinut kiljaista, tehdä satakin eri työtä, joihin ensi
lemmessään ja ylpeydessään syvästi loukattu olento ryhtyy… mutta
hän oli kokonaan hervahtunut. Kun hän ei ollut kokenut petosta eikä
valhetta, ei naisissa eikä miehissä, ja kun hän oli aivan kykenemätön
ymmärtämään semmoista, minkä vertaista ei hänen oma
ajatuksensa voinut kuvitella, kääntyi hän poispäin kuin haavotettu
eläin ja olisi kaatunut nurin, ellei kallio olisi ollut ihan tien vieressä.
Siinä hän seisoi jonkun aikaa, jyskyttävä, märkä otsa kylmää kiveä
vasten.

Sitte hän yhtäkkiä nauroi kovasti, kavahti naurunsa sointua ja


juoksi kotiin, tupaan, kamariin, missä oli äidin sänky olkia täynnä. Ja
sinne hän kaivautui ja nyyhkytti ja kiroili ja itki ja rukoili — kunnes
aivan uupuneena vaipui nukuksiin ja nukkui unta näkemättä, niinkuin
puolikuollut. — —

Mutta aamupäivällä marssi pohjoista kohti pieni osasto seudun


parhaita nuoria ampujia värvääjäkersantin johtamana. Tämä harmaa
soturi heilautti pulloansa, kun oli päästy sille kohdalle Klagenfurtiin
viepää tietä, missä Tarvisia saartavat sinertävät vuoret vaipuvat
lähimmän törmän taakse. Hyvästi, Tarvis! huusi hän. Hyvästi, pappa
Filafer! ja sinä kaunis Mizi!… Ja hän joi pullon tyhjäksi ja singautti
sen kohisevan Schlitza-joen kuiluun. Sitten hän kääntyi nuorimman
pyssymiehen puoleen, joka marssi kuolonkalpeana ja hoippui,
ikäänkuin juuri hän olisi tuon suuren pullon tyhjentänyt. Mitä
hemmettiä, poikaseni! onko sinussa vilutauti? Reippaasti vaan! Ei
sotamies tiedä, elääkö hän enää huomispäivää!

*****

Ja koko joukko — paitsi tätä yhtä nuorta ampujaa — lauloi


keuhkojen täydeltä vanhaa kärntiläislaulua:

Der Himmel ist hater, das Wetter ist schean, und die Nacht
thuet nit plaudern, wer zue mein Diendlan gean.

[Suomeksi: Taivas on selkeä, ilma on kaunis; eikä yö lavertele,


kuka tyttöni luona käy.]

*****

Sotaretken tarina oli piankin lopussa. Kolmen keisarin taistelu


Austerlitzissa on historian suuria tapahtumia; nyt sen tietää joka
koulupoika kuin viisi sormeaan — ja silloinen maailma piti sitä
ainakin loppuna kaikkeen vastarintaan, mitä voitiin tehdä
taistelutannerten suurimmalle nerolle, valtaistuinten ja laillisten
hallitsijain kumoojalle. Mitä apua siitä oli, että keisari Franz ja keisari
Aleksanteri olivat koonneet yhteen Itävallan ja Venäjän tuhannet?
Tuona joulukuun 2:na päivänä 1805 molemmat keisarit jättivät
verisen taistelutanteren Määrissä — mutta sinne jäivät tuhansien
tuhannet haavottuneet ja kaatuneet sotamiehet. Napoleon
Ensimäinen oli saavuttanut "loistavan" voiton. Kuka silloin uskalsi
ajatella, että saataisiin nähdä vielä suurempia kauhuja, vielä
enemmän verta, vielä laajempi luminen taistelutanner, missä
jättiläinen kukistuisi ja käärinliina täynnä punaisia pilkkuja
vedettäisiin yli Ranskan ja puolen Europan väkevien valiopoikain?
Niitä oli kai harvoja, jotka silloin ajattelivat; — ja siinä pienessä
kenttäjääkärien osastossa, joka joulun aikaan ponnisteli lumen halki
Tarvisia kohti, oli tuskin ainoatakaan, joka semmoista ajatteli.

Risaisia ja kuluneita olivat heidän sotilaspukunsa; lyhyet


rihlapyssyt roikkuivat voimattomien miekkosten olalla. Eräällä oli
pilkullinen side otsassa, toisella riepu paljaan jalan ympärillä, mutta
etunenässä astui Alois, vasen käsivarsi solmittuna vanhalla
pyyhinliinalla niskan varaan. Hän tuki toveria, joka kompuroitsi
vaivaloisesti ja toisinaan pysähtyi keventääkseen mieltään kovalla
kirouksella tai hiljaisella rukouksella, eivätkä he isänmaan
puolustajina näyttäneet voivan tehdä paljoakaan haittaa viholliselle,
jos tämä olisi äkkiä ilmestynyt ja sulkenut heiltä tien.

Vaan kukapa täällä vihollista ajatteli? Lyhyen aselevon jälkeen oli


tullut pikainen rauha, ja nämä kotiin pyrkivät olivat palveluksesta
päästettyä väkeä.

Alois marssi etunenässä. Hän oli sodan vaivoista kasvoiltaan


riutunut; posket olivat kalpeat — mutta hän olikin menettänyt nuorta
vertaan. Tummiin silmiin oli tullut kova, tuikea ilme — ja se katse,
joka nyt etsi taloja ja mökkiä alhaalla laaksossa,oli melkein uhkaava.

Sanon sinulle, Alois — virkkoi hänen toverinsa — sinun on


sittenkin meistä kaikista käynyt parhaiten; sillä eihän sinulla ole
eukkoa eikä palleroisia, ei edes henttua, jolle nyt tarvitsisi näyttää
rääsyjäsi ja kipeitä raajojasi!

Mitä Josef haastelee! huusi muuan; ja hän seisahti toiselle


terveelle jalalleen, heilutti rei'ikästä huopalakkiaan kirkkaassa
pakkasilmassa ja hoilasi: Hihhei! eläköön Tarvis! eläköön Kärnti!
Eläköön vanha Itävalta ja hyvä Franz keisari! Jos hän meitä tarvitsisi
neljännen kerran, niin kaikki iloiset kärntiläiset saapuisivat paikalle
pyssyt mukana — ranskalaisten ja turkkilaisten ja vaikka
valkoratsuisen Napoleoninkin kiusalla! —

Eläköön isänmaa! huudahti pari miestä.

Lorua koko isänmaa! murisi Alois. Semmoista opitaan hoilaamaan


kasarmin pihalla. Mutta ei sitä voida haistaa eikä maistaa eikä syödä
eikä juoda. Mitä minä tiedän isänmaasta? Kasarmissa olen ollut — ja
marssimassa — ja sodassa ampumalinjassa; enkä ole mitään nähnyt
pelkältä ruudinsavulta — en ainoatakaan ranskalaista — sain vaan
käsivarteeni luodin; ja sitten minut viskattiin vaunuihin — ja nyt olen
täällä! Ei kukaan ole minua kiittänyt, kun sinne saavuin; eikä kukaan
puristanut kouraani, kun sieltä läksin. Jos tämä on isänmaan
puolesta tappelemista, niin olisi linnunpelätin keppi kädessä voinut
suorittaa saman kuin minä. Piru vieköön sotilaslaitoksen! Nuo vuoret
tuolla — ne ovat minun isänmaani. Minä tahdon olla vapaa
metsämies; jos minun pitää vasta joutua ammuttavaksi, niin
ampukoon herrain pyssymies… häneltä se käy nasevasti ja täydesti!
Hihhei! —

Remahtaen nauruun — kovaan kovassa pakkasessa — hän heitti


lakkinsa tieltä alas Schlitza-jokeen, samalle kohtaa, jonne
värvääjäkersantti oli pullonsa lennättänyt. Missähän kersantti oli?
Niin, missähän olivat kaikki kesäiset miehet? Alois ei sitä kysynyt eikä
ajatellut. Mitä hän huoli koko maailmasta?

Ja nyt oltiin kotona.

Kotiin? — kotona? Ihanin sana sen korvissa, joka ikävöi ja jota


joku ikävöi. Alois tuli takaisin vanhaan mökkiinsä. Se oli ennallaan;
kukaan ei näyttänyt sitä haluavan, ja niin hän otti sen taas
haltuunsa.
Koko talven hän hoiteli kipeätä kättänsä — ja meni toisinaan
vammastaan välittämättä vuoristoon ja otti jonkin otuksen. Kukaan
ei ruvennut häntä estelemään; häntä hieman pelättiin, kavahdettiin
— vaikkei hän ollut kellekään mitään tehnyt. Lopulta hän oli
mielissään siitä, että häntä niin näyttiin pelättävän; sitä suuremmaksi
kävi yksinäisyys hänen ympärillään — ja hän rakasti yksinäisyyttä
jylhillä vuorilla yhtä paljon kuin alhaalla laaksossa.

Hän oli lyhyesti kysynyt, ja lyhyesti oli hänelle vastattu, että Filafer
pappa oli kuollut halvaukseen, eikä Miziä enää ollut näillä tienoin.
Mizi oli — sairasta tätiä hoitaakseen — muuttanut naapurilaaksoon,
Feistritziin. Siellä on niin monta koreata tyttöä, joilla on lyhyet,
poimulliset helmat, valkoiset, pöyheät paidanhihat ja pitkät letit
niskassa. Mitä häneen kuuluivat Mizi tai Feistritzin tytöt?

Kevät oli tulossa. Lumen alla alkoivat vuoripurot liristä ja taimet


versoa. Lumella hyppeli lintusia — kunnes kupsahtivat sen lävitse ja
veikeästi piipittäen "ti-tit" hämmästyneinä tervehtivät eloon
heränneitä kukkia. Kaikki rinteet saivat vihreän puvun, pyökki
puhkesi kuusen ja petäjän välissä — ja sitten tuli ympäristöstä
vuotuisesti kerääntyvä parvi pyhiinvaeltajia, miehiä ja naisia, vanhoja
ja nuoria, jotka pyrkivät Maria Luscharin pyhälle vuorelle
sovittamaan syntejä, rukoilemaan hairahduksia anteeksi ja
parantumaan pitkin vuotta saamistaan taudeista.

*****

Maria Luschari! Ylhäälle vuoren harjalle on rakennettu pikkunen


pyhiinvaeltajain kirkko, ja ympärillä on muutamia pieniä rakennuksia,
joissa kirkon papisto asuu, ja ravintola, jossa pyhiinvaeltajat voivat
olla yötä ja vahvistaa ruumistaan, sittenkun sielua on vahvistettu
kirkossa. Sillä kuorissa säilytetään sitä taivaan kuningattaren kuvaa
lapsi käsivarrella, jonka eräs vuohinensa kuljeskeleva paimen oli
tarinan mukaan löytänyt tältä autiolta vuorelta. Hän vei kuvan
mukanaan laaksoon; — yöllä se katosi ja löydettiin taas vuorelta.
Tämä toistui pari kertaa — ja sen tarkotuksena kai oli, että taivaan
kuningatar halusi kattoa päänsä päälle ylhäällä vuorella, korkealla
ihmisten syntien ja raihnaisuuden yläpuolella. Sitten rakennettiinkin
kirkko; siellä tapahtui ihmeitä,kun kuvaan koskettiin tai vaan
polvistuttiin hurskaassa rukouksessa sen eteen kuorin kiviliuskoille.
Vielä tehokkaampaa oli, jos vuoren juurella otettiin kannettavaksi
suuria risu- ja polttopuukimppuja — pyhät isät näet tarvitsivat
lämmitysaineita — ja taakan alla ähkien laahustettiin monen tunnin
matka huipulle asti. Rikkaita ja köyhiä tulvaili sinne joka taholta;
vähitellen survottiin polku epätasaisia törmiä pitkin, ja se seurasi
ensin villin puron repeytynyttä rotkoa ja nousi nousemistaan
kuusikon lävitse kalliolaaksojen poikki, syvyyksien vieritse — ja
puolitiehen oli rakennettu pieni mökki, jonka edessä oli lähde ja
Kristuksen kuva ja jossa heikot ja raihnaiset saivat levähtää, keittää
ruokaansa ja päästä suojaan nousevalta rajuilmalta. Mutta ylinnä oli,
kuten sanottu, kirkko ja ravintola ja koko joukko pieniä puoteja,
joissa myytiin kaikenlaisia pyhitettyjä kapineita, vahakynttilöitä,
rukousnauhoja, muistorahoja ja erilaisia jäljennöksiä kirkon pyhästä
kuvasta. Varsinkin alkukesällä, kun lumi oli sulanut täällä ylhäällä ja
pyhiinvaeltajain suuri tulva alkoi, oli täällä jumalanpalveluksen ja
syntien anteeksi rukoilemisen ohella melkein pienet markkinat; ja
jokaisia kalpeita, kärsiviä kasvoja kohti nähtiin täällä kenties
kahdetkin iloiset ja tyytyväiset, joiden mielestä nyt oli pahin kestetty
ja taas voitiin ruveta katsomaan elämää valoisalta puolelta.

Tänne lähti Alois eräänä alkukesän ensimäisiä päiviä. Hän arveli


olevansa sen tarpeessa, sillä Tarvisin kirkossa käymisen hän oli
heittänyt, koska kaikki häntä karttoivat; mutta ollakseen aivan ilman
messua; veisuuta, vihkivettä hän oli liian hyvä katolilainen. Ehkäpä
Maria Luschari voisi auttaa hänen käsivarttansakin, joka vielä oli
hiukan kankea. Hän siis lähti retkelle.

Pian hän oli pyhiinvaeltajain joukossa, jotka keppi tai vuorisauva


kädessä ja risukimppu tai ruokavaroja selässä vaivaloisesti marssivat
ylöspäin. He olivat hänelle kaikki vieraita, ja kukin oli omissa
ajatuksissaan. Kuitenkin hänestä oli vastenmielistä käydä tuolla
tapaa kulkueessa. Hän valitsi oman tiensä, ja vaikka se olikin jyrkkä
ja rasittava, oli hän ainakin yksin.

Silloin hän näki korkealta törmältä alhaalla polulla pari nuorta


naista. Molemmat olivat tulossa ylös. Toinen oli kalpea ja astui keppi
kädessä; hänen kumppanillaan oli Feistritzin tyttöjen puku. Hän
hyppi kevyesti kivien yli, nauroi usein ja välistä ojensi toiselle
kätensä; ja heidän nyt levätessään pienen mökin edessä, josta
ristiinnaulitun kuva melkein pistää esiin kuilun terävän reunan ylitse,
heittäytyi kalpeakin puheliaaksi — ja äkkiä hän käänsi kasvonsa
ylöspäin, ja Alois näki Mizin piirteet.

Mizi ei näyttänyt häntä huomanneen, mutta Alois kyyristyi heti ja


tunsi samalla, kuinka sydän jyski — ja sitten hän jatkoi raskasta
matkaansa huipulle.

Miten kalpeaksi Mizi olikaan käynyt — vaan ehkä entistään


kauniimmaksi. Ehkä hän oli onneton — ehkä oli katunut… mitä hän
muuten tulisi Maria Luscharille?

Alois syytti ja puolusti häntä; lupasi itsekseen olla vähääkään


häneen katsomatta, vaikka kohtaisikin ylhäällä — ja samalla sanoi
itselleen, että hänen oli mahdotonta välttää joutumasta hänen
lähellensä täällä missä paikka oli niin pieni ja ympärillä joka taholla
jyrkkiä rinteitä ja ammottavia kuiluja.

Alois oli kirkossa suorittanut hartautensa. Lähenevän illan


hämärässä hän oli vielä polvillaan kuorin kiviliuskoilla pienessä
kirkossa. Siellä oli paljon ihmisiä, polvillaan, mutisten, ristinmerkkiä
tehden kuten hänkin; alttarin kynttilät paloivat uneliaasti, ilman
tekivät tukehuttavaksi suitsutus ja nuo monet ihmiset, sairaat ja
terveet. Häntä piinasi se tunto, että ajatukset olivat liikkuneet
muualla. Silloin hän katsahti sivulleen: Mizi oli polvillaan lattian
kivillä… kuinka kaunis hän oli!

Alois ei voinut nousta, ennenkuin Mizikin nousi. Kului hetkinen; ja


sill'aikaa oli jokin vieno ja surumielinen piirre Mizin kasvoissa
jäätänyt Aloisin kaiken veren ja taas hänet niin kuumentanut, kuin
hänessä olisi kuume.

Yht'aikaa he joutuivat vihki vesimaljalle ovella; Mizi katsahti


häneen pistäessään sormenpäänsä veteen ja sanoi hillitysti:

Jumalan rauha! Alois!…

Muuta hän ei sanonut; eikä Alois saanut mitään vastatuksi — ja


sitten
Mizi meni ulos.

Taas Alois mietti mielessään, eikö hänen oikeastaan nyt pitäisi


lähteä pois — paeta tältä vuorelta, missä ei ollut lepoa eikä lievitystä
hänen mielelleen ja ajatuksilleen, vaan hänelle oli ilmestynyt kiusaus,
jonka hän jo aikoja uskoi voittaneensa. Pianhan jo nousisi kuu ja
valaisisi hänelle tietä — jopa nytkin vyöryi leveä virta
punasenkeltaista valoa Mannhartin jyhkeän kuvun takaa tuolta
Welcome to Our Bookstore - The Ultimate Destination for Book Lovers
Are you passionate about testbank and eager to explore new worlds of
knowledge? At our website, we offer a vast collection of books that
cater to every interest and age group. From classic literature to
specialized publications, self-help books, and children’s stories, we
have it all! Each book is a gateway to new adventures, helping you
expand your knowledge and nourish your soul
Experience Convenient and Enjoyable Book Shopping Our website is more
than just an online bookstore—it’s a bridge connecting readers to the
timeless values of culture and wisdom. With a sleek and user-friendly
interface and a smart search system, you can find your favorite books
quickly and easily. Enjoy special promotions, fast home delivery, and
a seamless shopping experience that saves you time and enhances your
love for reading.
Let us accompany you on the journey of exploring knowledge and
personal growth!

ebooksecure.com

You might also like