You are on page 1of 95

Presentacin PHP & MySQL

Por: Nelliud D. Torres

Qu es PHP?
Server-side scripting language. Diseado para el Web. Se interpreta a nivel del servidor y genera cdigo HTML o algn otro tipo de output que el visitante podr ver. Fue concebido en 1994 por Rasmun Lerdorf. Para el 2004 estaba instalado en 17 millones de dominios, se puede ver el nmero actual en: http://www.php.net/usage.php
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 2

Qu es PHP? (cont.) Usage Stats for April 2007


PHP: 20,917,850 domains, 1,224,183 IP addresses Source: Netcraft

Qu es PHP? (cont.)
Es un producto Open Source. Originalmente PHP significaba Personal Home Page. Luego se cambi a PHP Hypertext Preprocesor. La pgina principal es: http://www.php.net La pgina de Zend Technologies que apoya PHP es: http://zend.com

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

Fortalezas de PHP
Alto rendimiento (performance) PHP es altamente eficiente, en la pgina http://www.zend.com se muestran estadsticas que as lo confirman. Interacta con muchas bases de datos En adicin a MySQL, PHP trabaja con PostgreSQL, MSQL, Oracle, dbm, FilePro, Hyperwave, Informix, InterBase y Sybase entre otros. Libreras Debido a que PHP se diseo para utilizarse en el Web, contiene mltiples funciones integradas (built-in) con tareas relacionadas al Web.

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

Fortalezas de PHP (cont. - 1)


Costo PHP es gratis. La ltima versin se puede bajar de: http://www.php.net Fcil de aprender La sintaxis de PHP es similar a la de C. Por lo tanto si uno conoce cualquier lenguaje similar a C (Java, C++, C#) puede aprender PHP rpidamente. Apoyo a Objetos La versin 5 de PHP provee varias capacidades de este paradigma de programacin.
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 6

Fortalezas de PHP (cont. - 2)


Portabilidad PHP esta disponible para diferentes sistemas operativos. Usualmente el cdigo que se escribe para una plataforma, trabaja sin modificaciones en otra. Source Code El programador tiene acceso al cdigo fuente lo que permite hacer modificaciones sin la necesidad de esperar por actualizaciones ni preocuparse si el vendedor se va a quiebra y termina el apoyo al producto. Disponibilidad de apoyo La compaa Zend Technologies (www.zend.com) provee apoyo a PHP.
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 7

Qu es MySQL? (cont.)
Es un robusto y rpido Relational Database Management (RDBMS) Controla el acceso a los datos y se asegura que mltiples usuarios puedan utilizarlo. Provee acceso rpido y seguro. Utiliza el standard query language (SQL). Es el database open source ms popular del mundo
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 8

Fortalezas de MySQL
Rendimiento (performance) MySQL es innegablemente rpido. En la pgina http://www.mysql.com/why-mysql/whitepapers/performance.php muestra comparaciones con otros productos. En el 2002 la revista eWeek hizo una comparacin de ejecutoria de bases de datos y MySQL qued empatado con Oracle. PDF Bajo costo Se puede conseguir una licencia open source sin costo alguno y licencias comerciales a un costo bajo. Fcil de usar La operacin del producto es similar a otros.
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 9

Fortalezas de MySQL (cont.)


Portabilidad Se puede utilizar en diferentes sistemas Unix y en Windows. Source Code El programador tiene el cdigo fuente disponible para hacer cambios y/o mejoras a la base de datos. Disponibilidad de apoyo No todos los productos open source tienen una compaa que provea apoyo, entrenamiento, consultora, etc. Sin embargo se puede obtener todos estos beneficios en MySQLAB. (www.mysql.com)
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 10

Decisiones a tomar cuando se va a construir un e-commerce site


Hardware para el servidor Sistema Operativo Software orientado a Web Sistema de Base de Datos Un lenguaje de programacin scripting

Algunas de estas elecciones puede crear dependencia en otras. Ej. No todos los sistemas Operativos corren el mismo Hardware y no todos los lenguajes scripting se conectan a todas las bases de datos.
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 11

Estadsticas sobre servidores Web marzo 2008

Estadsticas sobre servidores Web marzo 2008 (cont.)

Estadsticas del mes de http://www.securityspace.com/s_survey /data/200803/com/index.html

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

13

Ejemplo sencillo de cmo utilizar XHTML y PHP - 1


<html> a correr cuando se someta la forma <body> <form action="processorder.php" method="post"> <table border="0"> <tr bgcolor="#cccccc"> <td width="150">Item</td> Mtodo en el que se van a <td width="15">Quantity</td> pasar valores al script de PHP </tr> <tr> <td>Tires</td> <td align="center"><input type="text" name="tireqty" size="3" maxlength="3"></td> Nombres de variables de la </tr> forma que pueden ser <tr> utilizados dentro del script de <td>Oil</td> <td align="center"><input type="text" name="oilqty" size="3" PHP maxlength="3"></td> </tr> <tr>

Nombre del script de PHP que se va

Primera Parte

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

14

Ejemplo sencillo de cmo utilizar XHTML y PHP - 2


Segunda <td>Spark Plugs</td> <td align="center"><input type="text" name="sparkqty" size="3" maxlength="3"></td> </tr> List Box <tr> <td>How did you find Bob's?</td> <td><select name="find"> <option value = "a">I'm a regular customer</option> <option value = "b">TV advertising</option> <option value = "c">Phone directory</option> <option value = "d">Word of mouth</option> </select> Botn para </td> someter la forma </tr> <tr> <td colspan="2" align="center"><input type="submit" value="Submit Order"></td> </tr> </table> </form> </body> </html>
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres

Parte

15

Forma creada por el Browser

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

16

Cdigo en PHP que procesa la forma


<html> <head> <title>Bobs Auto Parts Order Results</title> </head> <body> <h1>Bobs Auto Parts Order Results</h1> <h2>Order Results</h2> <?php echo <p>Order processed.</p>; ?> </body> </html>
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres

Este ejemplo slo tira el mensaje de que la orden fue procesada

17

Mensaje generado por PHP

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

18

Cotejar el cdigo (source) de la pgina

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

19

Algunas Instrucciones de PHP

USO DE LOS TAGS EN PHP


El cdigo PHP comienza con <?php y termina con ?> similar a los tags que se utilizan en HTML. Estos smbolos se llaman php tags y le indican al Web server en donde comienza y termina el cdigo de PHP. Cualquier cdigo que se ponga dentro de estos tags se interpreta por el Web server como cdigo de PHP. Lo que no est dentro del tag de PHP se considera HTML.

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

21

Whitespace
Los espacios en blanco al igual que en HTML no afecta la ejecucin del cdigo ni el resultado en pantalla. Sin embargo se recomiendo la indentacin y separacin adecuada que facilite la lectura del cdigo. Ejemplo: echo hello ; echo world; echo hello ; echo world;
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres

Pag. 18
22

Comentarios
Comments Al igual que otros lenguajes, PHP permite incluir comentarios dentro de su cdigo e ignorarlos al momento de ejecucin. Comentarios Ejemplos: de ms de una
/* Author: Bob Smith Last modified: April 10 This program processes the customer orders. */
lnea Comentarios como parte de una misma lnea

echo <p>Order processed.</p>; // Start printing order

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

23

Resultado Contenido Dinmico

La fecha y hora se genera al momento de ejecutarse el script que crea la pgina.

Pag. 20
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 24

Uso de Funciones
<?php echo '<p>Order processed at</p>'; echo date('H:i, jS F'); echo '</p>'; ?>
H La hora en militar. i Minutos incluyendo ceros a la izquierda. j Dia del mes sin incluir ceros a la izquierda. S Uso de sufijo (en este caso th) F Nombre completo del mes.

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

25

Acceder Variables de la Forma


Las variables en PHP comienzan con el signo de dlar ($). De acuerdo a la versin y configuracin del PHP que se tenga en el servidor, podemos recoger los valores de las variables en tres formas. Short style ($tireqty) Corto y conveniente, pero requiere que se active la opcin register_globals. Medium style ($_POST*tireqty+) Recomendado por el libro. Long style ($HTTP_POST_VARS*tireqty+) Es el ms largo, pero el ms portable. Si se desactiva, mejora el rendimiento de la ejecucin del cdigo. No se recomienda.

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

26

Ejemplo Cdigo - 1
Modificar el cdigo anterior para que incluya lo siguiente:
// Creacion de variables $tireqty = $_POST['tireqty']; $oilqty = $_POST['oilqty']; $sparkqty = $_POST['sparkqty']; //
Creando las variables.

Mostrando los valores en pantalla.

echo '<p>Your order is as follows: </p>'; echo $tireqty. ' tires echo $oilqty. ' bottles of oil echo $sparkqty. ' spark plugs <br />'; <br />'; <br />';

El punto concadena la variable con el texto


8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 27

EJEMPLO DE LA CORRIDA

Debe mostrar los mismos valores que entr el usuario en pantalla.

Pag. 22
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 28

Concatenar Caracteres
El laboratorio pasado muestra que el punto se utiliza para concatenar cadenas de caracteres de diferentes formatos (String concatenation). Esto evita el tener que utilizar demasiado la directiva echo. La instruccin: Ambas hacen lo
echo $tireqty. ' tires <br />';
mismo.

Puede ser sustituida por:


echo $tireqty tires <br />;

La comilla no puede ser sencilla.

Pag. 24-25
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 29

Reglas para uso de Identifiers


Identifiers pueden ser nombres de variables, funciones y clases entre otros. Las reglas para definir identifiers son: Pueden ser de cualquier largo y pueden consistir de letras, nmeros y under-score. No pueden comenzar con un dgito. Son case sensitive. Los nombres de funciones son la excepcin ya que no son case sensitive. Una variable puede tener el mismo nombre de una funcin, sin embargo esto no es recomendado.
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 30

Creacin y Asignacin de Variables


PHP permite declarar variables en adicin a las que se pasan de HTML. No es necesario declarar las variables en PHP antes de utilizarlas. Una variable se crea cuando se le asigna un valor por primera vez. Se utiliza el operador de igualdad (=) para asignar valor. Ejemplos:
$totalqty = 0; $totalamount = $totalqty; $sumatotal = 0.0;
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 31

Tipos de Datos en PHP


Los tipos de datos que maneja PHP son:
Integer Maneja nmeros enteros. Float Maneja nmeros reales. (tambin se le llama double) String Maneja cadena de caracteres. Boolean Cierto o Falso. Array Maneja arreglos. Object Almacena instancias de las clases.

PHP permite que las variables cambien de tipo de dato de acuerdo al valor que almacenen al momento.

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

32

Constantes
PHP permite declarar constantes, algunos ejemplos son:
define(TIREPRICE,100); define(OILPRICE,10); define(SPARKPRICE,4);

Se recomienda utilizar el formato de C para distinguir entre constantes y variables. Para referirse a las constantes no hay que usar el signo de dlar ($), por ejemplo:
echo TIREPRICE;

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

33

Alcance (scope) de las Variables


Por scope nos referimos a los lugares en donde una variable puede ser visible dentro de la estructura de PHP. Los seis tipos de scope en PHP son:
1. 2. 3. 4. 5. Built-in superglobal Estn visibles en toda la estructura. Constants Una vez se declaran, se pueden ver globalmente, por lo tanto se pueden usar dentro y fuera de cualquier funcin. Global variables Se ve dentro del script, pero no dentro de las funciones. Variables inside functions De funciones declaradas como global, utilizan el mismo nombre en las variables globales. Variables inside functions static No se ven fuera de la funcin, pero si dentro. Variables inside functions local Locales a la funcin y dejan de existir cuando la ejecucin se sale de la funcin.

6.

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

34

Operadores Aritmticos
Son smbolos que se pueden utilizar para manipular valores y variables. A continuacin vamos a ver los diferentes operadores.
OPERADORES ARITMTICOS Operador Nombre Suma Resta Multiplicacin Divisin Modulus Ejemplo $a + $b $a - $b $a * $b $a / $b $a % $b

+ * / %
8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

35

Operadores Aritmticos Combinados


Es una forma corta de escribir ecuaciones aritmticas. La siguiente tabla muestra un resumen:
OPERADORES ARITMTICOS COMBINADOS Operador Uso $a += $b $a -= $b $a *= $b $a /= $b $a %= $b $a .= $b Equivalente a: $a = $a + $b $a = $a - $b $a = $a * $b $a = $a / $b $a = $a % $b $a = $a . $b

+= -= *= /= %= .=
8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

36

Referencias en Variables
Para hacer referencias en variables, utilizamos el operador &, Ejemplo:
$a = 5; $b = $a; $a = 7; // $b va a seguir teniendo 7 $a = 5; $b = &$a; $a = 7; // $a y $b ambos tienen 7

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

37

Operadores de Comparacin
Los operadores de comparacin (lgicos) son los siguientes;
OPERADORES DE COMPARACIN

Operador

Nombre
Igual Idntico No igual No idntico No igual

Uso
$a == $b $a === $b $a != $b $a !== $b $a <> $b

== === != !== <> < > <= >=

Menor que
Mayor que Menor o igual Mayor o igual

$a < $b
$a > $b $a <= $b $a >= $b
38

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

Operadores Lgicos
Combina resultados de condiciones lgicas. La tabla a continuacin muestra las diferentes opciones.
OPERADORES LGICOS Operador Nombre Uso

! && || and or

NOT
AND OR

!$b
$a && $b $a || $b

AND
OR

$a and $b
$a or $b

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

39

Otros Operadores
En adicin a los operadores ya mencionados, podemos incluir:
La coma (,) - Separa argumentos y otras listas. new y -> - Crear una instancia de una clase y acceder miembros. operador ternario (?:) - Trabaja igual que C, por ejemplo: ($grade >= 50 ? Passed : Failed) Error suppression El operador (@) puesto al frente de una expresin suprime un mensaje de warning o error si esta condicin se da. Ej. $a = @(57/0) // No da mensaje divisin por cero
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 40

Ejemplo Cdigo - 2
Modificar el cdigo anterior para que incluya lo siguiente al final:
$totalqty = 0; $totalqty = $tireqty + $oilqty + $sparkqty; echo 'Items ordered: '.$totalqty.'<br />'; $totalamount = 0.00; define('TIREPRICE',100); define('OILPRICE',10); define('SPARKPRICE',4); $totalamount = $tireqty + $oilqty + $sparkqty * TIREPRICE * OILPRICE * SPARKPRICE;

Acumulando cantidades

Definiendo constantes.

echo 'subtotal: $'.number_format($totalamount,2).'<br />'; $taxrate = 0.07; // tax local $totalamount = $totalamount * (1 + $taxrate); echo 'Total including tax: $'.number_format($totalamount,2).'<br />';
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 41

Resultado de la Corrida

Pag. 40
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 42

Utilizando Funciones de Variables


PHP tiene una librera de funciones que te permiten manipular y probar variables. gettype() Indica el tipo de dato de la variable. settype() Define la variable al tipo de dato especificado. Ejemplo:
$a = 56; echo gettype($a).<br />; // muestra integer settype($a,double); // Lo cambia a double echo gettype($a).<br />; // muestra double
Pag. 42
43 - Derechos Reservados - Prof. Nelliud D. Torres

8/12/2007

Funciones que Cotejan Tipo de Dato


Son funciones que cotejan el tipo de dato de la variable. Devuelven true o false. Ejemplos:
is_array() is_double(), is_float, is_real() // Todas son lo mismo. is_long(), is_int(), is_integer() // Todas son lo mismo. is_string() is_object() is_resource() is_null() is_scalar() , is_numeric(), is_callable()
- Derechos Reservados - Prof. Nelliud D. Torres

8/12/2007

44

Estructuras de Control - IF
if ($totalqty == 0) { echo <font color=red>; echo You did not order anything on the previous page!<br />; echo </font>; } if ($totalqty == 0) { echo You did not order anything on the previous page!<br />; } else { echo $tireqty. ' tires <br />'; echo $oilqty. ' bottles of oil <br />'; echo $sparkqty. ' spark plugs <br />'; }
- Derechos Reservados - Prof. Nelliud D. Torres

8/12/2007

45

Estructura de Control - Switch


switch($find) { case a echo <p>Regular customer.</p>; break; case b echo <p>Customer referred by TV advert.</p>; break; case c echo <p>Customer referred by phone directory.</p>; break; case d echo <p>Customer referred by word of mouth.</p>; break; default : echo <p>Do not know how this customer found us.</p>; break; }

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

46

Ciclo - WHILE
$num = 1; while ($num <= 5) { echo $num.<br />; $num++; }

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

47

Crear el siguiente script de php y ejecutarlo

Cdigo de Ejemplo

<html> Encabezamiento de la tabla <body> <table border = 0 cellpadding = 3> <tr> <td bgcolor = "#CCCCCC" align = center>Distance</td> <td bgcolor = "#CCCCCC" align = center>Cost</td> </tr> Ciclo <?php $distance = 50; while ($distance <= 250 ) { echo "<tr>\n <td align = right>$distance</td>\n"; echo " <td align = right>". $distance / 10 ."</td>\n</tr>\n"; $distance += 50; } Generando la tabla dinmicamente ?> </table> </body> </html>

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

48

Ciclo - FOR
<?php for($distance = 50; $distance <= 250; $distance += 50) { echo "<tr>\n <td align = right>$distance</td>\n"; echo " <td align = right>". $distance / 10 ."</td>\n</tr>\n" } ?>

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

49

Ciclo doWhile
$num = 100; do { echo $num.<br />; } while ($num < 1 );
Slo se ejecuta una vez ya que num no es menor de 1. Este tipo de ciclo garantiza que por lo menos se va a ejecutar una vez. Ideal para mens.

Pag. 53-54
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 50

Salir de una Estructura de Control


Si deseas detener la ejecucin de una pieza de cdigo, tienes 3 formas de conseguirlo:
1. Utilizar el enunciado break que permite salir de un ciclo como por ejemplo un switch. 2. Utilizar el enunciado continue si deseas continuar en el ciclo, pero que salte las lneas que van de ese punto al final. 3. Utilizar el enunciado exit si deseas salir del ciclo por completo. Ejemplo:

if ($totalqty == 0) { echo You did not order anything on the previous page!<br />; exit; }
- Derechos Reservados - Prof. Nelliud D. Torres

8/12/2007

51

PASOS PARA LA INSTALACIN DE EASYPHP

Entre la direccin:
http://www.easy php.org/ debe

PASO - 1

aparecer la siguiente pantalla:

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

53

PASO - 2

Seleccionar EasyPHP 2.0 beta 1

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

54

PASO - 3
Aparece una pgina en donde se procede a bajar la instalacin. El usuario debe indicar el lugar donde desea que se baje el archivo.
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 55

PASO - 4
Primero se indica el idioma que se desea y luego comienza el Wizard de la instalacin

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

56

PASO - 5

Se acepta el agreement y se lee la informacin importante.


8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 57

PASO - 6

Se indica directorio y shortcut a utilizarse (dejar el valor default que trae la instalacin)
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 58

PASO - 7

Se procede a instalar el producto

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

59

PASO - 8
La instalacin debe completarse sin ningn problema.

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

60

Instrucciones - 1
Install EasyPHP Download EasyPHP from the website www.easyphp.org double-click on the downloaded executable select an installation directory and follow the instructions

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

61

Instrucciones - 2
Run EasyPHP We are not really running EasyPHP as such: we are really a starting up Apache and MySQL. After installation, a short cut to EasyPHP is created in the directory "Start/Programs/EasyPHP". When EasyPHP is launched, an icon appears beside the clock [1]. A right-click gives access to various menus [2]: Help: help on EasyPHP Log Files: record errors generated by Apache, MySQL and EasyPHP Configuration: gives access to various configuration tools Explorer: open the directory "www" in Windows Explorer Administration : opens the administration page Web local : opens local web Restart : restarts Apache and MySQL Start/Stop : Starts/Stops Apache and MySQL Exit : closes EasyPHP
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 62

Instrucciones - 3
Use the directory "www" or an alias
You must place your files either in the directory "www" or an alias that you have created, so that PHP can interpret your PHP pages. To view your pages, select "local Web" or an Alias on the "Administration" page.

Your first PHP page


There are many ways to program in PHP and there are many suitable text editors (eg specialized for HTML or PHP with syntax highlighting etc). In this example we will use a simple text editor.

1 - open a new file. 2 - Type the structure of an HTML page. <html> <head> <title>My first page in PHP.</title> </head> <body> </body> </html>
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 63

3 - The example is designed to print the current date. The PHP Code is integrated directly into the
HTML and starts with. <html>

Instrucciones - 4

<head> <title>My first page in PHP.</title> </head> <body> Current date. : <? print (Date("l F d, Y")); ?> </body> </html> 4 - Saving the page.
Create a new directory in the directory "www" (or in an alias). Save your first PHP page there giving it one of the following extensions: php (recommended), php3, php4. This is not an absolute rule, but will function with this configuration of EasyPHP. It may necessary to modify these extensions if you choose to upload your pages to a web server which has a different configuration. For our example we choose the extension .php Rq: make sure in the screen options of Windows that the extensions of the files whose type is known are visible.
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 64

Instrucciones - 5
5 - See the result.
* DO NOT DO THIS: in Windows Explorer go to the directory "www" (or the directory of an alias) then the directory corresponding to your project and double-click on your example file. You will get an error message. *DO THIS : Launch EasyPHP, open "local Web", select your work directory (or an alias) then click on "date.php". You will see a web page which will shows the current date; for example: "current Date: Wednesday March 22, 2006". It is now up to you to create your own PHP pages.

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

65

Menu de EasyPHP

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

66

Pasos para correr un Script en PHP


Crear el script y guardarlo en el directorio WWW como se muestra a continuacin:

Se recomienda guardar cada aplicacin en un directorio por separado.

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

67

Pasos para correr un Script en PHP - 2


En EasyPHP buscas la opcin Local Web (F7), eso abrir el Browser, de ah se abre el directorio deseado y se ejecuta el script (click).
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 68

Accediendo MySQL desde el Web con PHP

Ejemplo De Cdigo y Forma Para Acceder La Base De Datos

Forma De Bsqueda
<html> <head> <title>Book-O-Rama Catalog Search</title> </head>

<body> <h1>Book-O-Rama Catalog Search</h1>


<form action="results.php" method="post"> Choose Search Type:<br /> <select name="searchtype"> <option value="author">Author</option> <option value="title">Title</option> <option value="isbn">ISBN</option> </select> <br /> Enter Search Term:<br /> <input name="searchterm" type="text"> <br /> <input type="submit" value="Search"> </form> </body> </html>
- Derechos Reservados - Prof. Nelliud D. Torres

Pag. 266-267
71

8/12/2007

Cdigo PHP Buscar Base De Datos


<html> <head> <title>Book-O-Rama Search Results</title> </head> <body> <h1>Book-O-Rama Search Results</h1> <?php // create short variable names $searchtype=$_POST['searchtype']; $searchterm=$_POST['searchterm']; $searchterm= trim($searchterm); if (!$searchtype || !$searchterm) { echo 'You have not entered search details. Please go back and try again.'; exit; } if (!get_magic_quotes_gpc()) { $searchtype = addslashes($searchtype); $searchterm = addslashes($searchterm); } @ $db = new mysqli('localhost', 'bookorama', 'bookorama123', 'books'); if (mysqli_connect_errno()) { echo 'Error: Could not connect to database. Please try again later.'; 8/12/2007 exit; } $query = "select * from books where ".$searchtype." like '%".$searchterm."%'"; $result = $db->query($query); $num_results = $result->num_rows; echo '<p>Number of books found: '.$num_results.'</p>'; for ($i=0; $i <$num_results; $i++) { $row = $result->fetch_assoc(); echo '<p><strong>'.($i+1).'. Title: '; echo htmlspecialchars(stripslashes($row['title'])); echo '</strong><br />Author: '; echo stripslashes($row['author']); echo '<br />ISBN: '; echo stripslashes($row['isbn']); echo '<br />Price: '; echo stripslashes($row['price']); echo '</p>'; } $result->free(); $db->close(); ?> </body> </html>

- Derechos Reservados - Prof. Nelliud D. Torres

72

Pantalla con Resultados

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

Pag. 269
73

Pasos Para Acceder La Base De Datos Desde PHP

Consultar Base de Datos desde el Web


1. Cotejar y filtrar la data que proviene del usuario. 2. Establecer la conexin a la Base de Datos. 3. Elegir y consultar la Base de Datos. 4. Obtener los resultados y presentarlos al usuario. 5. Cerrar la conexin a la Base de Datos.
A continuacin explicamos cada paso:
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 75

1. Cotejar y filtrar la data que proviene del usuario.


Lo primero que hace el script despus de obtener los valores de la forma es asegurarse que de no existan espacios en blanco en los datos entrados por el usuario: $searchterm = trim($searchterm); Luego cotejamos que el usuario entr los datos requeridos por la forma: if (!$searchtype || !searchterm) { echo No se entraron los datos exit; }
- Derechos Reservados - Prof. Nelliud D. Torres

Pag. 270
76

8/12/2007

1. Cotejar y filtrar la data que proviene del usuario. (cont.)


Se tiene que cotejar si los datos vienen con las comillas (quotes) automticamente o no. Es una directiva que se puede configurar a nivel de administracin. De no ser estar activada, hay que incluirle los slashes al campo:
if (!get_magic_quotes_gpc()) { $searchtype = addslashes($searchtype); $searchterm = addslashes($searchterm); }

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

77

2. Establecer la conexin a la Base de Datos.


Se usa en Object oriented

Para conectarnos a la Base de Datos:

Librera que conecta a la base de datos

@ $db = new mysqli('localhost', 'root', 'root', 'books');


Username Password Nombre de la base de datos

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

78

2. Establecer la conexin a la Base de Datos. (cont.)


Una vez se hace la conexin, se debe verificar que fue exitosa ya que el resto del cdigo depende de que la conexin se logre. Se coteja con el siguiente cdigo:
if (mysqli_connect_errno()) { echo 'Error: Could not connect to database. Please try again later.'; exit; De ser cierto el resultado de esta funcin, significa que hubo }
problemas al tratar de conectarse a la base de datos.

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

79

2. Establecer la conexin a la Base de Datos. (cont. 2)


El libro indica el siguiente cdigo para seleccionar la base de datos o si se desea cambiar de base de datos:
$db->select_db(dbname) o mysqli_select_db(db_resource, db_name)//
procedural

//object oriented

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

80

3. Elegir y consultar la Base de Datos


Ya establecida la conexin, lo prximo que debemos hacer es crear el comando de SQL que queremos utilizar:
$query = "select * from books where ".$searchtype." like '%".$searchterm."%'";

Para ejecutar el comando anterior:


$result = $db->query($query); // object oriented
$result = mysqli_query($db, $query); // procedural

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

81

Para saber la cantidad de instancias (records) que obtuvimos de la base de datos, utilizamos el siguiente comando:
$num_results = $result->num_rows;// object oriented o $num_results = mysqli_num_rows($result); // procedural

4. Obtener los resultados y presentarlos al usuario

Esto hace falta para poder crear el ciclo que acceda esos datos y se puedan presentar al usuario:
for ($i=0; $i < $num_results; $i++) { // instrucciones }
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 82

4. Obtener los resultados y presentarlos al usuario (cont.)


Dentro del ciclo podemos utilizar la siguiente instruccin para almacenar en una variable (row) cada instancia y que nos permita mostrarla en pantalla al usuario:
$row = $result->fetch_assoc();// object oriented o $row = mysqli_fetch_assoc($result); // procedural

Esto hace falta para poder crear el ciclo que acceda esos datos y se puedan presentar al usuario:
for ($i=0; $i < $num_results; $i++) { // instrucciones }
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 83

4. Obtener los resultados y presentarlos al usuario (cont. 2)


Esto nos va a permitir mostrar los atributos como por ejemplo el ISBN:
echo <br />ISBN: ; echo stripslashes($row[isbn]);

Esto hace falta para poder crear el ciclo que acceda esos datos y se puedan presentar al usuario:
for ($i=0; $i < $num_results; $i++) { // instrucciones }
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres

5. Cerrar la Conexin de la Base de Datos


Se puede liberar las instancias obtenidas utilizando el siguiente comando:
$result->free(); ();// object oriented o mysqli_free_result($result); // procedural

Finalmente podemos cerrar la conexin a la base de datos:


$db->close(); // object oriented o mysqli_close($db) // procedural
- Derechos Reservados - Prof. Nelliud D. Torres

8/12/2007

85

Poner Informacin en la Base de Datos

Poner Informacin en la Base de Datos


Los pasos son similares a los de mostrar resultados:
Crear la conexin

Enviar la consulta Cotejar los resultados

Para este caso se utiliza el comando INSERT en lugar del comando SELECT A continuacin vemos el ejemplo con el codigo newbook.html
- Derechos Reservados - Prof. Nelliud D. Torres

8/12/2007

87

Forma De Bsqueda Book-o-rama


<html> <head> <title>Book-O-Rama - New Book Entry</title> </head> <body> <h1>Book-O-Rama - New Book Entry</h1> <form action="insert_book.php" method="post"> <table border="0"> <tr> <td>ISBN</td> <td><input type="text" name="isbn" maxlength="13" size="13"></td> </tr> <tr> <td>Author</td> <td> <input type="text" name="author" maxlength="30" size="30"></td> </tr> <tr> <td>Title</td> <td> <input type="text" name="title" maxlength="60" size="30"></td> </tr> <tr> <td>Price $</td> <td><input type="text" name="price" maxlength="7" size="7"></td> </tr> <tr> <td colspan="2"><input type="submit" value="Register"></td> </tr> </table> </form> </body> </html>

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

88

Cdigo PHP de Entrar los Datos


<html> <head> <title>Book-O-Rama Book Entry Results</title> </head> <body> <h1>Book-O-Rama Book Entry Results</h1> <?php // create short variable names $isbn=$_POST['isbn']; $author=$_POST['author']; $title=$_POST['title']; $price=$_POST['price']; if (!$isbn || !$author || !$title || !$price) { echo 'You have not entered all the required details.<br />' .'Please go back and try again.'; exit; }
if (!get_magic_quotes_gpc()) { $isbn = addslashes($isbn); $author = addslashes($author); $title = addslashes($title); $price = doubleval($price); } @ $db = new mysqli('localhost', 'root', 'root', 'books'); if (mysqli_connect_errno()) { echo 'Error: Could not connect to database. Please try again later.'; exit; } $query = "insert into books values ('".$isbn."', '".$author."', '".$title."', '".$price."')"; $result = $db->query($query); if ($result) echo $db->affected_rows.' book inserted into database.'; $db->close(); ?> </body> </html>

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

89

Resultado de la Corrida

Buscando el Record a ver si fue Creado

Pag. 277

Revisin del Cdigo de Insertar


La siguiente instruccin permite insertar instancias en la tabla:
$query = insert into books values ($isbn, author, $title, $price);

$result = $db->query($query); // indica si se inserto exitosamente o no

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

Pag. 278
92

Tpicos Adicionales
Existen otras formas de manejar las bases de datos Hay un standard para conectar a las Bases de Datos llamado ODBC (Open Database Connectivity) Esto permite conectar a la base de datos, pero no puedes utilizar las funciones que te permita la base de datos en particular. Otras bases de datos como Oracle, Db2, SqlServer tienen sus propias libreras que puedes incorporar a PHP.

8/12/2007

- Derechos Reservados - Prof. Nelliud D. Torres

93

REFERENCIAS
PHP and MySQL Web Development, Third Edition, Luke Welling, and Laura Thomson http://www.php.net/usage.php http://www.php.net http://zend.com http://www.mysql.com/why-mysql/whitepapers/performance.php http://www.securityspace.com
8/12/2007 - Derechos Reservados - Prof. Nelliud D. Torres 94

REFERENCIAS (cont.)
PHP and MySQL Web Development, Third Edition, Luke Welling, and Laura Thomson http://www.easyphp.org/ http://www.mysql.com http://www.webopedia.com/TERM/O/ODBC.ht ml
- Derechos Reservados - Prof. Nelliud D. Torres

8/12/2007

95

You might also like