Presentation is loading. Please wait.

Presentation is loading. Please wait.

Beginners Guide to Web-Enabling your Informix database Using : By: Peter Schmidt PRS Technologies, Inc.

Similar presentations


Presentation on theme: "Beginners Guide to Web-Enabling your Informix database Using : By: Peter Schmidt PRS Technologies, Inc."— Presentation transcript:

1 Beginners Guide to Web-Enabling your Informix database Using : By: Peter Schmidt PRS Technologies, Inc.

2 PRS Technologies, Inc. October, 2000 2 What is PHP ? PHP (officially "PHP: Hypertext Preprocessor") ( Originally “Personal Home Page” ) A server-side HTML-embedded scripting language. Writing a database-enabled web page is incredibly simple ! PHP is in use on over 150,000 sites around the world. Since PHP is executed on the web server, web browsers can’t see your PHP code. PHP is very fast. PHP is completely free (Open Source) PHP (officially "PHP: Hypertext Preprocessor") ( Originally “Personal Home Page” ) A server-side HTML-embedded scripting language. Writing a database-enabled web page is incredibly simple ! PHP is in use on over 150,000 sites around the world. Since PHP is executed on the web server, web browsers can’t see your PHP code. PHP is very fast. PHP is completely free (Open Source)

3 PRS Technologies, Inc. October, 2000 3 The following databases are currently supported: Informix InterBasePostgreSQL dBaseFrontBaseSolid EmpressmSQLSybase FilePro ( read-only )Direct MS-SQLUnix dbm IBM DB2MySQLAdabas D ODBCVelocisIngres Oracle (OCI7 and OCI8) Informix InterBasePostgreSQL dBaseFrontBaseSolid EmpressmSQLSybase FilePro ( read-only )Direct MS-SQLUnix dbm IBM DB2MySQLAdabas D ODBCVelocisIngres Oracle (OCI7 and OCI8)

4 PRS Technologies, Inc. October, 2000 4 An introductory example of PHP <?php echo "Hi, I'm a PHP script!"; ?> Note that PHP code is embedded inside the HTML code. Demo 1

5 PRS Technologies, Inc. October, 2000 5 Here I am in HTML! <?php echo ”Now I'm in PHP! "; ?> Back to HTML! HTML PHP Back to HTML Note the PHP start and stop tags Demo 2 PHP code is executed on the web server! Switching between HTML and PHP

6 PRS Technologies, Inc. October, 2000 6 Putting comments in PHP code <?php echo "This is a test "; // This is a one-line c++ style comment echo "This is a test "; # This is Unix shell-style style comment /* This is the first line of a multi line comment This is the second line of comment */ ?> PHP supports 'C', 'C++' and Unix shell-style comments.

7 PRS Technologies, Inc. October, 2000 7 Connecting to the Informix database <?php $database = "video";/* populate variables */ $server = "lapdog_tcp"; $login = ”username"; $password = ”password"; $dbs = $database. "@". $server; /* concatenate */ $connect_id = ifx_pconnect($dbs,$g_login,$g_password); if (!$connect_id) { echo "Unable to connect to Informix database \n"; chk_ifx_err1($connect_id); } else { echo “Informix connection successful! ”; } ?> Demo 3 This is my user defined function

8 PRS Technologies, Inc. October, 2000 8 <?php $database = "video"; $server = "lapdog_tcp"; $login = ”username"; $password = ”password"; ?> Demo 3 Use a tcp/ip connection to the database (vs. a shared memory connection) Warning: E [SQLSTATE=IX 000 SQLCODE=-27000] in /u/www/lapdog/php_demo/php_demo4.php3 on line 40 Unable to connect to Informix database Informix error: Cannot support multiple connections over shared memory. finderr -27000 -27000 Cannot support multiple connections over shared memory. An application cannot use the CONNECT statement to make more than one connection that uses shared-memory communication (IPC). Ensure that the application makes only one shared-memory connection at a time. If the application must use concurrent connections, the database server administrator might need to change the connection type (as specified in the nettype field of the sqlhosts file) from a shared -memory connection to a network connection. Use a tcp/ip connection to avoid error -27000

9 PRS Technologies, Inc. October, 2000 9 Persistent database connections An SQL connection that does not close when the execution of your script ends. When a persistent connection is requested, PHP checks if there's already an identical persistent connection (that remained open from earlier) - and if it exists, it uses it. If it does not exist, it creates the connection. if connection overhead is high, persistent connections help you considerably. It may (and probably will) change the efficiency of the script, but should not change its behavior! An SQL connection that does not close when the execution of your script ends. When a persistent connection is requested, PHP checks if there's already an identical persistent connection (that remained open from earlier) - and if it exists, it uses it. If it does not exist, it creates the connection. if connection overhead is high, persistent connections help you considerably. It may (and probably will) change the efficiency of the script, but should not change its behavior! $connect_id = ifx_pconnect();

10 PRS Technologies, Inc. October, 2000 10 <?php function chk_ifx_err1($result_id) { $err_string = ifx_error($result_id); /* Note: error If 1st character of err_string is not blank */ if ($err_string[0] != ' ') { printf("Informix error: %s", ifx_errormsg()); die; } ?> Warning: E [SQLSTATE=IX 000 SQLCODE=-952] in /u/www/lapdog/php_demo/php_demo4.php3 on line 40 Unable to connect to Informix database Informix error: User's password is not correct for the database server. Demo 4 Get the error string Check for blank User defined function End program Reporting an Informix error

11 PRS Technologies, Inc. October, 2000 11 <?php if ($connect_id) { $statmt_txt = "select count(*) count from vhs where type_code = 'ST1' "; $statmt_id1 = ifx_query($statmt_txt,$connect_id); // EXECUTE SQL if (!$statmt_id1) { chk_ifx_err1($statmt_id1); } // CHECK FOR ERROR $row = ifx_fetch_row($statmt_id1); // FETCH RESULT OF COUNT INTO ARRAY if (!$row) { chk_ifx_err1($statmt_id1); } // CHECK FOR ERROR $num_rows_selected = sprintf("%d",$row[count]); // FORMAT COUNT echo " "; echo "$num_rows_selected rows selected "; // DISPLAY RESULT IN HTML echo " "; } ?> Demo 5 Selecting a count from a table

12 PRS Technologies, Inc. October, 2000 12 <?php $statmt_txt = " select tape_num Tape_Number,title from vhs where type_code = 'ST1' order by title "; $statmt_id = ifx_prepare($statmt_txt,$connect_id,IFX_SCROLL); // PREPARE if (!$statmt_id) { chk_ifx_err1($statmt_id); }// CHECK FOR ERROR $ret_val = ifx_do($statmt_id); // EXECUTE PREPARED STATEMENT if (!$ret_val) { chk_ifx_err1($statmt_id); }// CHECK FOR ERROR ifx_htmltbl_result ($statmt_id, "BORDER='1' CELLSPACING=0 CELLPADDING=2 BGCOLOR='cornsilk' ALIGN=center"); ?> Demo 6 See output on next slide Use display label for clarity Selecting rows Output to a HTML table.

13 PRS Technologies, Inc. October, 2000 13 Result from using: ifx_htmltbl_result Demo 6

14 PRS Technologies, Inc. October, 2000 14 <?php $statmt_txt = " select * from vhs where type_code = 'ST1' order by title "; $statmt_id = ifx_prepare($statmt_txt,$connect_id,IFX_SCROLL); // PREPARE if (!$statmt_id) { chk_ifx_err1($statmt_id); }// CHECK FOR ERROR $ret_val = ifx_do($statmt_id); // EXECUTE PREPARED STATEMENT if (!$ret_val) { chk_ifx_err1($statmt_id); }// CHECK FOR ERROR echo ”; // HTML Demo 7 --- Continued on next slide --- Selecting rows using a cursor slide 1 of 2

15 PRS Technologies, Inc. October, 2000 15 while ($row = ifx_fetch_row($statmt_id, ”NEXT” )) { $serial_id= $row[serial_id]; $type_code= chop($row[type_code]); $tape_num= $row[tape_num]; $title= chop($row[title]); $hours= $row[hours]; $comment= chop($row[comment]); echo " \n"; echo " $serial_id "; echo " $type_code "; echo " $tape_num "; echo " $title "; echo " $hours "; echo " $comment "; echo " "; } echo " "; ?> Demo 7 --- Continued from previous slide --- Create an “associative” array named “row”. Use column names to identify fields. Use “chop” to remove trailing blanks if desired. Populate fields from associative array Selecting rows using a cursor slide 2 of 2

16 PRS Technologies, Inc. October, 2000 16 <?php $statmt_txt = " select * from vhs where type_code = ? order by title "; ?> Demo 7 “placeholders” are currently not supported, but you can do this instead. <?php $my_code = “ST1”; $statmt_txt = " select * from vhs where type_code = ’ $my_code ' order by title "; ?> Invalid statement valid statement Can’t use placeholders

17 PRS Technologies, Inc. October, 2000 17 Tape Number: <?php echo “The tape number is: $tape_num ”; ?> Variables from outside PHP HTML Forms (GET and POST)

18 PRS Technologies, Inc. October, 2000 18 <?php if ($connect_id) { $sql_txt = "insert into vhs (serial_id, type_code, tape_num, title) values "; $sql_txt.= ” ($serial_id, \”$type_code\”, $tape_num, \”$title\”) "; $ret_val = ifx_query($sql_txt,$connect_id); // INSERT RECORD if (!$ret_val) { chk_ifx_err1($statmt_id); }// CHECK FOR ERROR } ?> Inserting a row

19 PRS Technologies, Inc. October, 2000 19 <?php $input_array = array ( "type_code" => $type_code, "tape_num" => $tape_num, "title" => $title, "hours" => $hours, "comment" => $comment ); ?> An associative array is an array which uses a string (instead of a number) to locate an element within the array. Creating an associative array

20 PRS Technologies, Inc. October, 2000 20 <?php $type_code_array = array ( "MOVIE" => "Movies", "DS9" => "Deep Space 9", "ST1" => "Star Trek (Original)", "ST2" => "Star Trek the Next Generation", "VOY" => "Star Trek Voyager", "HOME" => "Home Movies", "MAX" => "Max Headroom", "OTHER" => "Other" ); echo “ Choose Type of Video”; while (list($key,$value) = each($type_code_array)) { if ($key == $type_code) { echo " $value\n"; } else { echo " $value\n"; } echo " ”; ?> Create an associative array of type codes Step through the array Stepping through an associative array

21 PRS Technologies, Inc. October, 2000 21 <?php if (preg_match("/\|/",$query_string)) {// Search $query_string for a pipe … your code here … // Do this if pipe was found } ?> Search a string for the presence of a pipe symbol Perform a regular expression match on a string. Return (true) if match was positive. The syntax for the pattern search closely resembles Perl. Perform a regular expression match on a string. Return (true) if match was positive. The syntax for the pattern search closely resembles Perl. Searching a string for a pattern Perl-compatible Regular Expression functions

22 PRS Technologies, Inc. October, 2000 22 <?php $query_string = “ 123 | 456 | 789 “; $pipe_list = preg_split("/\|/",$query_string); // Create an array of strings while ( list($key,$value) = each($pipe_list)) { // for each element in the array... … your code here … ?> Create an array from pipe demimited string Split string by a regular expression. Returns an array containing substrings. The syntax closely resembles Perl. Split string by a regular expression. Returns an array containing substrings. The syntax closely resembles Perl. Creating an array from a pipe-delimited string Perl-compatible Regular Expression functions

23 PRS Technologies, Inc. October, 2000 23 <?php function cnt_and_query ($table_name,$where_clause) { … more php code here … return array ($statmt_id2,$num_rows_selected); } ?> <?php list($statmt_id,$cnt_found) = cnt_and_query("vhs",$where_clause); ?> Call a function Start function End function Return multiple values Call a function passing and returning variables

24 PRS Technologies, Inc. October, 2000 24 <?php require("common.inc"); require("menu.inc"); require("display_form.inc"); require("query.inc"); require("add.inc"); require("modify.inc"); ?> Use include() and require() to reference program modules. With include, statements are re-evaluated each time - almost like calling a function. With require, statements are replaced by the required file when it is first encountered. Good for user defined functions. Use include() and require() to reference program modules. With include, statements are re-evaluated each time - almost like calling a function. With require, statements are replaced by the required file when it is first encountered. Good for user defined functions. Breaking your program up into logical modules

25 PRS Technologies, Inc. October, 2000 25 Scope of variables Scope spans the entire module, including “included” and “required” files. Variables defined outside of a function, can be referenced inside the function, if defined as globally available. Any variable defined inside a function can only be used within that function, unless specifically defined as globally available in that function. Globals can also be accessed via the special “GLOBALS” array. See “demo8” for examples. Scope spans the entire module, including “included” and “required” files. Variables defined outside of a function, can be referenced inside the function, if defined as globally available. Any variable defined inside a function can only be used within that function, unless specifically defined as globally available in that function. Globals can also be accessed via the special “GLOBALS” array. See “demo8” for examples. Demo 8 global $variable5; $dbs = $GLOBALS["DATABASE"];

26 PRS Technologies, Inc. October, 2000 26 Installing PHP PHP (without Informix) is usually available on most Linux and Apache installations using ODBC. Configuring PHP to use Informix is NOT a cakewalk. Requires use of ESQL/C libraries to compile (free w/Client SDK). Don’t reuse previous versions of Apache httpd.conf if you are upgrading Apache from a earlier version. If you want the database to reside in a machine separate from the web server, you will need Informix Client SDK or I- Connect on the web server. If you're using I-Connect on the deployment machine, you must compile on a machine with ClientSDK installed. And CSDK and I-Connect need to be in the same directory on the two different machines. PHP (without Informix) is usually available on most Linux and Apache installations using ODBC. Configuring PHP to use Informix is NOT a cakewalk. Requires use of ESQL/C libraries to compile (free w/Client SDK). Don’t reuse previous versions of Apache httpd.conf if you are upgrading Apache from a earlier version. If you want the database to reside in a machine separate from the web server, you will need Informix Client SDK or I- Connect on the web server. If you're using I-Connect on the deployment machine, you must compile on a machine with ClientSDK installed. And CSDK and I-Connect need to be in the same directory on the two different machines.

27 PRS Technologies, Inc. October, 2000 27 Aquire or download the software. Unpack Apache and PHP tar-balls. Set your Informix environmentals. Pre-Configure Apache. Configure, compile and install PHP Configure, compile and install Apache. Update Apache startup script with Informix environment Update Apache httpd.conf Re-start Apache web server. Test. Aquire or download the software. Unpack Apache and PHP tar-balls. Set your Informix environmentals. Pre-Configure Apache. Configure, compile and install PHP Configure, compile and install Apache. Update Apache startup script with Informix environment Update Apache httpd.conf Re-start Apache web server. Test. Installing PHP with Apache Overview

28 PRS Technologies, Inc. October, 2000 28 Go to http://www.php.net Click on: downloads Click on: Complete Source Code PHP 4.0.2 - 29 August 2000 Go to http://www.apache.org Click on apache server. Click on download. Click on apache_1.3.14.tar.gz Go to http://www.php.net Click on: downloads Click on: Complete Source Code PHP 4.0.2 - 29 August 2000 Go to http://www.apache.org Click on apache server. Click on download. Click on apache_1.3.14.tar.gz Installing PHP with Apache Aquire or download the software

29 PRS Technologies, Inc. October, 2000 29 cd /usr/local gunzip apache_1.3.14.tar.gz tar xvf apache_1.3.14.tar gunzip php-4.0.2.tar.gz tar xvf php-4.0.2.tar Installing PHP with Apache Unpack Apache and PHP tar-balls

30 PRS Technologies, Inc. October, 2000 30 INFORMIXDIR=/opt/informix INFORMIXSERVER=myserver_shm ONCONFIG=onconfig.myserver PATH=$PATH:$INFORMIXDIR/bin LD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql export INFORMIXDIR INFORMIXSERVER ONCONFIG LD_LIBRARY_PATH Don’t forget this one! Installing PHP with Apache Set your Informix environmentals Optional

31 PRS Technologies, Inc. October, 2000 31 cd apache_1.3.14./configure --prefix=/usr/local/apache cd.. Installing PHP with Apache Pre-Configure Apache

32 PRS Technologies, Inc. October, 2000 32 cd php-4.0.2./configure --with-apache=../apache_1.3.14 --with-informix=$INFORMIXDIR make make install cd.. Installing PHP with Apache Configure, compile and install PHP

33 PRS Technologies, Inc. October, 2000 33 cd apache_1.3.14./configure --prefix=/usr/local/apache \ --enable-module=rewrite \ --enable-shared=rewrite \ --enable-module=most \ --enable-shared=max \ --enable-module=so \ --activate-module=src/modules/php4/libphp4.a \ --enable-module=php4 make make install cd.. Installing PHP with Apache Configure, compile and install Apache

34 PRS Technologies, Inc. October, 2000 34 cd /etc/rc.d/init.d On Linux, update the apache start-up script “httpd” to include the Informix environment. Or use apachectl. (Varies by platform.) On Linux, update the apache start-up script “httpd” to include the Informix environment. Or use apachectl. (Varies by platform.) Installing PHP with Apache Update Apache startup script with Informix environment

35 PRS Technologies, Inc. October, 2000 35 cd /usr/local/apache/conf Update the apache configuration file “httpd.conf”. If you have upgraded Apache from a different version, do not use the previous “httpd.conf” file as a basis for the new one. Update the apache configuration file “httpd.conf”. If you have upgraded Apache from a different version, do not use the previous “httpd.conf” file as a basis for the new one. AddModule mod_php4.c AddType application/x-httpd-php4.php4 AddType application/x-httpd-php4-source.phps Installing PHP with Apache Update Apache httpd.conf

36 PRS Technologies, Inc. October, 2000 36 cd /etc/rc.d/init.d./httpd restart Installing PHP with Apache Re-start Apache web server apachectl apachectl configtest Also, you can use: On Linux:

37 PRS Technologies, Inc. October, 2000 37 http://www.prstech.com (downloads section) This presentation Entire source of videotape demo Source of all examples Tech-Notes article on PHP by Mario Estrada Monterey Peninsula Ski Club - Cabin Reservation System by Jonathan Leffler http://www.php.net http://www.zend.com http://www.prstech.com (downloads section) This presentation Entire source of videotape demo Source of all examples Tech-Notes article on PHP by Mario Estrada Monterey Peninsula Ski Club - Cabin Reservation System by Jonathan Leffler http://www.php.net http://www.zend.com PHP Resources PRS Technologies, Inc.


Download ppt "Beginners Guide to Web-Enabling your Informix database Using : By: Peter Schmidt PRS Technologies, Inc."

Similar presentations


Ads by Google