+ All Categories
Home > Documents > LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

Date post: 26-Dec-2015
Category:
Upload: stuart-short
View: 219 times
Download: 0 times
Share this document with a friend
47
LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19
Transcript
Page 1: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

LIS651 lecture 1

PHP basics

Thomas Krichel

2005-03-19

Page 2: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

today

• we work with– text– numbers– flow control– array

• and then we reorganize the shop

Page 3: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

string

• a piece of text in PHP is called a string. • A string is often surrounded by single quotes.

print 'I want beer';

$want='beer';

print 'I want $want';

// prints: I want $want

• If you want to use the values of variables, use double quotesprint "I want $want";

// prints: I want beer

Page 4: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

single and double quotes

• You can use single quotes to quote double quotesprint 'She wrote: "I want beer." and sighed.';

// prints: She wrote: "I want beer." and sighed.

• and vice versaprint "She wrote: 'I want beer.' and sighed";

// prints: She wrote: 'I want beer.' and sighed.

• Sometimes it is not obvious when to put single quotes, double quotes, and when to leave them out. If one thing does not work, try something else.

Page 5: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

the backslash escape

• The backslash is used to quote characters in a that otherwise are special.print 'Don\'t give me bad beer!';

$kind='bock';

$beer='Festbock'

print "<p class=\"$kind\">$beer</p>";

// prints: <p class="bock">Festbock</p>

• The backslash itself is quoted as \\– print "a \\ against beer consumption";– // prints: a \ against beer consumption

Page 6: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

backslash in double quoted chars

• \n makes the newline character• \r make the carriage return (no use in Unix)• \t makes the tab (seldomly used in

HTML)• \$ makes the dollar (used in the shop).

– $amount='1.50';– print "you owe \$$amount per bottle.";– // prints: you owe $1.50 per bottle.

If the backslash was not there $ would be considered to be a variable.

Page 7: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

trim()• trim() removes the whitespace at the beginning

and the end of the string. It returns the transformed string$input " 5 ";

$output=trim($input);

print "|$input|";

// prints: |5|

• whitespace is any of the following characters– the blank character– the newline– the carriage return– the tabulation character

Page 8: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

strlen()

• strlen() returns the length of the string$zip=trim($_POST['zipcode']);

$zip_length=strlen($zip);

print $zip_length;

// hopefully, prints 5

Page 9: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

strtolower() and friends• strtolower() makes lower case

$up='BEER'

$low=strtolower($up);

print $low;

// prints: beer

• strtoupper() makes upper caseprint strtoupper('beer');

// prints: BEER

• ucwords() capitalizes every word$name="grossWald bier";

print ucwords($name);

// prints: GrossWald Bier

Page 10: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

substr• substr(string,start,amount) extracts parts of a

string. string is the string to extract from. start is the position to start extracting from. 0 means the beginning of string. If start is negative, it counts from the end. amount is how much to extract.$blabla="To keep a long story short, I have a hangover.";

$blah=substr($blabla,0,27);

print "$blah...";

// prints: To keep a long story short...

print substr($blabla,-18,18);

// prints: I have a hangover.

Page 11: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

str_replace

• str_replace(string,substring,replace) a substring. string is the string, substring is the substring, replace is the replacement.$html='my <span class="myclass">Bruch</span>';

$new_html=str_replace($html,'myclass','beer');

print $new_html;

// prints: my <span class="beer">Bruch</span>

Page 12: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

sprintf()

• sprintf(format,string) returns string formatted according to format format.

• format is a special string. There are many formating options. They can be complicated.

• We do not study this further, but there is a useful example.– $third=1/3;– print $third;– // prints: 0.333333333333– print sprintf("%.2f",$third);– // prints: 0.33

Page 13: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

strip_tags()

• strip_tags() removes HTML tags$input="<b>But</b>weiser";

print strip_tags($input); // prints: Butweiser

$in="<a href=http://porn.com><img src=http://porn.com/ad.gif/></a>";

print strip_tags($in) // prints nothing, hurray!

Page 14: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

htmlentities()

• htmlentities() makes HTML entities out of special chars in HTML. <,>,&, and " are transformed$in="What does the <div> tag do?";

print htmlentities($in);

// prints: What does the &lt;div&gt; tag do?

Page 15: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

addslashes()

• if a variable read from a form, say, for example a user name Antoine d'Amstel, contains a single or double quote, this can be very problematic in certain later treatments. Use addslashes() to add slashes to user input that may contain slashes.

• stripslashes() does the opposite.

Page 16: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

regular expressions

• Regular expressions are the most powerful string manipulation tools known to man.

• They are the cornerstone of digital library work.• I hope to cover some of them later. • For now, just know that they exist.

• Now we turn to numbers.

Page 17: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

numbers• Numbers are set without the use of quotes.• You can +, -, * and / for the the basic calculations.• There also is the modulus operator %. It gives the

reminder of the division of the first number by the secondprint 10 % 7;

// prints 3

• Use parenthesis for complicated calculations$pack=2 * (10 % 7);

print "a $pack pack";

// prints: a 6 pack

Page 18: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

other number functions

• abs() calculates the absolute valueprint abs(-3) // prints: 3

print abs(3) // prints: 3

• number_format() formats numbers. When you want two digits only, use as follows– $number=1234,5678– print number_format($number,2);– // prints 1234,56

Details at http://us2.php.net/number_format

Page 19: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

geeky increment/decrement

• ++ is an operator that adds one. The value of the resulting expression depends on the position of the operator$a=4;

print ++$a; // prints: 5

print $a; // prints: 5

$b=4;

print $b++; // prints 4

print $b // prints 5

• -- works in the same way

Page 20: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

variable names• Variable name must start with a letter or

underscore. They can contain letters, digits and underscores. The following are examples of illegal names– $2drunk– $bottle-content– $brewer@grosswald

• Variable names are case sensitive. I use lowercase only and add underscores in long names.

• It is good to give variables meaningful names.

Page 21: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

concatenation

• This is done with the . operator.$cost=5.23;

$message='This costs ' . $cost;

print $message;

// prints: This costs 5.23

• PHP sees that 5.23 is a number but will treat it as a string for this purpose.

Page 22: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

geeky combined operators

• There are some combined operators that change a value and set it to the new one. For example – $a+=$b ;

• is the same as – $a=$a+$b;

• Same effect for -=, *=, /=, %=, and .=– $a="I want ";– $b="Balitka 8";– $a.=$b;– echo $a; // prints: "I want Baltika 8"

Page 23: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

Boolean value• Every expression in PHP has a Boolean value. • It is either 'true' or 'false'.• All strings are true except

– the empty string– the string "0"

• All number are true except– 0– 0.0

• example$a=5-4-1; // $a is false

Page 24: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

expression• An expression is something you write down. • Expressions that are evaluated in Boolean often

use comparison operators.$beer == "grosswald";

// checks for equality

• note difference from $beer="grosswald"; // this is always true

• Other comparisons are< smaller than <= smaller or equal than

> larger than >= larger or equal than

Page 25: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

if()

• if() evaluates an expression and if true, executes a block of code surrounded by curly brackets.if($drunk) {

print "dont\'t drive!\n";

}

• Note you don't need to indent the block as done above, but the way Thomas has done it there is pretty much standard, so do it in the same way.

Page 26: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

if() and else

• if you have an if() you can add an else block of code to execute when the condition is falseif($sober) {

print "you can drive\n";

}

else {

print "check if you are fit to drive\n";

}

Page 27: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

if and elseif• You can build chain of conditions

if($pints_drunk==0) {

print "You are ok to drive\n";

}

elseif($pints_drunk<3) {

print "Don't use the car, get on your bike\n";

}

elseif($pints_drunk<=6) {

print "Take a cab home\n";

}

else { print "Call the local hospital!\n";

}

Page 28: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

logical operators

• 'and' is logical AND. 'or' is logical OR.if(($brand=='Budweiser') or ($brand="Sam Adams")) {

echo "Commiserations for buying a lousy beer";

} # where is the mistake in this piece of code?

• These can be combined. Use parenthesis if((($pints) > 4 and ($vehicle=='car')) or (($pints > 6) and

($vehicle=='bicycle'))) {

print "order a cab!"

}

• 'not' is Boolean not.

Page 29: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

variable types

• Variables in PHP have types. Common types includeis_numeric()

is_string()

is_int()

is_float()

• They all return a Boolean value.• They can be used to check the nature of a

variable.

Page 30: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

while()

• while() { } executes a piece of code while the condition is true$count=0;

while($count < 100) {

print "Пиво без водки -- деньги на ветер!<br/>";

$count=$count+1; # don't forget to increment $count!

}

Page 31: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

for() loops

• for() takes the following form, by example<div class="quiz_question">How many cans are there in a six

pack?</div><div>Answer:<select name="answer">

<?php

// initial condition ; terminal check ; instruction at the end of loop

for($count=0; $count <=10; $count=$count+1) {

# note the semicolon above, it is a weird thing!

print "<option value=\"$count\"/>\n";

}

?>

</select></div>

Page 32: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

Arrays

• The variables we have looked at up until now are scalars. They can only contain one piece of data.

• Arrays are variables that can contain one that one piece of data. – For example, a six pack in conveniently represented as

an array of cans of beer.– For another example, a class is a group of people,

each having a name, a social security number, etc.

Page 33: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

numeric arrays• An numeric array has key value pairs where the

keys are numbers.$good_beers[0]="Baltika 8";

$good_beers[1]="Bruch Festbock";

• or as follows$lousy_beers=array("Miller Lite", "Sam Adams",

"Budweiser");

print $lousy_beers[0]; // prints: Miller Lite

print $lousy_beers[2]; // prints: Budweiser

Page 34: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

string arrays

• Sometimes you need data structured by a string. For example for a price list. $price['Grosswald Export']=1.45;

$price['Bruch Festbock']=1.74;

// the array $price has strings as keys

• An equivalent way to declare this is $price=array('Grosswald Export' => 1.45, 'Bruch

Festbock' => 1.74);

Page 35: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

count()

• count() returns the size of an array$price['Grosswald Export']=1.45;

$price['Bruch Festbock']=1.74;

$product_number=count($price);

print "We have $product_number products for you today.";

// prints: We have 2 products for you today.

Page 36: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

counting in numeric arrays

• For numeric arrays, you can add members very simple without keeping track of number.$beers=("Karlsberg", "Bruch") ;

$beers[]="Budweiser";

// beer now has Karlberg, Bruch and Budweiser

Page 37: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

looping through an array

• foreach() loops through an array. An example illustratesprint "<table caption=\"price list\">\n";

foreach ($price as $item => $euro_amount) {

print "<tr><td>$item</td>\n";

print "<td>&euro;$euro_amount</td></tr>\n";

}

print "</table>";

• This prints the full price list. But it could also do the whole form. This is fabulous!

Page 38: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

the well-aligned price table

$l_r=array('left','right');

$count=0; // counter of elements printed

print "<table caption=\"price list\">\n";

foreach ($price as $item => $euro_amount) {

print "<tr><td align=\"$l_r[$count % 2]\"";

print "$item";

$count++;

print "</td>\n<td align=$l_r[$count % 2]\">

&euro;$euro_amount</td></tr>\n";

Page 39: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

$count++;

}

print "</table>\n";

// This produces something like

// <table caption="price list">

// <tr><td align="left">Grosswald Export</td>

// <td align="right">&euro;1.45</td></tr>

// <tr><td align="left">Bruch Festbock</td>

// <td align="right"'>&euro;1.74</td></tr>

// </table>

Page 40: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

multiple arrays• Example

$products[0]['name']="Grosswald Pilsener";

$products[0]['price']=1.56;

$products[1]['name']="Grosswald Export";

$products[1]['price']=1.34;

$products[2]['name']="Bruch Landbier";

$products[2]['price']=1.22;

Page 41: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

restructure the shop• Instead of having two files, one with HTML, the

other with PHP, let us have just one. It's easier. • One cool thing to help that is cool is

$_SERVER[PHP_SELF]

It gives the file name of your script in the form. As you change your script file name, you do not need to change the name of the form submitted.

Page 42: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

define some variables$form_greet='<h1>Please place your order</h1>';

$form_top="<form action=\"$_SERVER[PHP_SELF]\" method=\"GET\"><table>";

$form_submit='</table><input type="submit" value="I order"/>';

$submit_check='<input type="hidden" name="submitted" value="1"/>';

$form_bottom='</form>';

$order_head="<h1>Results of your order</h1><div>\n";

•$order_bottom="Thank you for your order. We will ship when we get your check. Prosit!\n</div>";

Page 43: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

printing results if($_GET['submitted']) {

$total_euro=0; print $order_head;

foreach($_GET as $number => $amount) {

if($amount > 0 and $products[$number]) {

$pay=$amount*$products[$number][price];

print "$amount bottles of ";

print $products[$number][name];

print " is &euro;$pay<br/>"; $total_euro+=$pay;

}

}

Page 44: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

print results, start form printing part

$total_dollar=$total_euro*$euro_rate;

$total_dollar=number_format($total_dollar,2);

print "The euro rate is $euro_rate<br/>\n";

print "Your bill is \$$total_dollar\n</div>";

}

else { // print the form

print $form_greet; print $form_top; $product_count=0;

foreach ($products as $prod) {

print "\n<tr><td>";

print $prod['name'];

print "</td><td>";

Page 45: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

final part, printing the form print "<input type=\"text\" name=\"";

print $product_count;

print "\" maxlength=\"2\" size=\"2\"/>";

print "</td><td>@&euro;";

print $prod['price'];

print "</td></tr>\n";

$product_count++; // don't forget!

}

print $submit_check;

print $form_submit;

print $form_bottom;

}

Page 46: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

• We include a hidden element in the form to see if it was submitted<input type="hidden" name="submitted" value="1"/>

• We start the script we check for submissionif($_POST['submitted']) {

// work on the data that was submitted

}

else {

// print form

}

check for submission

Page 47: LIS651 lecture 1 PHP basics Thomas Krichel 2005-03-19.

http://openlib.org/home/krichel

Thank you for your attention!

Please switch off machines b4 leaving!


Recommended