100% found this document useful (4 votes)
38 views

PDF Learning PHP MySQL JavaScript With Jquery CSS HTML5 5th Edition Robin Nixon Download

Learning

Uploaded by

holtsekalio80
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (4 votes)
38 views

PDF Learning PHP MySQL JavaScript With Jquery CSS HTML5 5th Edition Robin Nixon Download

Learning

Uploaded by

holtsekalio80
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 52

Download the full version of the textbook now at textbookfull.

com

Learning PHP MySQL JavaScript With jQuery CSS


HTML5 5th Edition Robin Nixon

https://textbookfull.com/product/learning-php-
mysql-javascript-with-jquery-css-html5-5th-
edition-robin-nixon/

Explore and download more textbook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Learning PHP, MySQL & JavaScript, 6th Edition Robin Nixon

https://textbookfull.com/product/learning-php-mysql-javascript-6th-
edition-robin-nixon/

textbookfull.com

Learning PHP MySQL JavaScript Early Release 6th Edition


Robin Nixon

https://textbookfull.com/product/learning-php-mysql-javascript-early-
release-6th-edition-robin-nixon/

textbookfull.com

Learn PHP 8: Using MySQL, JavaScript, CSS3, and HTML5


Second Edition Steve Prettyman

https://textbookfull.com/product/learn-php-8-using-mysql-javascript-
css3-and-html5-second-edition-steve-prettyman/

textbookfull.com

Senior Cohousing: A New Way Forward for Active Older


Adults Sherry Cummings

https://textbookfull.com/product/senior-cohousing-a-new-way-forward-
for-active-older-adults-sherry-cummings/

textbookfull.com
A Relevance-Theoretic Approach to Decision-Making in
Subtitling ■ukasz Bogucki

https://textbookfull.com/product/a-relevance-theoretic-approach-to-
decision-making-in-subtitling-lukasz-bogucki/

textbookfull.com

Student Workbook for Essentials of Anatomy and Physiology


Valerie C. Scanlon

https://textbookfull.com/product/student-workbook-for-essentials-of-
anatomy-and-physiology-valerie-c-scanlon/

textbookfull.com

Successful Drug Discovery Volume 2 1st Edition Janos


Fischer

https://textbookfull.com/product/successful-drug-discovery-
volume-2-1st-edition-janos-fischer/

textbookfull.com

The Egyptian Enchantment The Lottie Lipton Adventures 1st


Edition Metcalf Dan

https://textbookfull.com/product/the-egyptian-enchantment-the-lottie-
lipton-adventures-1st-edition-metcalf-dan/

textbookfull.com

Pro DAX with Power BI Business Intelligence with


PowerPivot and SQL Server Analysis Services Tabular 1st
Edition Philip Seamark Thomas Martens
https://textbookfull.com/product/pro-dax-with-power-bi-business-
intelligence-with-powerpivot-and-sql-server-analysis-services-
tabular-1st-edition-philip-seamark-thomas-martens/
textbookfull.com
Your Passport to a Career in Bioinformatics 2nd Edition
Prashanth N. Suravajhala

https://textbookfull.com/product/your-passport-to-a-career-in-
bioinformatics-2nd-edition-prashanth-n-suravajhala/

textbookfull.com
5t I n c l p s &
h ud M
W

Ed es ob
eb

iti
Ap

on
ile
Learning
PHP, MySQL,
& JavaScript
WITH JQUERY, CSS & HTML5

Robin Nixon
FIFTH EDITION

Learning PHP, MySQL & JavaScript


With jQuery, CSS & HTML5

Robin Nixon

Beijing Boston Farnham Sebastopol Tokyo


Learning PHP, MySQL & JavaScript
by Robin Nixon
Copyright © 2018 Robin Nixon. All rights reserved.
Printed in the United States of America.
Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.
O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are
also available for most titles (http://oreilly.com/safari). For more information, contact our corporate/insti‐
tutional sales department: 800-998-9938 or [email protected].

Editor: Andy Oram Indexer: Judy McConville


Production Editor: Melanie Yarbrough Interior Designer: David Futato
Copyeditor: Rachel Head Cover Designer: Karen Montgomery
Proofreader: Rachel Monaghan Illustrator: Rebecca Demarest

July 2009: First Edition


August 2012: Second Edition
June 2014: Third Edition
December 2018: Fourth Edition
May 2018: Fifth Edition

Revision History for the Fifth Edition


2018-05-08: First Release

See http://oreilly.com/catalog/errata.csp?isbn=9781491978917 for release details.

The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. Learning PHP, MySQL & JavaScript, the
cover image, and related trade dress are trademarks of O’Reilly Media, Inc.
While the publisher and the author have used good faith efforts to ensure that the information and
instructions contained in this work are accurate, the publisher and the author disclaim all responsibility
for errors or omissions, including without limitation responsibility for damages resulting from the use of
or reliance on this work. Use of the information and instructions contained in this work is at your own
risk. If any code samples or other technology this work contains or describes is subject to open source
licenses or the intellectual property rights of others, it is your responsibility to ensure that your use
thereof complies with such licenses and/or rights.

978-1-491-97891-7
[M]
For Julie
Table of Contents

Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii

1. Introduction to Dynamic Web Content. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1


HTTP and HTML: Berners-Lee’s Basics 2
The Request/Response Procedure 2
The Benefits of PHP, MySQL, JavaScript, CSS, and HTML5 5
MariaDB: The MySQL Clone 6
Using PHP 6
Using MySQL 7
Using JavaScript 8
Using CSS 10
And Then There’s HTML5 10
The Apache Web Server 11
Handling Mobile Devices 12
About Open Source 12
Bringing It All Together 13
Questions 14

2. Setting Up a Development Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17


What Is a WAMP, MAMP, or LAMP? 18
Installing AMPPS on Windows 18
Testing the Installation 22
Accessing the Document Root (Windows) 24
Alternative WAMPs 25
Installing AMPPS on macOS 26
Accessing the Document Root (macOS) 27
Installing a LAMP on Linux 28
Working Remotely 28

v
Logging In 29
Using FTP 29
Using a Program Editor 30
Using an IDE 31
Questions 33

3. Introduction to PHP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Incorporating PHP Within HTML 35
This Book’s Examples 37
The Structure of PHP 38
Using Comments 38
Basic Syntax 39
Variables 40
Operators 45
Variable Assignment 48
Multiple-Line Commands 50
Variable Typing 52
Constants 53
Predefined Constants 54
The Difference Between the echo and print Commands 55
Functions 55
Variable Scope 56
Questions 62

4. Expressions and Control Flow in PHP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63


Expressions 63
TRUE or FALSE? 64
Literals and Variables 65
Operators 66
Operator Precedence 67
Associativity 69
Relational Operators 70
Conditionals 74
The if Statement 75
The else Statement 76
The elseif Statement 78
The switch Statement 79
The ? Operator 82
Looping 83
while Loops 84
do...while Loops 86
for Loops 86

vi | Table of Contents
Breaking Out of a Loop 88
The continue Statement 89
Implicit and Explicit Casting 90
PHP Dynamic Linking 91
Dynamic Linking in Action 92
Questions 93

5. PHP Functions and Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95


PHP Functions 96
Defining a Function 97
Returning a Value 98
Returning an Array 99
Passing Arguments by Reference 100
Returning Global Variables 102
Recap of Variable Scope 102
Including and Requiring Files 103
The include Statement 103
Using include_once 103
Using require and require_once 104
PHP Version Compatibility 104
PHP Objects 105
Terminology 106
Declaring a Class 107
Creating an Object 108
Accessing Objects 108
Cloning Objects 110
Constructors 111
Destructors 111
Writing Methods 112
Declaring Properties 113
Declaring Constants 113
Property and Method Scope 114
Static Methods 115
Static Properties 116
Inheritance 117
Questions 120

6. PHP Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123


Basic Access 123
Numerically Indexed Arrays 123
Associative Arrays 125
Assignment Using the array Keyword 126

Table of Contents | vii


The foreach...as Loop 127
Multidimensional Arrays 129
Using Array Functions 132
is_array 132
count 132
sort 133
shuffle 133
explode 133
extract 134
compact 135
reset 136
end 136
Questions 137

7. Practical PHP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139


Using printf 139
Precision Setting 140
String Padding 142
Using sprintf 143
Date and Time Functions 143
Date Constants 146
Using checkdate 146
File Handling 147
Checking Whether a File Exists 147
Creating a File 147
Reading from Files 149
Copying Files 150
Moving a File 150
Deleting a File 151
Updating Files 151
Locking Files for Multiple Accesses 153
Reading an Entire File 154
Uploading Files 155
System Calls 161
XHTML or HTML5? 162
Questions 163

8. Introduction to MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165


MySQL Basics 165
Summary of Database Terms 166
Accessing MySQL via the Command Line 166
Starting the Command-Line Interface 167

viii | Table of Contents


Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
Using the Command-Line Interface 171
MySQL Commands 172
Data Types 177
Indexes 187
Creating an Index 187
Querying a MySQL Database 193
Joining Tables Together 203
Using Logical Operators 205
MySQL Functions 206
Accessing MySQL via phpMyAdmin 206
Questions 207

9. Mastering MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209


Database Design 209
Primary Keys: The Keys to Relational Databases 210
Normalization 211
First Normal Form 212
Second Normal Form 214
Third Normal Form 216
When Not to Use Normalization 218
Relationships 219
One-to-One 219
One-to-Many 220
Many-to-Many 221
Databases and Anonymity 222
Transactions 223
Transaction Storage Engines 223
Using BEGIN 224
Using COMMIT 225
Using ROLLBACK 225
Using EXPLAIN 226
Backing Up and Restoring 227
Using mysqldump 227
Creating a Backup File 229
Restoring from a Backup File 231
Dumping Data in CSV Format 231
Planning Your Backups 232
Questions 232

10. Accessing MySQL Using PHP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235


Querying a MySQL Database with PHP 235
The Process 235

Table of Contents | ix
Creating a Login File 236
Connecting to a MySQL Database 237
A Practical Example 243
The $_POST Array 246
Deleting a Record 247
Displaying the Form 247
Querying the Database 248
Running the Program 249
Practical MySQL 250
Creating a Table 251
Describing a Table 251
Dropping a Table 252
Adding Data 253
Retrieving Data 254
Updating Data 255
Deleting Data 255
Using AUTO_INCREMENT 256
Performing Additional Queries 257
Preventing Hacking Attempts 258
Steps You Can Take 259
Using Placeholders 260
Preventing HTML Injection 263
Using mysqli Procedurally 264
Questions 266

11. Form Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267


Building Forms 267
Retrieving Submitted Data 269
Default Values 270
Input Types 271
Sanitizing Input 278
An Example Program 280
HTML5 Enhancements 283
The autocomplete Attribute 283
The autofocus Attribute 283
The placeholder Attribute 283
The required Attribute 284
Override Attributes 284
The width and height Attributes 284
The min and max Attributes 284
The step Attribute 284
The form Attribute 285

x | Table of Contents
The list Attribute 285
The color Input Type 285
The number and range Input Types 285
Date and Time Pickers 286
Questions 286

12. Cookies, Sessions, and Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287


Using Cookies in PHP 287
Setting a Cookie 289
Accessing a Cookie 290
Destroying a Cookie 290
HTTP Authentication 290
Storing Usernames and Passwords 294
An Example Program 296
Using Sessions 299
Starting a Session 299
Ending a Session 302
Setting a Timeout 303
Session Security 304
Questions 307

13. Exploring JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309


JavaScript and HTML Text 310
Using Scripts Within a Document Head 311
Older and Nonstandard Browsers 311
Including JavaScript Files 312
Debugging JavaScript Errors 313
Using Comments 314
Semicolons 314
Variables 314
String Variables 315
Numeric Variables 315
Arrays 316
Operators 316
Arithmetic Operators 317
Assignment Operators 317
Comparison Operators 318
Logical Operators 318
Incrementing, Decrementing, and Shorthand Assignment 318
String Concatenation 318
Escape Characters 319
Variable Typing 319

Table of Contents | xi
Functions 321
Global Variables 321
Local Variables 321
The Document Object Model 322
Another Use for the $ Symbol 324
Using the DOM 325
About document.write 326
Using console.log 326
Using alert 326
Writing into Elements 326
Using document.write 327
Questions 327

14. Expressions and Control Flow in JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329


Expressions 329
Literals and Variables 330
Operators 331
Operator Precedence 332
Associativity 332
Relational Operators 333
The with Statement 336
Using onerror 337
Using try...catch 338
Conditionals 339
The if Statement 339
The else Statement 339
The switch Statement 340
The ? Operator 342
Looping 342
while Loops 342
do...while Loops 343
for Loops 344
Breaking Out of a Loop 345
The continue Statement 345
Explicit Casting 346
Questions 347

15. JavaScript Functions, Objects, and Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349


JavaScript Functions 349
Defining a Function 349
Returning a Value 351
Returning an Array 353

xii | Table of Contents


JavaScript Objects 354
Declaring a Class 354
Creating an Object 356
Accessing Objects 356
The prototype Keyword 356
JavaScript Arrays 359
Numeric Arrays 360
Associative Arrays 361
Multidimensional Arrays 362
Using Array Methods 363
Questions 368

16. JavaScript and PHP Validation and Error Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371


Validating User Input with JavaScript 371
The validate.html Document (Part 1) 372
The validate.html Document (Part 2) 374
Regular Expressions 377
Matching Through Metacharacters 378
Fuzzy Character Matching 378
Grouping Through Parentheses 379
Character Classes 380
Indicating a Range 380
Negation 380
Some More Complicated Examples 381
Summary of Metacharacters 383
General Modifiers 385
Using Regular Expressions in JavaScript 385
Using Regular Expressions in PHP 386
Redisplaying a Form After PHP Validation 387
Questions 393

17. Using Asynchronous Communication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395


What Is Asynchronous Communication? 396
Using XMLHttpRequest 396
Your First Asynchronous Program 399
Using GET Instead of POST 403
Sending XML Requests 406
Using Frameworks for Asynchronous Communication 411
Questions 411

18. Introduction to CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413


Importing a Stylesheet 414

Table of Contents | xiii


Importing CSS from Within HTML 414
Embedded Style Settings 415
Using IDs 415
Using Classes 415
Using Semicolons 416
CSS Rules 416
Multiple Assignments 416
Using Comments 417
Style Types 418
Default Styles 418
User Styles 418
External Stylesheets 419
Internal Styles 419
Inline Styles 420
CSS Selectors 420
The Type Selector 420
The Descendant Selector 420
The Child Selector 421
The ID Selector 422
The Class Selector 423
The Attribute Selector 424
The Universal Selector 424
Selecting by Group 425
The CSS Cascade 425
Stylesheet Creators 426
Stylesheet Methods 426
Stylesheet Selectors 427
The Difference Between div and span Elements 429
Measurements 431
Fonts and Typography 433
font-family 433
font-style 434
font-size 434
font-weight 435
Managing Text Styles 435
Decoration 435
Spacing 436
Alignment 436
Transformation 436
Indenting 436
CSS Colors 437
Short Color Strings 438

xiv | Table of Contents


Gradients 438
Positioning Elements 440
Absolute Positioning 440
Relative Positioning 440
Fixed Positioning 441
Pseudoclasses 443
Shorthand Rules 445
The Box Model and Layout 446
Setting Margins 446
Applying Borders 448
Adjusting Padding 449
Object Contents 451
Questions 451

19. Advanced CSS with CSS3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453


Attribute Selectors 454
Matching Parts of Strings 454
The box-sizing Property 455
CSS3 Backgrounds 456
The background-clip Property 456
The background-origin Property 458
The background-size Property 458
Using the auto Value 459
Multiple Backgrounds 459
CSS3 Borders 461
The border-color Property 461
The border-radius Property 461
Box Shadows 465
Element Overflow 466
Multicolumn Layout 466
Colors and Opacity 468
HSL Colors 468
HSLA Colors 469
RGB Colors 469
RGBA Colors 469
The opacity Property 470
Text Effects 470
The text-shadow Property 470
The text-overflow Property 470
The word-wrap Property 471
Web Fonts 472
Google Web Fonts 473

Table of Contents | xv
Transformations 474
3D Transformations 475
Transitions 476
Properties to Transition 476
Transition Duration 477
Transition Delay 477
Transition Timing 477
Shorthand Syntax 478
Questions 480

20. Accessing CSS from JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481


Revisiting the getElementById Function 481
The O function 481
The S Function 482
The C Function 483
Including the Functions 484
Accessing CSS Properties from JavaScript 484
Some Common Properties 485
Other Properties 486
Inline JavaScript 488
The this Keyword 488
Attaching Events to Objects in a Script 489
Attaching to Other Events 490
Adding New Elements 491
Removing Elements 492
Alternatives to Adding and Removing Elements 493
Using Interrupts 494
Using setTimeout 494
Canceling a Timeout 495
Using setInterval 495
Using Interrupts for Animation 497
Questions 499

21. Introduction to jQuery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501


Why jQuery? 501
Including jQuery 502
Choosing the Right Version 502
Downloading 504
Using a Content Delivery Network 504
Customizing jQuery 505
jQuery Syntax 505
A Simple Example 506

xvi | Table of Contents


Avoiding Library Conflicts 507
Selectors 507
The css Method 508
The Element Selector 508
The ID Selector 509
The Class Selector 509
Combining Selectors 509
Handling Events 510
Waiting Until the Document Is Ready 511
Event Functions and Properties 512
The blur and focus Events 513
The this Keyword 514
The click and dblclick Events 514
The keypress Event 515
Considerate Programming 517
The mousemove Event 517
Other Mouse Events 520
Alternative Mouse Methods 521
The submit Event 522
Special Effects 523
Hiding and Showing 524
The toggle Method 525
Fading In and Out 526
Sliding Elements Up and Down 527
Animations 528
Stopping Animations 531
Manipulating the DOM 532
The Difference Between the text and html Methods 533
The val and attr Methods 533
Adding and Removing Elements 535
Dynamically Applying Classes 537
Modifying Dimensions 537
The width and height Methods 538
The innerWidth and innerHeight Methods 540
The outerWidth and OuterHeight Methods 540
DOM Traversal 541
Parent Elements 541
Child Elements 545
Sibling Elements 545
Selecting the Next and Previous Elements 547
Traversing jQuery Selections 549
The is Method 550

Table of Contents | xvii


Using jQuery Without Selectors 552
The $.each Method 552
The $.map Method 553
Using Asynchronous Communication 554
Using the POST Method 554
Using the GET Method 555
Plug-ins 555
jQuery User Interface 556
Other Plug-ins 556
Questions 556

22. Introduction to jQuery Mobile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559


Including jQuery Mobile 560
Getting Started 561
Linking Pages 563
Linking Synchronously 563
Linking Within a Multipage Document 564
Page Transitions 565
Styling Buttons 568
List Handling 571
Filterable Lists 572
List Dividers 574
What Next? 577
Questions 577

23. Introduction to HTML5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579


The Canvas 579
Geolocation 581
Audio and Video 583
Forms 584
Local Storage 585
Web Workers 585
Microdata 585
Questions 586

24. The HTML5 Canvas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587


Creating and Accessing a Canvas 587
The toDataURL Function 589
Specifying an Image Type 591
The fillRect Method 591
The clearRect Method 591
The strokeRect Method 592

xviii | Table of Contents


Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
Combining These Commands 592
The createLinearGradient Method 593
The addColorStop Method in Detail 595
The createRadialGradient Method 596
Using Patterns for Fills 598
Writing Text to the Canvas 600
The strokeText Method 600
The textBaseLine Property 601
The font Property 601
The textAlign Property 601
The fillText Method 602
The measureText Method 603
Drawing Lines 603
The lineWidth Property 604
The lineCap and lineJoin Properties 604
The miterLimit Property 606
Using Paths 606
The moveTo and lineTo Methods 607
The stroke Method 607
The rect Method 608
Filling Areas 608
The clip Method 610
The isPointInPath Method 613
Working with Curves 614
The arc Method 614
The arcTo Method 617
The quadraticCurveTo Method 618
The bezierCurveTo Method 619
Manipulating Images 620
The drawImage Method 620
Resizing an Image 621
Selecting an Image Area 621
Copying from a Canvas 623
Adding Shadows 623
Editing at the Pixel Level 625
The getImageData Method 625
The putImageData Method 628
The createImageData Method 628
Advanced Graphical Effects 629
The globalCompositeOperation Property 629
The globalAlpha Property 632
Transformations 632

Table of Contents | xix


The scale Method 633
The save and restore Methods 634
The rotate Method 634
The translate Method 635
The transform Method 636
The setTransform Method 638
Questions 639

25. HTML5 Audio and Video. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641


About Codecs 642
The <audio> Element 643
Supporting Non-HTML5 Browsers 646
The <video> Element 647
The Video Codecs 648
Supporting Older Browsers 651
Questions 653

26. Other HTML5 Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655


Geolocation and the GPS Service 655
Other Location Methods 656
Geolocation and HTML5 657
Local Storage 660
Using Local Storage 661
The localStorage Object 661
Web Workers 663
Drag and Drop 666
Cross-Document Messaging 668
Other HTML5 Tags 672
Questions 672

27. Bringing It All Together. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675


Designing a Social Networking App 676
On the Website 676
functions.php 676
The Functions 677
header.php 679
setup.php 682
index.php 683
signup.php 684
Checking for Username Availability 685
Logging In 685
checkuser.php 688

xx | Table of Contents
login.php 689
profile.php 691
Adding the “About Me” Text 692
Adding a Profile Image 692
Processing the Image 692
Displaying the Current Profile 693
members.php 696
Viewing a User’s Profile 696
Adding and Dropping Friends 697
Listing All Members 697
friends.php 700
messages.php 703
logout.php 706
styles.css 708
javascript.js 710

A. Solutions to the Chapter Questions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713

B. Online Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735

C. MySQL’s FULLTEXT Stopwords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739

D. MySQL Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743

E. jQuery Selectors, Objects, and Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753

Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777

Table of Contents | xxi


Preface

The combination of PHP and MySQL is the most convenient approach to dynamic,
database-driven web design, holding its own in the face of challenges from integrated
frameworks—such as Ruby on Rails—that are harder to learn. Due to its open source
roots (unlike the competing Microsoft .NET Framework), it is free to implement and
is therefore an extremely popular option for web development.
Any would-be developer on a Unix/Linux or even a Windows/Apache platform will
need to master these technologies. And, combined with the partner technologies of
JavaScript, jQuery, CSS, and HTML5, you will be able to create websites of the caliber
of industry standards like Facebook, Twitter, and Gmail.

Audience
This book is for people who wish to learn how to create effective and dynamic web‐
sites. This may include webmasters or graphic designers who are already creating
static websites but wish to take their skills to the next level, as well as high school and
college students, recent graduates, and self-taught individuals.
In fact, anyone ready to learn the fundamentals behind responsive web design will
obtain a thorough grounding in the core technologies of PHP, MySQL, JavaScript,
CSS, and HTML5, and you’ll learn the basics of the jQuery and jQuery Mobile libra‐
ries, too.

Assumptions This Book Makes


This book assumes that you have a basic understanding of HTML and can at least put
together a simple, static website, but does not assume that you have any prior knowl‐
edge of PHP, MySQL, JavaScript, CSS, or HTML5—although if you do, your progress
through the book will be even quicker.

xxiii
Random documents with unrelated
content Scribd suggests to you:
longue, délicate, que l’on voudrait toucher, entre les doigts de
laquelle une fleur est éclose…
Une œuvre d’art… je n’y pensais plus ! L’art vient encore une fois
à mon secours !… Je m’interromps de jouer.
Qu’arrive-t-il ? Les fauteuils s’éventrent, les femmes s’enfuient,
rappelées sans doute par de pressants devoirs. Jérôme baise sa
toupie bariolée et le piano s’ouvre tout entier, puis, comme un
paravent, se replie contre le mur.
Je prends Madeleine par la taille et nous sortons.
« Allons voir, lui dis-je, le panneau du milieu, celui du bon roi
Melchior. M’accompagneras-tu, ma chérie ?
— De grand cœur, Michel ! »
Et Madeleine me tend ses lèvres.
XXII

A peine avons-nous marché un quart d’heure que nous arrivons


à l’église. L’instant est vraiment exquis.
« Mais laissez-moi donc tranquille ! Je n’ai nul besoin que l’on me
rende des forces ! Allez-vous-en, docteur, vous m’ennuyez ! Je me
promène avec ma femme ! »
Oui, l’instant est vraiment exquis : l’aube a presque paru, elle fait
pressentir une radieuse aurore. Je retrouverai la lumière élue pour
ma décoration. Le ciel me donne un avertissement sévère. Voilà les
tons qu’il me faudra considérer souvent, avec scrupule, avec
patience, si je veux en transposer les finesses et l’éclat à demi-voilé.
« Je compte sur ton aide, Madeleine. Il t’arrive parfois de me
blaguer parce que je dors, dis-tu, comme un paysan. Eh bien, à toi
de m’en empêcher désormais ! Tu me tireras, chaque jour, du
sommeil, quelque temps avant le début de ce glorieux spectacle. Je
t’offrirai même un réveil-matin, à cet effet. Mais dépêchons-nous !
Allons voir le roi Melchior qui va s’agenouiller devant la crèche. Il a
précédé les deux autres Mages… Non ! regarde d’abord la
splendeur du ciel. Tâche de comprendre ce que je devrai suggérer…
Ce ne sera pas facile, avoue-le !
— C’est entendu, Michel ! Nous viendrons ici tous les matins : les
couleurs du ciel se poseront d’elles-mêmes sur ta palette ou
s’offriront à ton choix !… Ah ! le beau peintre à qui, je le sais, il suffit
de tremper le bout de son pinceau dans un rayon, dans un reflet,
dans une buée, pour trouver le ton juste qu’il cherchait ! »
Elle me parle, je ne sais pourquoi, tout bas, tout près de l’oreille,
et sa voix est la plus douce des musiques.
« Entrons à l’église, ma chérie, puisque ton ami, le curé t’a confié
un double de la clef. »
Nous ouvrons les deux portes toutes grandes. Voilà le panneau
central qui m’occupera, aujourd’hui : le plus important, de beaucoup.
La Vierge, l’Enfant, saint Joseph, le bœuf et l’âne, Gaspard et
Balthazar, le groupe des bergers, sont en place, bien qu’à peine
indiqués, mais il suffit que je me les représente. Seul, Melchior me
donnera encore grand mal, à cause toujours de l’éclairage. En
prenant au dehors des esquisses nombreuses, je finirai sans doute
par y parvenir !
Voici le roi : il entre à notre suite. Je pense qu’il désire reprendre
la pose que nous avions déjà décidée. Il la retrouvera tout de suite.
« Salut, roi Melchior, lui dis-je, votre attention me touche
beaucoup ; vous êtes, sans contredit, le plus gracieux des rois et
votre aimable visite va faciliter mon travail.
— Tu devrais avoir honte, Michel, dit Madeleine : prends-tu ce
bon roi pour un paresseux de ton espèce ? Lui, se lève tôt et trouve
tout naturel de t’aider ainsi à mieux peindre !
— Non, mes amis, répondit Melchior, vous me remerciez sans
raison ! Vous étiez mécontent, Michel, des vitraux de notre église,
qui sont assurément fort laids : du vilain Saint-Sulpice, tout au plus !
Mais, avant qu’on ne les remplace, les anges assez piteux qui s’y
trouvent représentés, se sont offerts à chanter une dernière fois. Ils
exécuteront un petit concert, ce matin même. Oh ! je sais, ma chère
Madeleine, que vous détestez la musique en vase clos ! De la place !
de l’air ! voilà qui vous convient ! Nous irons donc sur le parvis : le
paysage que l’on y découvre est beau. En levant le nez, nous
pourrons admirer, quelques instants, les couleurs que le ciel nous
gardera et le chœur choisi par les anges : ce chœur d’Ambroise
Thomas, s’il vous plaît ! (hélas ! tous les goûts sont dans la nature)
saura bien nous ravir par les portes ouvertes… Venez, mes
enfants ! »
Cette petite place de l’église, encore tout aérée par la brise
matinale, quelles délices elle dispensait !
« Et surtout, Michel, reprit-il, je voulais vous dire que,
décidément, je refuse de participer à ce panneau : j’entends, d’y
faire figure. Le voisinage du bœuf et de l’âne me déplaît par trop,
n’est pas digne de ma personne, et puis… et puis, j’en veux aux
deux autres Mages qui ont dû prendre une auto en cours de route
pour arriver avant moi, une auto de complaisance ! C’est pas de jeu,
mes amis ! N’ayez pas l’air furieux, Michel : ça n’en vaut pas la
peine !… et, maintenant, petits anges des vitraux, chantez ! »
Ils chantèrent, nous les entendions bien… Que chantaient-ils ?
De l’Ambroise Thomas ? Allons donc ! Un air, un air qui m’est connu ;
j’ai l’impression de plaquer son premier accord sur les touches d’un
piano. (Je ne joue de l’orgue, ni d’aucun instrument céleste !) C’est
tout juste si je tapote… Ils chantent ! Ils chantent !…
Et voilà que Gaspard relève les pans de son grand manteau de
cour et se met à danser, sans souci des dalles, dures et sévères à
ses bottes, du parvis. Il danse d’une façon qui me déplaît. Dans les
temps très anciens cette danse eût été dénommée chahut. Il danse,
il fait des entrechats. Il me rappelle certaine affiche de Lautrec pour
le Moulin-Rouge.
Ah ! ceci est pire : l’esquisse que je méditais m’échappe : l’aurore
s’est muée en jour ; les tons de la robe du roi Mage ont changé…
Jamais je ne peindrai le panneau du centre ! Ce Mage qui fait le pitre
me donne le frisson ! Madeleine supportera-t-elle un pareil
spectacle ? Elle se gêne ! Madeleine rigole ! Madeleine va danser
aussi. Elle pointe un pied en l’air, pousse des cris, excite le danseur
à se dépouiller de son manteau, à s’arracher la barbe, à semer ses
bijoux, à jeter surtout cette noble tiare dont j’espérais tirer un beau
parti, à ne plus se ressembler du tout ! Et les anges des mauvais
vitraux s’en donnent à cœur joie, ils ne chantent plus, ils gueulent
leur chanson d’une voix éraillée. On se dirait dans un café-concert
de bas-étage, en province ! A la sortie, on leur donnera tout au plus
cent sous.

C’est fini : le roi Mage s’est calmé ; Madeleine de même. Alors


ma femme s’approche de Melchior et son altesse, qui a dû vendre
des sucreries sur les quais, lui dit d’une petite voix doucereuse,
pateline, où passe un accent d’orient :
« Ma chère, je tiens à vous offrir un petit cadeau, un cadeau de
rien du tout, un simple souvenir… Vos façons d’agir sont depuis
quelque temps ridicules : il les faut réformer. Je sais que la cocaïne
vous est chère, que vous en usez tous les jours, mais, croyez-moi,
ne vous piquez plus ! Ce moyen, d’ailleurs mauvais, est passé de
mode et vos deux cuisses, ma bonne Madelon, sont dans un état !
« Prenez cette mignonne boîte en argent, qui contient une
poudre blanche, mais ne la montrez pas à votre médecin, à moins
que vous ne soyez son amie intime ; en ce cas, il vous fournirait de
quoi la remplir. Au fait, ne se nomme-t-il pas Jérôme Devilliers ?…
« Une pincée seulement : vous la humerez comme un parfum, et
toute piqûre sera inutile. Vous preniez même le soin de stériliser la
seringue ! Quelle sottise et que de temps perdu ! Retournez, vous
dis-je, aux habitudes de votre défunte aïeule qui prisait tout
simplement du tabac. Ce tabac blanc est plus joli, meilleur aussi.
Glissez la boîte dans votre petit sac et veuillez agréer mes
hommages.
« Quant à vous, Michel, je vous le répète : cette grande machine
décorative m’ennuie. Je m’arrangerai avec le curé de la paroisse
pour la faire ôter, une fois en place. Balthazar est tout à fait de mon
avis, quant à Gaspard, quelle importance peut avoir le jugement
artistique d’un nègre ?
« Au revoir ou, plutôt adieu ! Je vous ai assez vus, l’un et
l’autre… Cependant, merci pour la danse ! »
Madeleine est à jamais perdue ! l’art me dédaigne pour toujours !
Madeleine et mon art sont tous deux avilis…
Alors… que me reste-t-il ?
XXIII

Que me reste-t-il ?…
Une aide qui, certes, ne se refusera pas : celle de la Camarde.
Il faut crever, mais encore crever rapidement, sans nul délai, en
vitesse et loin de tout secours. Voyez-vous si quelqu’un s’ingéniait à
me rendre la vie, cette vie d’aujourd’hui ?… Ah ! j’aime mieux pas !
Je dois m’abattre de manière aussi sûre que j’eusse abattu
l’autre. Maintenant, Jérôme peut vivre ; je lui en offre le loisir, mais
avec une arrière-pensée.
Jadis, il ne manquait pas de conscience ; je l’ai connu
scrupuleux. Pourvu que ces beaux sentiments lui reviennent ! Je lui
souhaite, le mois prochain, une conscience bien armée, prête au
combat et qui, très patiemment, lui inflige un joli tourment aussi gros
que son ventre, aussi solide que ses épaules, plus aigu, si possible,
que son esprit… Le voilà pourvu.
D’elle, je ne parlerai pas. Si je ferme les yeux, c’est pour ne plus
la voir.

Le plus commode serait, en somme, de finir ici même. J’ai


remarqué que mes forces reviennent, que je n’ai plus de fièvre. A la
rigueur, je pourrais me lever. On s’en est aperçu ; il y a quelques
instants, le médecin parlait de fauteuil roulant, de béquilles, de je ne
sais quoi !
Néanmoins il y a des inconvénients.
Dans la pièce voisine, je trouverais facilement du poison.
J’entends souvent ouvrir une petite armoire. On en tire des flacons
étiquetés de rouge dont quelques gouttes me sont offertes, avec
parcimonie, dans le fond d’un verre d’eau. Cependant, il y a des
femmes qui font la garde. On les appelle des gardes : le terme est
juste. Elles interviendraient, pousseraient des cris, m’arracheraient
des mains la drogue espérée… « Michel Duroy livré aux
bacchantes » : beau sujet de tragédie !
Me jeter dans la rue ? Un troisième étage suffit… Même
obstacle : mon poste de police serait alerté, avant même que je n’aie
ouvert la fenêtre.
Une lame d’acier ?… Je me charcuterais inutilement.
Un revolver ?… Où le trouver ? et il y aurait toutes les chances
pour qu’il ne fût pas chargé. Nous sommes ici dans une clinique où
je parie que l’on se suicide peu.
Me pendre ?… Je ne vois ni corde, ni ficelle solide.
Quel ennui !
Cherchons ailleurs… Vous m’aiderez, n’est-ce pas ? Ne
m’abandonnez pas méchamment et je vous promets que nous
réussirons bientôt.
Les autos, les autobus, je les écarte tout de suite. Un de mes
plus chers amis a glissé, un soir où il pleuvait, sous une camionnette
militaire et s’en est tiré avec une écorchure au genou : quinze jours
de lit. Je ne veux pas souffrir.
On vous repêche de la Seine. On vous surveille, en haut de la
tour Eiffel : les balustrades y sont hautes et ne croyez pas que je
puisse encore faire de l’acrobatie… Pourtant, une acrobatie
modeste, en m’efforçant beaucoup… Essayons de la tour Eiffel.
Me voici devant le guichet. J’allais passer, quand une vieille
femme, à genoux, couverte d’un châle en loques (il fait froid,
aujourd’hui) me tend la main. Son bras gauche me barre l’entrée. Je
lui donne vingt sous. Elle ne veut pas partir. Quel étrange regard,
suppliant et malsain, tout ensemble ! Non, ce bras de mendiante
m’arrête ; de plus, il y a trop de monde : un dimanche ? un jour
férié ?…
Ah ! j’ai fait une trouvaille ! Le chemin de fer de ceinture… Je
m’arrangerai : mon projet est assez malin. Un train a passé ;
j’attends l’autre. Je me couche sur les rails, la tête posée de façon à
ce que l’accident se produise bien, et presque sans douleur.
J’entends le second train. Je compterai jusqu’à 55, un gentil chiffre
qui me donne de l’espoir…
Quelqu’un me tire par le bras. Suis-je découvert ?… Ah ! la vieille
mendiante ! Est-elle si vieille ? Son regard m’hallucine ! Je me relève
et fais le geste de lui donner vingt sous. Elle dit : « Merci,
Monsieur ! » Le train a profité de ce court instant pour passer, sans
nul dommage. Mon aumône était stupide.
La Seine encore, mais, cette fois, avec des précautions… Je suis
sur le Pont-Neuf. Personne, alentour, que des ouvriers occupés à
leur besogne : ils dépavent, en vue de futurs travaux. Ils ne feront
nulle attention : dépaver un pont leur suffit. Je prends donc, un à un,
des pavés et les fourre dans mes poches. Mon veston s’alourdit,
mon gilet pèse et c’est à peine si je puis empêcher mon pantalon de
me tomber sur les pieds.
J’ai placé douze pavés ; je dois ressembler à l’image d’un journal
communiste, représentant un financier cousu d’or… Moi, je suis
cousu de pierres, de pierres très précieuses. Quels reproches me
ferait mon tailleur ! « Du tissu anglais, Monsieur Duroy ! »
Maintenant, il reste à enjamber le parapet. Vous n’ignorez pas
que je nage bien, mais le meilleur nageur coulerait, portant une
surcharge de douze pavés ; par conséquent… Personne n’a même
tourné la tête. La veine, enfin ! je touche au but. Je lève un pied
facilement. Mon pantalon est moins lourd que je ne pensais, mon
gilet et mon veston de même. L’étoffe anglaise aurait-elle craqué ?
Non, quelqu’un vient de me délester habilement de mes pierres.
C’est encore elle, la mendiante qui me tend la main. Je me trompais
tout à fait : elle n’est pas vieille, mais son visage semble ravagé et,
toujours, ses yeux m’épouvantent. Elle a dû même être belle… Oh !
ces yeux !
« Partez ! lui dis-je.
— Oui, Monsieur, tout de suite, mais je vous demande une petite
aumône. J’ai faim, mon bon Monsieur ! ne me renvoyez pas ainsi ! »
Que voulez-vous ! je me laisse faire : je lui donne vingt sous.

Voyez ! à Paris nous n’aurons que des échecs. Allons plus loin,
dans un pays dont je connais les ressources : Hyères, par exemple.
Je vous jure que là…
Et puis, une idée surgit…
Chut ! je ne vous dirai rien encore. Attendons d’être là-bas, sur
place et je vous garantis que nous y serons débarrassés de toute
mendiante. Le voyage, même en troisième classe, est assez cher.
On ne mendie pas à Paris pour aller ensuite faire le même métier
sur la Côte d’Azur, à Nice, peut-être, ou Monte-Carlo, à la sortie du
casino. Non, je n’y ai jamais vu de mendiants et cette femme-là,
toute déguenillée qu’elle soit, attire trop l’attention. Le Prince
viendrait en personne la prier de repasser la frontière.
Entrez dans le jardin. Vous pouvez encore beaucoup m’aider. Je
sors à l’instant de la boutique d’un marchand de la ville, un vieil ami,
qui m’a vendu une bonne corde, souple, solide, facile à nouer, car je
suis revenu à l’un de mes anciens projets auquel je n’ai fait
qu’ajouter un peu de poésie… Exactement ce qu’il faut… Il ne reste
plus qu’à choisir un pin convenablement fourchu, bien robuste…
Je n’ose pas vous avouer mon idée poétique… Bast ! puisque
vous m’avez accompagné, mes chers amis, dans un instant, je
divulgue le secret.
Ce pin, je le connais ; il est vieux, sans doute, mais résistant. Il
n’a rien perdu de sa vigueur. Il est fourchu ; sa maîtresse branche
quitte le tronc assez haut et s’en écarte. On dirait qu’il fut créé pour
le but même que je poursuis… Mais je n’ai pas tout dit !
Courage ! quelques mots encore : écoutez bien ! je ne résiste
plus : vous vous êtes montrés trop gentils !

Eh bien, ce pin, ce pin sauveur, est placé devant la fenêtre de


Madeleine, la jeune personne qui fut mon épouse et qui l’est, peut-
être, à cette heure. Affaire d’habitude ! Ce matin même, elle se
promenait en face de la clinique, rue de la Baume, sur son balcon, et
tenait un mouchoir serré contre son nez, car le froid augmente. Or je
savais que, dans ce mouchoir, elle cachait une mignonne petite
boîte en argent (un cadeau ?…) où elle venait de prendre une
pincée de poudre blanche. C’est tout naturel ! Madeleine a bien le
droit de se promener sur son balcon lorsqu’il fait froid.
Ah ! vous êtes vraiment complaisants : vous avez jeté la corde
par-dessus la grosse branche… Préparez le nœud, je vous prie :
mes doigts sont un peu gourds.
Et, lorsque ma chère Madeleine sera venue rendre ses devoirs à
madame sa mère (demain, peut-être !) en ouvrant ses persiennes,
un beau matin comme celui-ci, elle verra monsieur Michel Duroy
assez congestionné, les jambes tordues, le sang aux yeux et, pour
tout dire, pendu, pendu haut et court, et se balançant poussé par la
brise…
Mais je conserverai, sur ma bouche gonflée, une façon de sourire
un peu narquois, dont elle se souviendra.
Oui, c’est parfait, ainsi. J’abuse de votre amabilité. Je passe le
nœud coulant à mon cou, je le serre, sans qu’il me gêne cependant,
et vais monter sur vos épaules. Ce sera dur !… Pas tant que cela ?
J’y monte. Le sport eut le bénéfice de me maintenir un poids normal
pour mon âge et pour ma taille. Attendez ! Je ne vous gêne pas
trop ? Merci… Au moment où cet oiseau bleu se sera posé…
Quoi ? Elle encore !
« Non ma bonne dame, vous arrivez trop tard ! Soit : je me
pendrai sous vos yeux, sous vos terribles yeux !… »
Ah ! je déraisonne ! je deviens fou ! ce sont les yeux de
Madeleine ! la bouche de Madeleine, son corps ! C’est Madeleine
devenue mendiante ! Ce châle râpé, c’était son châle vert de
Manille, semé de roses !
« Vous êtes venue, mon ancien amour, sans que je vous appelle.
Quand je vous appelais vous ne paraissiez pas ! Eh bien, vous
entrez dans la salle pour les trois coups : le rideau va se lever.
Comme dernier adieu, je vous offre la seule pièce de vingt sous qui
reste en mon gousset !… Prenez ! c’est une aumône… Quand ce bel
oiseau bleu qui vole au-dessus de nos têtes se sera posé… Il se
rapproche… Il est tout près… Il se posera sur mon épaule !… Il s’y
pose !…
« Attention ! Je vais sauter… Je saute !
« Ah ! c’est fini ! »
XXIV

Je ne puis dire avec certitude ce qui s’est passé. Je ne suis sûr


que de l’extrême dureté de mon lit. On a donc glissé des planches
sous le matelas ?
L’oiseau bleu venait de se poser sur mon épaule. J’ai sauté, la
corde au cou, (pas de bien haut, il est vrai), pour me pendre. J’ai
senti une terrible secousse à la nuque… et me voilà, de nouveau !
Si Madeleine était, par malice, montée dans le pin fourchu, pour
couper l’autre bout de la corde, je serais tombé par terre
maladroitement en me faisant très mal aux jambes, car je m’aperçois
qu’elles sont toutes deux bandées, mais cela n’expliquerait pas ma
douleur à la nuque.
Aurais-je sauté en rêve ? Quel divertissement !
Peut-être un trop violent effort ?… Non, non, la vérité est tout
près de moi ; elle rôde dans mes alentours et ne veut pas se laisser
voir.
Cependant, l’oiseau bleu s’est posé sur mon épaule ; je vous en
décrirais le vol et l’approche avec minutie ; j’ai même senti son
poids, un instant, mais, bien entendu, il s’est envolé aussitôt, avec
un grand bruit d’ailes.
Quant à Madeleine…
Soit : parlons un peu de Madeleine : il me semble qu’à son
propos j’ai commis de grossières erreurs. Cette pauvre intoxiquée,
vieillie, sordidement vêtue, et qui s’obstinait à me poursuivre, pour
mon bien, pour ce qu’elle imaginait être mon bien, ne me représente
pas, en dépit de ses velléités charitables, ne saurait me représenter
Madeleine.
J’ai dû rêver : encore un de ces affreux cauchemars qui me
mettent la tête à l’envers. Ah ! cela doit être facile de me soigner !
Les pauvres gens ! Dès que le médecin viendra, je tâcherai de
causer avec lui, ou plutôt l’écouterai-je, s’il me parle de son plein
gré.
Toutes ces abominations seraient donc fausses ? inexistantes ?
inventées… et par moi ?
Douce joie qui m’exalte, qui me livre à l’autre torture d’où je ne
sortais plus et que m’infligeait l’absence de ma femme ! Car
Madeleine, à l’heure qu’il est, me paraît aussi belle, aussi tendre,
aussi bonne… Elle a ces mêmes yeux gris au tout puissant regard,
ces mêmes mains fraîches qu’elle posait sur mon front, quand je
souffrais d’une migraine.
Il me semble que, ce matin, très tôt, avant que je m’éveille, elle
faisait ainsi, son adorable corps penché vers moi et… Oui ! elle s’est
penchée davantage, la main toujours posée sur mon front, et m’a
baisé la bouche !
Concevez comme c’est terrible de ne pouvoir ainsi démêler le
vrai du faux et d’en arriver à me refuser un exquis souvenir parce
que d’autres souvenirs, hélas, trop véridiques ! s’y rattachent
toujours.
J’accepterais volontiers, je savourerais ma torture avec
reconnaissance, si Madeleine était venue, ce matin, me rafraîchir le
front, me baiser la bouche, et si je ne pouvais en douter !
J’arrive à nier l’évidence pour que ce geste adorable devienne
vrai.

J’étais à Hyères, je suis à Paris. Pourquoi et comment ? Qu’il y


ait un intervalle entre ces deux séjours, je l’explique : il me paraît
court, il a dû être assez long.
Pensez donc ! transporter d’Hyères à Paris un bonhomme à demi
pendu, mal pendu, pendu de travers, cela ne se fait pas en un
instant ! Je n’ai plus, du temps qui passe, une idée juste.
Mais me suis-je pendu ? D’ailleurs ne m’a-t-on pas sorti de mon
lit pour me panser, ce matin ? J’ai le sentiment de m’être presque
réveillé et que l’on m’a fait une piqûre…
Ce serait donc cette piqûre ou les précédentes qui
m’engageaient à échafauder ce roman infâme où j’admettais la
déchéance d’une femme adorée ?
J’entends le médecin et lui parlerai sans délai.
« Ah ! dit-il, que je vous plains, cher monsieur, et quelle secousse
vous a donnée l’accident de cette nuit ! »
Il sait donc, celui que je nommais l’homme au nez pointu et que
je détestais si fort, bien qu’il eût la figure d’un brave garçon ? D’autre
part, s’il ne sait pas, de quoi me plaint-il ?
« Ce fut une nuit agitée comme bien d’autres. Nous nous
efforçons d’être prudents avec vous, dans l’emploi des drogues qui
devraient vous calmer : elles ne vous calment pas, ou si peu !
— Qu’est-il donc arrivé, docteur ?
— Ah ! la bonne voix que vous avez ce matin ! Elle me
tranquillise… Ce qui vous est arrivé ? Vous avez sans doute fait un
faux mouvement, au cours d’un de vos cauchemars, vous vous êtes
soulevé dans votre lit que, d’ailleurs, nous avions dû éloigner du
mur, pour mieux vous maintenir pendant votre délire, puis
brusquement, ayant dépassé vos forces, vous êtes retombé contre
la barre de cuivre où s’appuient vos oreillers. Le choc s’est produit à
l’endroit précis de la nuque, endommagé par votre premier accident.
Souffrez-vous beaucoup ?
— Ma tête entière me fait très mal, docteur.
— Ne parlez pas trop, Monsieur Duroy. Je vais changer vos
pansements avec l’aide de Mlle Blancheney votre garde. Ne m’en
veuillez pas si je vous couvre le visage. C’est… c’est pour nous
rendre la tâche plus aisée.
— Mademoiselle Blancheney, venez, » ajouta-t-il d’une voix très
posée.
Il entre quelqu’un et, à ce moment, je suis sûr d’avoir entendu
une autre voix d’homme, dans la pièce voisine, qui disait tout bas :
« D’ailleurs, sa femme en est bouleversée. »
Sa femme… La femme de qui ?… Voyons ! je ne suis pas le seul
malade que l’on soigne dans cette clinique ! N’exagérons pas !… et,
cependant, il faut m’en assurer.
Je me hâte d’interjeter quelques mots :
« Docteur ! un moment, je vous prie ! Je voulais vous parler de
Madeleine, ma femme…
— Tout va bien, Monsieur Duroy, et je vous promets qu’après un
léger repos, vous serez autorisé, cet après-midi même, à recevoir
une visite. Sitôt votre pansement fini, je vous donnerai une potion
calmante, la seule que vous supportiez bien ; peut-être ferez-vous
une sieste, je l’espère, et vous vous sentirez beaucoup plus calme,
la tête moins douloureuse. Comme je ne manque jamais à ma
parole, vous pouvez être certain d’en profiter pour causer ensuite
librement.
— Merci, Mademoiselle Blancheney, tout semble prêt : aidez-
moi. »
Je suis certain que tous les deux me cachent quelque chose.
Madeleine est « bouleversée ». Encore une parole de médecin ! Si
« bouleversée » qu’elle fût, rien, dans le temps, ne l’aurait éloignée
de moi !
« Monsieur Duroy, de grâce, ne vous agitez pas. Songez que, cet
après-midi… »
« Bouleversée ! »
XXV

Il me faut prendre une drogue de plus !… Prenons-la sans


protester, puisque, dit-on, j’ai besoin de repos. Mlle Blancheney
(j’ignorais son nom), me la prépare studieusement dans un coin de
ma chambre, puis elle vient me l’offrir avec un de ces gestes
avenants, arrondis, comme on tâche d’en avoir pour que le gâteau
offert à l’enfant lui paraisse meilleur.
J’avale et ne dis mot.
N’ayant aucune envie de dormir, je réfléchis un peu. Ces paroles
touchant Madeleine m’inquiètent, car il s’agit assurément de
Madeleine. « D’ailleurs, sa femme en est bouleversée… » cela ne
signifie-t-il pas qu’elle est malade, ma pauvre chérie, et que seule
cette maladie l’empêche de venir ? Je l’imagine chez nous, dans
notre lit, souffrant de son éloignement, fiévreuse, agitée… Une rue
nous sépare, mais quand on est brisé par de fortes températures,
recru de fatigue et la tête brouillée, une rue, c’est large ! c’est très
large !
J’ai la terreur d’apprendre que sa maladie est grave, qu’elle a pris
froid, qu’elle souffre d’une bronchite, d’une congestion pulmonaire,
d’une pleurésie… Que sais-je ? Ou bien n’a-t-elle pas, durant un
séjour chez sa mère, fait l’imprudence de manger à Toulon, des
coquillages ?…
La fièvre typhoïde !
Mon cher Jérôme s’est vu alité pendant plusieurs semaines
parce qu’il avait cédé à sa gourmandise habituelle et succombé (lui,
un médecin !) aux charmes d’un étalage de moules apportées par
certain pêcheur dont on pouvait être « parfaitement sûr » !
Sans faire une sottise pareille, Madeleine se sera laissé tenter
par les coquillages qu’elle aime, servis à une table d’amis. On
affirme que ces moules furent pêchées tout au loin, sur des roches
saines, par les soins du fils de la maison, qui jamais ne commettrait
une imprudence. Le résultat est le même, néanmoins.
Madeleine m’appelle, et c’est moi qui ne viens pas ! Durant que
j’étais malade, elle l’était davantage et n’a pas voulu m’inquiéter. Il
n’y a nul autre mystère et toute son absence en est expliquée. Je
sais bien que Jérôme est auprès d’elle, qu’il la soigne, qu’il ne la
quitte guère ! Cet homme surchargé de besogne, s’est encore une
fois sacrifié : la femme de son ami le plus intime passe avant tout !
Je le reconnais bien ! L’un de nous lui demanderait d’aller décrocher
la lune avec ses dents (ses dents sont excellentes), qu’il se
procurerait sans tarder une échelle et grimperait dessus, jusqu’au
dernier échelon.
« Jérôme ! fais attention !… »
J’ai cru que Jérôme allait tomber !

Mais pourquoi cette escalade vers la lune rappelle-t-elle le


souvenir d’une autre escalade plus modeste, contre le mur de la
petite église d’Hyères. Étais-je attiré aussi par quelque lune, moins
haute et rouge à son coucher ?… ah ! le beau rouge de cette lune
imaginaire !
Ayant atteint l’avant-dernier échelon, je m’installe de mon mieux.
Le soleil entre par les portes grandes ouvertes de l’église.
Madeleine, debout sous le porche, me parle d’en bas ; la lumière
joue dans ses cheveux d’or. Je tiens des papiers à la main et tâche
de mettre en place, d’après ces esquisses au crayon, l’un des
panneaux de la décoration que je peindrai selon le vœu de
Madeleine. Je baisse la tête, pour mieux voir, et me voilà soudain
pris de vertige : l’église entière se met à tourner autour de moi… et
je tombe. Depuis lors, je ne me souviens de rien, sauf de cris de
douleur, de réveils lourds suivant des sommeils abrutissants, de
séances sur une table d’opération.
J’avais dû me mettre en bouillie et c’est encore à Jérôme, je le
parie, qu’est échu l’agréable devoir de me rendre une forme
humaine. Où ça ?… A Hyères, probablement : sur place. Enfin, je
me suis trouvé ici, mis à la torture, chaque jour, de façons très
diverses, mais j’ai trop souffert de la tête pour me rappeler autre
chose que des abominations. Suis-je devenu fou ? je ne le crois pas,
me sentant, aujourd’hui, raisonnable, mais cela prouve-t-il
grand’chose ?… Attendons : on me le dira plus tard.
Je crois que si je fermais, un instant, les yeux, je me laisserais
encore prendre par le sommeil. Eh non ! j’ai trop envie de penser à
Madeleine.
Elle est chez nous, le visage rouge, le regard brillant, en pleine
crise de fièvre. Elle s’agite, des pensées absurdes lui dansent dans
la cervelle, elle s’imagine de folles aventures, elle voit des paysages
qui ne tiennent pas debout et se sent assourdie par ce
bourdonnement continuel qui fait croire que la chambre est pleine de
frelons.
Jérôme ou le fils de Jérôme lui a peut-être donné un
soporifique… Je n’avais pas encore pensé au fils de Jérôme dont la
photographie me fut montrée pendant la guerre. Il est, à coup sûr,
interne maintenant… Une gentille petite frimousse au petit nez… Je
me la rappelle…
Ce soporifique… Ah ! qu’il serait doux de dormir en même temps
que Madeleine et de rêver que nous dormons tous deux !
XXVI

Si je dormais, je descendrais l’escalier de la clinique ou, plutôt,


mes jambes étant faibles, je prendrais l’ascenseur. Ensuite, je
traverserais la rue de la Baume, j’irais demander des nouvelles de
Madeleine, chez nous.
Va-t-elle s’endormir ? Si bien soignée qu’elle soit, on ne sait
jamais ce qui peut arriver quand on a très, très envie de dormir. On a
l’air de sommeiller, et puis…
J’ai traversé la rue ; j’aperçois la porte de ma maison. Quelle
porte sinistre ! Ces draperies noires et les deux initiales M. D.
Madeleine Duroy ! C’est cela : je ne me trompais pas ou, plutôt,
j’avais bien deviné : elle est morte ; Madeleine est morte… Vous
l’aviez compris, je pense.
J’entre chez la concierge :
« Madame Lebrun, ma femme est-elle morte ?
— Eh oui, mon pauvre monsieur ! mais vous pouvez aller la voir,
la chère dame ! Je viens de faire une petite prière au pied de son
lit. »
Je monte par l’ascenseur qui est très lent. J’ouvre avec mon
passe américain : Madeleine a la manie (faut-il dire : avait la
manie ?) des serrures très modernes. Les deux bonnes sont en
deuil ; elles pleurent et se tamponnent les yeux. Quelques phrases,
puis on me conduit chez Madeleine.

You might also like