CS146 Database Systems &Team Projects Spring 2009 Introduction • Lab instructor: – Darby Thompson • darbyt@gwu.edu • Office Hours: By Appt • Lab page will be linked from the course page: – http://www.seas.gwu.edu/~bhagiweb/cs146/ What do I expect from students in the lab • WID Writing assignments - go to the WID TA if you have questions • Programming assignments – Submit using Blackboard – Due at 11.59pm – Don’t be late! What do I expect from students in the lab • Grading policy for programming assignments – Queries with syntactic errors will not be considered. – Run your queries before sending them – If the query works, it is likely you will get all the points for it What do I expect from students in the lab • I will explain everything in the lab. Be there & don’t fall asleep! • You are expected to play with the tools on your own and learn at least enough to do the project. • Email me to set up appointments - I’ll probably need more than 1 hour notice! • Start early… What do I expect from students in the lab • Teamwork! You will be working on long term team projects. – Communicate with your teammates and let them know if you’re having problems – Communicate with me and let me know if you’re having problems Lab Outline • What we will do – SQL, MySQL, etc… – In-class and homework Programming Assignments – Team Project – PHP, JDBC – Ethics debates/discussions (ideas?) – Lectures/lab swap Databases • What do you already know about databases? Keywords? Tools/Applications? • Any idea what SQL stands for? Databases • Standard Query Language Apply for a mysql account • Send an email NOW to support@ticket.seas.gwu.edu and request a MySQL account. Mention that you are taking CS146 • You will need the account for next lab (in class exercises) Php • Official site: www.php.net • PhP manual: http://www.php.net/manual/en/index.php • Useful package (Apache, MySql,PhP): http://www.easyphp.org/ Where ? • Ssh into cobweb.seas.gwu.edu and put your php files • Access them via http://www.student.seas.gwu.edu/~yourus ername/filename.php How ? • You can use a basic text editing program to write php files, and CyberDuck to move files onto cobweb • Additionally can use X11 Terminal to copy a file from your computer to the server using the following command: – scp filename.php username@cobweb.seas.gwu.edu:public_html/ What is PhP • “PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML” (www.php.net) • Server scripting language (Javascript is a client side scripting language) • If you know C, you will learn PhP in no time. Hello World! • Index.php: <html> <head> <title>PHP Test</title> </head> <body> <?php echo '<p>Hello World</p>'; ?> </body> </html> • Output <html>: <head> <title>PHP Test</title> </head> <body> <p>Hello World</p> </body> </html> Basics • Use echo for printing • Variables start with $ sign • Do not have to explicitly assign them a type (like int, array, etc.) • . (dot) concatenates 2 strings. Ex $a=”Hello”;$b=”World”; echo $a.” ”.$b; displays ”Hello World” Accesing databases from PhP <html> <head> <title>PHP Test</title> </head> <body> <?php $link=mysql_connect("localhost",“username",“password") or die("Error connecting to the database server:".mysql_error()."<br>\n"); mysql_select_db(“username") or die("Error selecting the database:".mysql_error()."<br>\n"); ?> <?php $sql = "SELECT name, id FROM employees;"; $result=mysql_query($sql); while(list($name,$id) = mysql_fetch_array($result)) { echo "<p>".$name." ".$id; } ?> </body> </html> Arrays • A mapping between keys and values. Example <?php $arr = array("foo" => "bar", 12 => true); echo $arr["foo"]; // bar echo $arr[12]; // 1 foreach ($arr as $key => $value) { echo “key=”.$key; echo “ value=”,$value.”<BR>”; } ?> Get and Post • $_GET[’variablename’] – the variable is appended to the http address, and is transmited in the same stream. Ex: http://www.somesite.com/index.php?a=1& b=’x’. Easy to bookmark • $_POST[’variablename’] – a new stream is created, and all the post variables are transmited in this stresm. The http address is clean (no bookmarks) Get variables from forms getName.html <HTML> <BODY> <form action="action.php" method="post"> <p>Your name: <input type="text" name="name" /></p> <p>Your age: <input type="text" name="age" /></p> <p><input type="submit" value="Submit"/></p> </form> </BODY> </HTML> Action.php <HTML> <BODY> <?php echo "Your name is ".$_POST["name"]." and you are ".$_POST["age"]." years old";?> </BODY> </HTML> Some usefull global variables • $_SESSION -An associative array containing session variables available to the current script. • $_SERVER[’PHP_SELF’]- The filename of the currently executing script, relative to the document root. For instance, $_SERVER['PHP_SELF'] in a script at the address http://example.com/test.php/foo.bar would be /test.php/foo.bar. • $_SERVER['SERVER_NAME']- The name of the server host under which the current script is executing. If the script is running on a virtual host, this will be the value defined for that virtual host. • __LINE__The current line number of the file. • __FILE__The full path and filename of the file. If used inside an include, the name of the included file is returned. Session • HTTP is stateless • Simulates a statefull connection. Maintains records on the server side until the browser is closed. • session_start(); • $_SESSION[‘foo’]=‘bar’; • $_SESSION[‘a’][‘b’]=‘c’; • Allows to build a ”shoping cart”; Includes • • • • • • • • • header.php <html> <head> <title>PHP Test</title> </head> <body> <TABLE width="800" cellpadding="4" cellspacing="0" align="center" border="0"> <TR> <TD width='100%'> • • • • • • footer.php • • • • • • index.php <?php include ”header.php”; echo ”hello world”; include ”footer.php” ?> </TD> </TR> </TABLE> </body> </html>