Está en la página 1de 95

Presentación PHP & MySQL

Por: Nelliud D. Torres


¿Qué es PHP?
• Server-side scripting language.
• Diseñado para el Web.
• Se interpreta a nivel del servidor y genera código
HTML o algún 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 número 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 página principal es: http://www.php.net
• La página de Zend Technologies que apoya PHP
es: http://zend.com

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


Fortalezas de PHP
• Alto rendimiento (performance) – PHP es altamente
eficiente, en la página http://www.zend.com se
muestran estadísticas que así lo confirman.
• Interactúa con muchas bases de datos – En adición a
MySQL, PHP trabaja con PostgreSQL, MSQL, Oracle,
dbm, FilePro, Hyperwave, Informix, InterBase y
Sybase entre otros.
• Librerías – Debido a que PHP se diseño para utilizarse
en el Web, contiene múltiples funciones integradas
(built-in) con tareas relacionadas al Web.

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


Fortalezas de PHP (cont. - 1)
• Costo – PHP es gratis. La última versión se
puede bajar de: http://www.php.net
• Fácil 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 rápidamente.
• Apoyo a Objetos– La versión 5 de PHP provee
varias capacidades de este paradigma de
programación.
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 código que se
escribe para una plataforma, trabaja sin
modificaciones en otra.
• Source Code – El programador tiene acceso al
código 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 compañía 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 rápido Relational Database
Management (RDBMS)
• Controla el acceso a los datos y se asegura que
múltiples usuarios puedan utilizarlo.
• Provee acceso rápido y seguro.
• Utiliza el standard query language (SQL).
• Es el database open source más popular del
mundo

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


Fortalezas de MySQL
• Rendimiento (performance) – MySQL es
innegablemente rápido. En la página
http://www.mysql.com/why-mysql/white-
papers/performance.php muestra comparaciones con
otros productos. En el 2002 la revista eWeek hizo
una comparación 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.
• Fácil de usar – La operación 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 código
fuente disponible para hacer cambios y/o mejoras
a la base de datos.
• Disponibilidad de apoyo – No todos los productos
open source tienen una compañía que provea
apoyo, entrenamiento, consultoría, 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 programación 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
Estadísticas sobre servidores Web
marzo 2008
Estadísticas sobre servidores Web
marzo 2008 (cont.)

Estadísticas 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 cómo utilizar XHTML y PHP - 1
Nombre del script de PHP que se va
<html>
<body>
a correr cuando se someta la forma
<form action="processorder.php" method="post">
<table border="0">
<tr bgcolor="#cccccc"> Primera Parte
<td width="150">Item</td>
Método en el que se van a
<td width="15">Quantity</td>
</tr>
pasar valores al script de PHP
<tr>
<td>Tires</td>
<td align="center"><input type="text" name="tireqty" size="3"
maxlength="3"></td>
</tr>
Nombres de variables de la
<tr> forma que pueden ser
<td>Oil</td> utilizados dentro del script de
<td align="center"><input type="text" name="oilqty" size="3" PHP
maxlength="3"></td>
</tr>
<tr>

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 14
Torres
Ejemplo sencillo de cómo utilizar XHTML y PHP - 2
<td>Spark Plugs</td> Segunda Parte
<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> Botón para
</td> someter la
</tr> forma
<tr>
<td colspan="2" align="center"><input type="submit" value="Submit
Order"></td>
</tr>
</table> </form> </body> </html>
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 15
Torres
Forma creada por el Browser

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 16
Torres
Código en PHP que procesa la forma
<html>
<head>
<title>Bob’s Auto Parts – Order Results</title>
</head>
<body>
<h1>Bob’s Auto Parts – Order Results</h1>
<h2>Order Results</h2> Este ejemplo sólo
<?php tira el mensaje de
que la orden fue
echo ’<p>Order processed.</p>’; procesada
?>
</body>
</html>
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 17
Torres
Mensaje generado por PHP

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 18
Torres
Cotejar el código (source) de la página

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 19
Torres
Algunas Instrucciones de PHP
USO DE LOS TAGS EN PHP

El código PHP comienza con <?php y termina con ?>


similar a los tags que se utilizan en HTML. Estos símbolos
se llaman php tags y le indican al Web server en donde
comienza y termina el código de PHP. Cualquier código
que se ponga dentro de estos tags se interpreta por el
Web server como código de PHP. Lo que no esté dentro
del tag de PHP se considera HTML.

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 21
Torres
Whitespace
• Los espacios en blanco al igual que en HTML no
afecta la ejecución del código ni el resultado en
pantalla. Sin embargo se recomiendo la
indentación y separación adecuada que facilite la
lectura del código.
• Ejemplo:
echo ‘hello ‘;
echo ‘world’;
echo ‘hello ‘; echo ‘world’; Pag. 18
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 22
Torres
Comentarios
• Comments – Al igual que otros lenguajes, PHP
permite incluir comentarios dentro de su código e
ignorarlos al momento de ejecución.
• Ejemplos: Comentarios
de más de una
línea
/* Author: Bob Smith
Comentarios
Last modified: April 10 como parte de
This program processes the customer orders. una misma
línea
*/

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

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 23
Torres
Resultado Contenido Dinámico

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

Pag. 20
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 24
Torres
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.

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 25
Torres
Acceder Variables de la Forma
• Las variables en PHP comienzan con el signo de dólar ($).
• De acuerdo a la versión y configuración 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 opción register_globals.
• Medium style ($_POST[‘tireqty’]) – Recomendado por el libro.
• Long style ($HTTP_POST_VARS[‘tireqty’]) – Es el más largo, pero
el más portable. Si se desactiva, mejora el rendimiento de la
ejecución del código. No se recomienda.

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 26
Torres
Ejemplo Código - 1
• Modificar el código anterior para que incluya lo siguiente:
// Creacion de variables
Creando las variables.

$tireqty = $_POST['tireqty'];
$oilqty = $_POST['oilqty'];
$sparkqty = $_POST['sparkqty'];
//
Mostrando los valores en
pantalla.
echo '<p>Your order is as follows: </p>';

echo $tireqty. ' tires <br />';


echo $oilqty. ' bottles of oil <br />';
echo $sparkqty. ' spark plugs <br />';
El punto concadena la variable con el texto
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 27
Torres
EJEMPLO DE LA CORRIDA

Debe mostrar los


mismos valores que
entró el usuario en
pantalla.

Pag. 22
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 28
Torres
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 instrucción: Ambas hacen lo
echo $tireqty. ' tires <br />'; mismo.

Puede ser sustituida por: La comilla no puede


echo “$tireqty tires <br />”; ser sencilla.

Pag. 24-25
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 29
Torres
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, números y under-score.
• No pueden comenzar con un dígito.
• Son case sensitive. Los nombres de funciones son la
excepción ya que no son case sensitive.
• Una variable puede tener el mismo nombre de una
función, sin embargo esto no es recomendado.
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 30
Torres
Creación y Asignación de Variables
• PHP permite declarar variables en adición 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;

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 31
Torres
Tipos de Datos en PHP
• Los tipos de datos que maneja PHP son:
– Integer – Maneja números enteros.
– Float – Maneja números reales. (también 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.

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 32
Torres
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
dólar ($), por ejemplo:
• echo TIREPRICE;

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 33
Torres
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. Built-in superglobal – Están visibles en toda la estructura.
2. Constants – Una vez se declaran, se pueden ver globalmente, por lo tanto
se pueden usar dentro y fuera de cualquier función.
3. Global variables – Se ve dentro del script, pero no dentro de las funciones.
4. Variables inside functions – De funciones declaradas como global, utilizan
el mismo nombre en las variables globales.
5. Variables inside functions static – No se ven fuera de la función, pero si
dentro.
6. Variables inside functions local – Locales a la función y dejan de existir
cuando la ejecución se sale de la función.

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 34
Torres
Operadores Aritméticos
• Son símbolos que se pueden utilizar para manipular
valores y variables. A continuación vamos a ver los
diferentes operadores.
OPERADORES ARITMÉTICOS
Operador Nombre Ejemplo
Suma $a + $b
+
Resta $a - $b
-
Multiplicación $a * $b
*
División $a / $b
/
Modulus $a % $b
%

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 35
Torres
Operadores Aritméticos Combinados
• Es una forma corta de escribir ecuaciones aritméticas. La
siguiente tabla muestra un resumen:
OPERADORES ARITMÉTICOS COMBINADOS
Operador Uso Equivalente a:
$a += $b $a = $a + $b
+=
$a -= $b $a = $a - $b
-=
$a *= $b $a = $a * $b
*=
$a /= $b $a = $a / $b
/=
$a %= $b $a = $a % $b
%=
$a .= $b $a = $a . $b
.=
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 36
Torres
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 Comparación
OPERADORES DE COMPARACIÓN
Los operadores Operador Nombre Uso
de comparación Igual $a == $b
==
(lógicos) son los Idéntico $a === $b
siguientes; ===
No igual $a != $b
!=
No idéntico $a !== $b
!==
No igual $a <> $b
<>
Menor que $a < $b
<
Mayor que $a > $b
>
Menor o igual $a <= $b
<=
Mayor o igual $a >= $b
>=
8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 38
Operadores – Lógicos
• Combina resultados de condiciones lógicas. La tabla a
continuación muestra las diferentes opciones.
OPERADORES LÓGICOS
Operador Nombre Uso
!$b
! NOT
$a && $b
&& AND
$a || $b
|| OR
$a and $b
and AND
$a or $b
or OR

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 39
Torres
Otros Operadores
• En adición 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 expresión suprime un mensaje de warning o error
si esta condición se da. Ej. $a = @(57/0) // No da
mensaje división por cero
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 40
Torres
Ejemplo Código - 2
• Modificar el código anterior para que incluya lo
siguiente al final:
$totalqty = 0;
Acumulando cantidades
$totalqty = $tireqty + $oilqty + $sparkqty;
echo 'Items ordered: '.$totalqty.'<br />';
$totalamount = 0.00;

define('TIREPRICE',100);
define('OILPRICE',10);
define('SPARKPRICE',4); Definiendo constantes.

$totalamount = $tireqty * TIREPRICE


+ $oilqty * OILPRICE
+ $sparkqty * SPARKPRICE;

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 />';

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 41
Torres
Resultado de la Corrida

Pag. 40
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 42
Torres
Utilizando Funciones de Variables
• PHP tiene una librería 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
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 43
Torres
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.


8/12/2007 44
Torres
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.


8/12/2007 45
Torres
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;
}

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 46
Torres
Ciclo - WHILE
$num = 1;
while ($num <= 5)
{
echo $num.”<br />”;
$num++;
}

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 47
Torres
Código de Ejemplo
• Crear el siguiente script de php y ejecutarlo
<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 dinámicamente
</table>
</body>
</html>

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 48
Torres
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"
}
?>

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 49
Torres
Ciclo do…While
$num = 100;
Sólo se ejecuta una vez ya que
do num no es menor de 1. Este
{ tipo de ciclo garantiza que por
lo menos se va a ejecutar una
echo $num.’<br />’; vez. Ideal para menús.
}
while ($num < 1 );

Pag. 53-54
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 50
Torres
Salir de una Estructura de Control
• Si deseas detener la ejecución de una pieza de
código, 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 líneas 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.


8/12/2007 51
Torres
PASOS PARA LA INSTALACIÓN DE
EASYPHP
Entre la PASO - 1
dirección:
http://www.easy
php.org/ debe
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
página en
donde se
procede a
bajar la
instalación.
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
instalación

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


PASO - 5

Se acepta el agreement
y se lee la información
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
instalación)
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 instalación
debe
completarse
sin ningún
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


Instrucciones - 4
3 - The example is designed to print the current date. The PHP Code is integrated directly into the
HTML and starts with. <html>
<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 recomienda
se muestra a guardar cada
aplicación en un
continuación: directorio por
separado.

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 67
Torres
Pasos para correr un Script en PHP - 2
En EasyPHP
buscas la
opción Local
Web (F7), eso
abrirá el
Browser, de ahí
se abre el
directorio
deseado y se
ejecuta el
script (click).
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 68
Torres
Accediendo MySQL desde el Web
con PHP
Ejemplo De Código y Forma Para
Acceder La Base De Datos
Forma De Búsqueda
<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>

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

Pag. 269
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 73
Torres
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 conexión a la Base de Datos.
3. Elegir y consultar la Base de Datos.
4. Obtener los resultados y presentarlos al
usuario.
5. Cerrar la conexión a la Base de Datos.
A continuación explicamos cada paso:

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 75
Torres
1. Cotejar y filtrar la data que proviene del
usuario.
Lo primero que hace el script después 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;
}

Pag. 270
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 76
Torres
1. Cotejar y filtrar la data que proviene del
usuario. (cont.)
Se tiene que cotejar si los datos vienen con las comillas
(quotes) automáticamente o no. Es una directiva que se
puede configurar a nivel de administración. De no ser estar
activada, hay que incluirle los slashes al campo:
if (!get_magic_quotes_gpc())
{
$searchtype = addslashes($searchtype);
$searchterm = addslashes($searchterm);
}

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 77
Torres
2. Establecer la conexión a la Base de
Datos.
Se usa en Object oriented

Para conectarnos a la Base de Datos: Librería que conecta a la


base de datos

@ $db = new mysqli('localhost', 'root', 'root',


'books');
Username
Password
Nombre de la base de datos

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 78
Torres
2. Establecer la conexión a la Base de
Datos. (cont.)
Una vez se hace la conexión, se debe verificar que fue
exitosa ya que el resto del código depende de que la
conexión se logre. Se coteja con el siguiente código:
if (mysqli_connect_errno())
{
echo 'Error: Could not connect to
database. Please try again later.';
exit; De ser cierto el resultado de esta
} función, significa que hubo
problemas al tratar de conectarse a
la base de datos.

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 79
Torres
2. Establecer la conexión a la Base de
Datos. (cont. 2)
El libro indica el siguiente código para seleccionar la base de
datos o si se desea cambiar de base de datos:
$db->select_db(dbname) //object oriented

mysqli_select_db(db_resource, db_name)// procedural

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 80
Torres
3. Elegir y consultar la Base de Datos
Ya establecida la conexión, lo próximo 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

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 81
Torres
4. Obtener los resultados y presentarlos al
usuario
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
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
}
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 82
Torres
4. Obtener los resultados y presentarlos al
usuario (cont.)
Dentro del ciclo podemos utilizar la siguiente instrucción 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
}
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 83
Torres
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
}
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007
Torres
5. Cerrar la Conexión 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 conexión a la base de datos:


$db->close(); // object oriented
o
mysqli_close($db) // procedural

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 85
Torres
Poner Información en la
Base de Datos
Poner Información en la Base de Datos
•Los pasos son similares a los de mostrar resultados:
– Crear la conexión
–Enviar la consulta
–Cotejar los resultados
•Para este caso se utiliza el comando INSERT en lugar
del comando SELECT
•A continuación vemos el ejemplo con el codigo
newbook.html

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 87
Torres
<html>
Forma De Búsqueda Book-o-rama
<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>

© - Derechos Reservados - Prof. Nelliud D.


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

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 89
Torres
Resultado de la Corrida
Buscando el Record a ver si fue Creado

Pag. 277
Revisión del Código de Insertar
La siguiente instrucción 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

Pag. 278
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 92
Torres
Tópicos 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 librerías que puedes incorporar a PHP.

© - Derechos Reservados - Prof. Nelliud D.


8/12/2007 93
Torres
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/white-
papers/performance.php
http://www.securityspace.com
© - Derechos Reservados - Prof. Nelliud D.
8/12/2007 94
Torres
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.


8/12/2007 95
Torres