LIS651 lecture 0 PHP introduction, HTML form, shop

advertisement
LIS651 lecture 3
numbers, Boolean, control flow
Thomas Krichel
2010-02-04
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
remainder of the division of the first number by
the second
print 10 % 7;
// prints 3
• Use parenthesis for complicated calculations
$pack=2 * (10 % 7);
print "a $pack pack";
// prints: a 6 pack
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;
print $a;
$b=4;
print $b++;
print $b;
// prints: 5
// prints: 5
// prints 4
// prints 5
• -- works in the same way
type conversion
• In some circumstance, PHP converts numbers to
strings and back. It works like magic. It converts
numbers to strings when required
$one_in_three=1/3;
print $one_in_three; // prints: 0.333333333333
• and numbers to
$string="1.500";
$number=3*$string;
print $number;
• Sometimes it converts to Boolean!
Boolean value
• Every expression in PHP has a Boolean value.
• It is either 'true' or 'false'.
• In certain situation, an expression is evaluated as
a Boolean
• For example
if(expression)
expression1 or expression2
what is truth?
• All strings are true except
– the empty string
– the string "0"
• All numbers are true except
–0
– 0.0
• example
$a=5-4-1;
// $a is false
• Note that variables that you have not assigned
contents are false. This includes misspelled
variables!!
isset()
• isset() is a function that returns true if a variable is
set.
• Under strict coding rules, that are enforced by
PHP running on wotan, the PHP processor will
issue a notice when you use a variable that has
not been set to a value.
• isset($variable) can be used to find out if the
variable variable was set before using it.
comparison operators
• 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
> larger than
<= smaller or equal than
>= larger or equal than
logical operators
• ‘and’ is logical AND. ‘or’ is logical OR.
if($brand=='Budweiser' or $brand="Sam Adams") {
print "Commiserations for buying a lousy beer\n";
} # where is the mistake in this piece of code?
• ‘!’ is Boolean NOT
• These can be combined. Use parenthesis
if((($pints) > 2 and ($vehicle=='car')) or (($pints > 6) and
($vehicle=='bicycle'))) {
print "order a cab!\n";
}
if( condition ) { }
• if( condition ) evaluates an expression condition
as Boolean, and executes a block of code
surrounded by curly brackets if the expression is
true.
if($drunk) {
print "Don'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.
if( condition ) {} else {}
• if you have an if() you can add an else block of
code to execute when the condition is false
if($sober) {
print "You can drive\n";
}
else {
print "Check if you are fit to drive\n";
}
elseif( condition ) { }
• 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";
}
while( condition ) { }
• while( condition ) { } executes a piece of code
while the condition condition is true
$count=0;
while($count < 100) {
print "Пиво без водки -- деньги на ветер!<br/>";
$count=$count+1; # don't forget to increment $count!
}
getting back to forms
• Forms deliver data to the server. The server can
then process the data and deliver a response.
• If the server process uses PHP, each control is
visible to PHP as a PHP variable. It can be read
into the script.
control name and PHP variable
• When the form is passed to the PHP script
named with the action= of the the <form> the
controls are accessible as PHP variables.
• If name is the name of the control, and if the
method is POST, the control is read as the
variable $_POST['name'].
• If name is the name of the control, and if the
method is GET, the control is read as the variable
$_GET['name'].
example
• HTML file greet.html has
<form action="greet.php" method="get"><p>
your last name: <input type="text"
name="lastname"/></p></form>
• PHP file greet.php has
<?php
print "Hello ";
print $_GET['lastname'];
?>
in addition to the usual HTML stuff.
iterative form input
• When users start to use your site, the shit hits the
fan. Users have many ways to do things wrong.
• Many times you will have to print the form again,
with values already filled in.
• In such circumstance a static HTML file for the
form is unsuitable.
• Therefore we need a PHP file that writes out the
form and processes the form.
check for submission
• 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 submission
if(isset($_GET['submitted'])) {
// work on the data that was submitted
}
else {
// print form
}
minimal example greet.php
<?php
if(count($_GET)) {
print "<div>Hello ".$_GET['name']."!</div>\n";
}
else {
print '<form action="'.$_SERVER['PHP_SELF'].
'" method="get">';
print '<div>Your name <input type="text"
name="name"/>';
print "</div></form>\n";
}
?>
PHP calling itself
• One cool thing to help with that 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.
• So in the previous slide, if you replace
action=\"greet.php\"
• with
action=\"".$_SERVER['PHP_SELF']."\"
• you can change the name of the PHP file. It will
still find the itself as the PHP file.
http://openlib.org/home/krichel
Thank you for your attention!
Please switch off computers when
you are done!
Download