PHP Ellen Walker CPSC 356 What is PHP? • • • • Stands for "PHP Hypertext Preprocessor" Server-side scripting language HTML-embedded Supports 15 different databases, POP3, IMAP, COM, CORBA • Website: http://www.php.net PHP alternatives • • • • CGI (+ back-end program) ASP (MS Active server pages) JSP (Sun's Java server pages) Cold Fusion • Most of these are not free! PHP Operation • PHP interpreter (on server) reads PHP file • As it is processed, it outputs HTML to the server • Embedded HTML code (including JavaScript) is passed to the server unchanged • Result: "view source" sees only generated HTML, not PHP source Embedding PHP Code <h1>My exciting page!</h1> <? //start php //php code goes here ?> PHP variables • All variables begin with $ • Variables are not declared • Unassigned variables have value NULL – IsSet($var) returns true if var is not NULL • Variable names are case sensitive • Reserved words (like true, while, etc.) are not Comments • Three styles – # (as in Perl) – // (as in JavaScript) – /* … */ (as in C) Numbers and conversions • Integers and floating point numbers (autotyped when value set) $num = 3; //integer $num = 3.5; //now floating point $num = (int) num ; //back to integer 3 again $num2 = intval(num); //another way to do that $num3 = 3.5; settype($num3, "integer"); //.. And a third way Output statements • Echo – With no parentheses, multiple parameters, otherwise only one – echo "First line <br />", "Second line <br />"; • Print – One parameter, coerced to string, returns result – print("The value is "); print(47); • Printf (next slide) Printf • Stands for "print formatted" • Takes multiple parameters – A format string, containing directives such as $d (decimal), $f (float), $s (string) • Formatting directives can include parameters between $ and letter, e.g. $10d = decimal integer of length 10 – Values to insert for the $ directives • Example – printf("Your purchase of $d $s (s) costs $.2f", $quantity, $item, $total_price); Relational & Boolean Operators • Relational operators (for all types) == Same type, same value != Opposite of == >, <, >=, <= Numeric (preferred) or string comparison of values with coercion • Boolean operators &&, and (Precedence of and is higher, otherwise same) ||, or (precedence of or is higher, otherwise same) xor (exclusive or) ! (not) Control Structures • If – Like C++ or Java – Can include else if clauses (not elsif) • While, for, do-while – Like javascript • Foreach – Like Perl Arrays • Combine arrays with Perl hashes • Each element has a key and a value – Typical array: key is the integer index – Hash-like array: key is a string • Array names begin with $ like other variables Creating arrays • $list1[0] = 17; //creates list unless it exists • $list1[] = "hi"; //adds new last element • $list2 = array(10,20,30,40); //creates a traditional array of 4 elements • $hash = array("a"=>"apple", "b"=>"banana"); //creates a hash with 2 elements • $list3 = array(); //creates an empty array Accessing Array elements • $x = $hash['a'] //gets "apple" from the hash • $y = $list1[1] //gets "hi" from the traditional array • $list ($first, $second, $third, $fourth) = $list2; //assigns list2 to 4 individual variables Keys and Values • Array_keys – Make a traditional array of all the keys • Array_values – Make a traditional array of all the values Sequential access • current($array): current element in the array – (initially element 0) • next($array): increments the current element and returns the value $city = current($cities); print("$city <br / >"); while($city = next($cities)) print("$city <br />"); Each (array) • Like next but returns 2-element array of key and value (keys are "key" and "value") • Does not return FALSE for NULL value while($data=each($salaries)){ $name = $data["key"]; $sal = $data["value"]; … } Foreach • Shorthand for each • Use for traditional or hash arrays foreach($salaries as $name=>$sal)){ //process names and salaries… } foreach($salaries as $sal){ //process salaries without names.. } Forms • Forms (HTML, not PHP) collect input • <form action=URL method={get or post} – Get: parameters in URL – Post: parameters not visible – <input> and <select> statements collect data Input tags • Create a box that you type in: – <input type=“text” name=“lname”> • What you type will be passed as “parameter” lname • Many other types of input (checkbox, radio buttons, etc.) -- see documentation Select • Create a menu – <select name=“ssn”> – <option value=“123456789> Mickey Mouse </option> –… – <select> • If you select an option, it is passed as parameter “ssn” Forms and PHP • If method=post – $_POST is hash with names and values from widgets • If method=get – $_GET is hash with names and values from widgets • Example: • $type = $_POST[‘cuporcone’]