Sunteți pe pagina 1din 136

PHP

IT Colima Ene-Jun 2009

1. INTRODUCCIN: Diferencias entre ASP y PHP

Software propietario
Plataformas Microsoft Varios lenguajes (VBScript, JavaScript)

Free Software Multiplataforma Un solo lenguaje: PHP

IT Colima Ene-Jun 2009

Que se necesita para que funcione PHP


Servidor de pginas http Versin compilada de PHP Editor de Texto Si se requiere de manejar bases de datos MYSQL es el mejor DBMS para PHP

IT Colima Ene-Jun 2009

Caractersticas de PHP
Ms rpido que ASP
Lenguaje ms fcil y potente Integracin perfecta con 8 servidores HTTP Acceso a 20 tipos de Bases de Datos Diseo modular de fcil ampliacin Licencia abierta
IT Colima Ene-Jun 2009 4

Historia y Desarrolladores
Fechas Inicio del desarrollo en otoo de 1994 PHP Versin 1 en primavera 1995 PHP Versin 2 1995-1997 PHP Versin 3 1997-2000 PHP Versin 4 en el segundo trimestre de 2000 Equipo de Desarrollo (195 personas con acceso al CVS) Zeev Suraski y Andi Gutmans (Israel) Shane Caraveo (Florida) Stig Bakken (Norway) Andrei Zmievski (Lincoln, Nebraska) Sascha Schumann (Dortmund, Germany) Thies C. Arntzen (Hamburg, Germany) Jim Winstead (Los Angeles) Sam Ruby (Raleigh, NC) Rasmus Lerdorf (San Francisco)
IT Colima Ene-Jun 2009 5

PHP 5
El 13 de julio de 2004, fue lanzado PHP 5, utilizando el motor Zend Engine II (o Zend Engine 2). La versin ms reciente de PHP es la 5.2.4 (30 de agosto de 2007), que incluye todas las ventajas que provee el nuevo Zend Engine 2 como: Soporte slido y REAL para Programacin Orientada a Objetos ( o OOP) con PHP Data Objects. Mejoras de rendimiento. Mejor soporte para MySQL con extensin completamente reescrita. Mejor soporte a XML ( XPath, DOM... ). Soporte nativo para SQLite. Soporte integrado para SOAP. Iteradores de datos. Excepciones de errores.

IT Colima Ene-Jun 2009

PHP 6
Est previsto el lanzamiento en breve de la rama 6 de PHP, cuando se lance esta nueva versin, quedarn solo dos ramas activas en desarrollo (PHP 5 y 6) pues se ha comunicado que PHP 4 ha sido discontinuado desde el 13 de Julio de 2007. Las diferencias que encontraremos frente a PHP 5.* son: Soportar Unicode Limpieza de funcionalidades obsoletas como register_globals, safe_mode... PECL Mejoras en orientacin a objetos

IT Colima Ene-Jun 2009

Estadsticas de uso

Fuente: Netcraft Agosto 2000

Fuente: SecuritySpace.com Septiembre 2000 Informe sobre Mdulos Apache

3,314,634 Dominios, 637,746 Direcciones IP 19,823,296 Dominios analizados PHP instalado en el 16.7% de todos los dominios 1,322,329 Servidores Apache analizados 429,589 (32.49%) PHP 247,642 (18.73%) Frontpage 133,414 (10.09%) mod_perl 111,576 (8.44%) mod_ssl 78,030 (5.90%) OpenSSL 46,404 (3.51%) ApacheJServ
IT Colima Ene-Jun 2009 8

Plataformas soportadas
Plataformas (actualidad): UNIX (todas las variantes) Win32 (NT/W95/W98/W2000) QNX Mac (WebTen) OS/2 BeOS Servidores: Apache (UNIX,Win32) CGI fhttpd ISAPI (IIS, Zeus) NSAPI (Netscape iPlanet) Java servlet AOLServer Roxen Plataformas (en perparacin): OS/390 AS/400

Servidores (en preparacin): Apache 2.0 WSAPI (O'Reilly WebSite) phttpd thttpd

IT Colima Ene-Jun 2009

Bases de datos soportadas


SQL Adabas D Empress IBM DB2 Informix Ingres Interbase Frontbase mSQL Direct MS-SQL MySQL ODBC Oracle (OCI7,OCI8) PostgreSQL Raima Velocis Solid Sybase Otros dBase filePro (slo lectura) dbm (ndbm, gdbm, Berkeley db)

IT Colima Ene-Jun 2009

10

2. El lenguaje PHP

IT Colima Ene-Jun 2009

11

2.1. Extensin de los ficheros


.php3 Indica cdigo PHP 3.x. .php4 Indica cdigo PHP 4.x. .php Indica cdigo PHP. Preferiremos esta extensin por ser ms genrica. .phtml Actualmente en desuso.
IT Colima Ene-Jun 2009 12

2.2. Delimitadores
<? echo 'Primer mtodo de delimitar cdigo PHP'; ?> <?php echo 'Segundo mtodo, el ms usado'; ?> <script language="php"> echo 'Algunos editores (como el FrontPage) Slo entienden este mtodo'; </script> <% echo 'Mtodo de compatibilidad con ASP'; %>
IT Colima Ene-Jun 2009 13

2.2. Delimitadores. Ejemplo.


<html> <body> <?php $H=Date(H); if ( $H>20 || $H<4) { echo Buenas noches.; } else { echo Buenos das.; } ?> </body> </html>
IT Colima Ene-Jun 2009 14

2.2. Delimitadores. Ejemplo.


<%@ Language=VBScript %> <html> <body> <%IF Hour(time)>20 OR Hour(time)<4 THEN%> Buenas noches. <%ELSE%> Buenos das. <%END IF%> </body> </html>

ASP

IT Colima Ene-Jun 2009

15

2.2. Delimitadores. Ejemplo. PHP


<html> <body> <?php if ( Hour(time)>20 || Hour(time)<4) { ?> Buenas noches. <?php } else { ?> Buenos das. <?php }?> </body> </html>

IT Colima Ene-Jun 2009

16

2.3. Fin de lnea


print( date("M d, Y H:i:s", time()) ); print ( date( "M d, Y H:i:s", time() ) ) ;

IT Colima Ene-Jun 2009

17

2.4. Comentarios

/* Comentarios estilo C. * Pueden extenderse durante varias lneas. */ // Comentarios estilo C++. Hasta fin de lnea. # Comentarios estilo Perl. Hasta fin de lnea.

IT Colima Ene-Jun 2009

18

2.5.1. Variables. Declaracin y Uso.

NO hace falta declararlas Llevan delante el signo del dlar $.


$var_1 = 123; $var_2 = hola; $var_3 = $var_1 * 2;

IT Colima Ene-Jun 2009

19

2.5.2. Variables. Tipado.

Variables dbilmente tipadas (tipo mixed).


$mi_variable $mi_variable $mi_variable $mi_variable = = = = Inicializamos como texto; 3; // Entero. 3.14 * $mi_variable; // Float. new MiClase(); // Objeto.

IT Colima Ene-Jun 2009

20

2.5.2.

Variables. Tipado. Conversin automtica.

PHP realiza conversiones automticas de tipo: $mivar = 123; echo $mivar; // Se convierte a string $mivar = 3; // Se convierte a entero $mivar = 2 + $mivar; // para realizar la suma

IT Colima Ene-Jun 2009

21

2.5.2.

Variables. Tipado. Conversin explcita.

Operador cast:
$mivar = (string)123;

Cabiar el tipo de una variable:


$mivar = 12; settype($mivar, "double");
IT Colima Ene-Jun 2009 22

2.5.3. Variables. mbito.


En el cuerpo de un fichero, las variables son GLOBALES al fichero y ficheros incluidos. En una funcin, son LOCALES a esa funcin. Dentro de una clase, slo pueden ser accedidas a travs del operador -> sobre el nombre del objeto.
IT Colima Ene-Jun 2009 23

2.5.4. Referencias.
Se definen con el carcter &: $alias = &$variable

Se puede eliminar una referencia con la funcin unset(): $a = 1; $b = &$a; unset ($a); // Pero $b sigue valiendo 1
IT Colima Ene-Jun 2009 24

2.6. Tipos de datos.


Enteros, en decimal, octal o hexadecimal.
$MiVar = 123;

Punto flotante.
$MiVar = 1.3e4;

Arrays.
$MiVar[2] = 123;

Strings.
$MiVar = Cadena de texto\n;

Objetos:
IT Colima Ene-Jun 2009 $MiVar = new MiClase(); 25

2.6.3. Tipos de datos. Arrays.

$MiArray[0] = 1; $MiArray[1] = hola!!; $MiArray[] = 3; echo $MiArray[2]; // 3

IT Colima Ene-Jun 2009

26

2.6.3. Tipos de datos. Arrays (2).


Funcionan como vectores o tablas hash al mismo tiempo: $MiArray[nombre] = Homer; echo $MiArray[0]; // 1 echo $MiArray[nombre]; // Homer
referencia

Y pueden tener ms de una dimensin: $MiOtroArray[1][pepe][4] = 3 dimensiones!;


IT Colima Ene-Jun 2009 27

2.6.3. Tipos de datos. Arrays (3).


Tambin se pueden definir con el constructor array() : $OtroArrayMas = array( 1, hola, 5); $YOtroArray = array( 0 => 1, 1 => hola, 2 => 5, 3 => 8, nombre => Homer );
IT Colima Ene-Jun 2009 28

2.6.4. Tipos de datos. Strings. Comillas dobles.


Si se delimitan entre comillas dobles (), se expandir cualquier variable que haya dentro de la cadena. Adems, se pueden incluir ciertas secuencias de escape, al igual que en C:
Secuencia \n \r \t \\ \$ \" \[0-7]{1,3} \x[0-9A-Fa-f]{1,2} Significado Nueva lnea Retorno de carro Tabulacin horizontal Barra invertida Smbolo del dlar Dobles comillas Carcter en octal Carcter en hexadecimal
IT Colima Ene-Jun 2009 29

2.6.4. Tipos de datos. Strings (2). Comillas simples.

Si se delimitan entre comillas simples (), las variables no se expanden y adems las nicas secuencias de escape que se reconocen son \\ y \' (barra invertida y comillas simples.)
IT Colima Ene-Jun 2009 30

2.6.4. Tipos de datos. Strings (3). Here Doc


Utilizando la sintaxis here doc de Perl. Las variables se expanden y no hace falta escapar las comillas:
$cadena = <<<FINCAD Esto es un ejemplo de cadena como here doc. La variable \$a vale $a. Ahora vamos a finalizar la cadena: FINCAD
IT Colima Ene-Jun 2009 31

2.6.4. Tipos de datos. Strings (4).


Para concatenar cadenas se utiliza el operador . : $cad = A esta cadena ; $cad = $cad . le vamos a aadir ms texto.;

Se puede acceder a cada carcter como si fuera un array: $cad2 = Tercer carcter de \$cad : $cad[2];
IT Colima Ene-Jun 2009 32

2.7. Constantes.
Las constantes se definen con la funcin define(): define(SALUDO, Hola, mundo!); echo La constante SALUDO vale . SALUDO; Las constantes en PHP se diferencian de las variables en que: no llevan el smbolo del dlar delante. puede accederse a ellas desde cualquier parte del cdigo donde han sido definidas, sin restricciones de mbito como en las variables. no pueden ser redefinidas o borradas una vez definidas. IT Colima Ene-Jun 2009 slo pueden contener valores escalares, no vectores.33

2.8. Maysculas y minsculas.

Comportamiento mixto en variables y funciones: En las variables, las maysculas y minsculas IMPORTAN. En los nombres de funciones y palabras reservadas, las maysculas NO IMPORTAN.

IT Colima Ene-Jun 2009

34

2.9.1. Operadores aritmticos.

Operacin $a + $b $a - $b $a * $b $a / $b $a % $b

Nombre Suma Resta Multiplicacin Divisin Mdulo

Resultado Suma de $a y $b. Diferencia entre $a y $b. Producto de $a y $b. Cociente de $a y $b. Resto de la operacin $a/$b.

IT Colima Ene-Jun 2009

35

2.9.2.

Auto-incremento y auto-decremento.

OperacinNombre ++$a $a++ --$a $a--

Resultado Incrementa $a en 1, y Pre-incremento devuelve $a (incrementado). Devuelve $a, y despus lo Post-incremento incrementa en 1. Decrementa $a en 1, y Pre-decremento despus lo devuelve. Devuelve $a, y despus lo Post-decremento incrementa en 1.

IT Colima Ene-Jun 2009

36

2.9.3. Operadores de bits.


Operacin Nombre $a & $b $a | $b $a ^ $b ~ $a $a << $b $a >> $b Resultado Se ponen a 1 los bits que estn a Y 1 en $a y $b. Se ponen a 1 los bits que estn a O 1 en $a o $b. Se ponen a 1 los bits que estn a O Exclusivo 1 en $a o $b, pero no en ambos. Se invierten los bits (se cambian 1 No por 0 y viceversa.) Desplaza $b posiciones a la Desp. Izq. izquierda todos los bits de $a. Desplaza $b posiciones a la IT Colima Ene-Jun 2009 37 Desp. Drch. derecha todos los bits de $a.

2.9.4. Operadores lgicos.


Operacin Nombre $a and $b Y $a or $b O $a xor $b ! $a $a && $b $a || $b Resultado Cierto si $a Cierto si $a Cierto si $a O Exclusivo. ambos. No Cierto si $a Y Cierto si $a O Cierto si $a

y $b son ciertos. o $b es cierto. o $b es cierto, pero no es falso. y $b son ciertos. o $b es cierto.

IT Colima Ene-Jun 2009

38

2.9.5. Operadores. Asignacin, igualdad e identidad.

OperacinNombre

Resultado Asigna el valor de una variable o $a = $b Asignacin expresin del segundo trmino a la variable del primer trmino. Compara si el valor de los dos $a == $b Igualdad operandos es el mismo. Compara si el valor es el mismo y, $a === $b Identidad adems, el tipo coincide.
IT Colima Ene-Jun 2009 39

2.9.5. Operadores. Asignacin, igualdad e identidad.Ejemplo.

$var1 = 1; $var2 = 1; $var3 = 1; ($var1 == $var2) ($var1 == $var3) ($var1 === $var2) ($var1 === $var3)

// Asignacin

// // // //

Cierto, son iguales Son iguales (tras conversin) Cierto, son idnticas FALSO, el tipo no coincide

IT Colima Ene-Jun 2009

40

2.9.5. Operadores. Asignacin, igualdad e identidad. Error.

$var1 = 1; $var2 = 2; if( $var1 = $var2 ) { echo iguales; } else { echo distintas; }
IT Colima Ene-Jun 2009 41

2.9.6. Comparaciones.
Operacin Nombre Resultado Cierto si el valor de $a no es $a != $b No igual igual al de $b. Cierto si $a no es igual a $b, o $a !== $b No idntico si no tienen el mismo tipo. Cierto si $a es estrictamente $a < $b Menor que menor que $b. Cierto si $a es estrictamente $a > $b Mayor que mayor que $b. Cierto si $a es menor o igual $a <= $b Menor o igual que que $b. Cierto si $a es mayor o igual $a >= $b Mayor o igual que que $b.
IT Colima Ene-Jun 2009

42

2.9.7. Operadores de cadenas.

$a = 1; $b = 2; Echo El resultado de . $a . + . $b . es , $a + $b;


Echo El resultado de $a + $b es , $a + $b;

IT Colima Ene-Jun 2009

43

2.9.8. Atajos en la asignacin.

+=

-=

*=

/=

%=

&=

^=

.=

>>=

<<=

$var1 += 3; $var2 /= 2; $var3 >>= 1;

// $var1 = $var1 + 3; // $var2 = $var2 / 2; // $var3 = $var3 >> 1;

IT Colima Ene-Jun 2009

44

2.9.9. Precedencia.
, or xor and print = += -= *= /= .= %= &= |= ^= ~= <<= >>= ?: || && | ^ & == != === !== < <= > >= << >> +-. */% ! ~ ++ -- (int) (double) (string) (array) (object) @ [ new
45

IT Colima Ene-Jun 2009

2.10.1. Estructuras de control. if elseif else


if (expresin) { comandos } if (expresin) { comandos_cierto } else { comandos_falso IT Colima Ene-Jun 2009 }

46

2.10.1. Estructuras de control. if elseif else (2)


if (expresion1) { comandos1 } elseif (expresion2) { comandos2 } elseif (expresion3) { comandos3 } ... else { comandosElse IT Colima Ene-Jun 2009 }

47

2.10.2. while y do while

while (expresin) { comandos } do { comandos } while (expresin);


IT Colima Ene-Jun 2009 48

2.10.4. for
for (expresin1; expresin2; expresin3) { comandos } $factorial5 = 1; for ($i = 2; $i <= 5; $i++ ) { $factorial5 *= $i; }
IT Colima Ene-Jun 2009 49

2.10.4. for (2)

for ($factorial5 = 1, $i = 2; $i <= 5; $i++ ) { $factorial5 = $factorial5 * $i; } for ($factorial5=1, $i=2; $i<=5; $factorial5*=$i, $i++);

IT Colima Ene-Jun 2009

50

2.10.4. for (3). ASP.


ASP <%FOR i=1 TO 100%> <%=MiVar%> <%NEXT%> // PHP <?php for ($i = 1; $i <= 100; $i++) { echo $MiVar; } IT Colima Ene-Jun 2009 ?>

51

2.10.5. foreach
foreach (array as variable) { comandos } $a = array (1, 2, 3, 17); foreach ($a as $v) { print "Valor actual de \$a: $v.\n"; } // // // // Valor Valor Valor Valor actual actual actual actual de $a: 1 de $a: 2 de $a: 3 IT Colima Ene-Jun 2009 de $a: 17

52

2.10.5. foreach (2)


foreach (array as indice => variable) { comandos }

IT Colima Ene-Jun 2009

53

2.10.6. switch
switch (variable) { case valor1: comandos1 case valor2: comandos2 ... case valorN: comandosN default: comandosDefault }
IT Colima Ene-Jun 2009

54

2.10.6. switch (2)


switch ($i) { case 1: echo Cdigo del 1; case 2: echo Cdigo del 2; case 3: echo Cdigo del 3; break; case 4: echo Cdigo del 4; }
IT Colima Ene-Jun 2009 55

2.11. Cierto o falso. Valores numricos.

$x = 1; // $x if( $x ) // se evala a cierto $x = 0; // $x definida como el entero 0 if( $x ) // se evala a falso

IT Colima Ene-Jun 2009

56

2.11. Cierto o falso. Strings.

$x = "hello"; // asignamos una cadena a $x if( $x ) // se evala a cierto $x = ""; if( $x ) // cadena vaca // evala a falso // // // // Excepcin: cero en una cadena evala a falso (se convierte a entero)
57

$x = "0"; if( $x )

IT Colima Ene-Jun 2009

2.11. Cierto o falso. Arrays.

$x = array(); if( $x )

// $x es un array vaco // se evala como falso

$x = array( "a", "b", "c" ); if( $x ) // se evala a cierto

IT Colima Ene-Jun 2009

58

2.11. Cierto o falso. Objetos.

Class Yod {} // clase vaca $x = new Yod(); if( $x ) // se evala a falso Class Yod { // clase no vaca var $x = 1; } $x = new Yod(); if( $x ) // se evala a cierto
IT Colima Ene-Jun 2009 59

2.11. Cierto o falso. Constantes.

TRUE es el valor entero decimal 1. FALSE es la cadena vaca.

IT Colima Ene-Jun 2009

60

2.12. Funciones.

function nombre ($arg_1, $arg_2, ..., $arg_n) { comandos return $salida; }

IT Colima Ene-Jun 2009

61

2.12. Funciones. (2) Ejemplo.


function factorial ($valor) { if ($valor < 0) { return 1; // Error } if ($valor == 0 ) { return 1; } if ($valor == 1 || $valor == 2) { return $valor; } $ret = 1; for ($i = 2; $i <= $valor; $i++) { $ret = $ret * $i; } return $ret; } IT Colima Ene-Jun 2009 $factorial5 = factorial(5); Echo $factorial5;
62

2.12. Funciones. (3) Valores por defecto.

function enlace($url) { echo <a href= $url>Pulsa aqu</a>; } Echo enlace(http://www.itcolima.mx); Echo <br>;
Echo enlace(http://localhost);
IT Colima Ene-Jun 2009 63

2.12.1. Funciones. Argumentos por referencia.

function MiFuncion(&$var) { $var++; } $a = 5; MiFuncion($a); // Aqu $a == 6

IT Colima Ene-Jun 2009

64

2.12.2. Funciones. Devolucin por referencia.

function &buscar_cliente($nombre) { // ... buscamos ... return $registro; } $cliente = &buscar_cliente(Juan); echo $cliente->dni;
IT Colima Ene-Jun 2009 65

2.13. include y require

require(cabecera.inc); If ($incluir == TRUE) { $ficheros = array(uno, dos, tres); foreach ($ficheros as $fichero) { include($fichero); } }
IT Colima Ene-Jun 2009 66

3. Programando en PHP

IT Colima Ene-Jun 2009

67

3.1.1. Forms.
formulario.html
<form action=datos.php" method="POST"> Su nombre: <input type=text name=nombre><br> Su edad: <input type=text name=edad><br> <input type=submit> </form>

datos.php
<?php echo Tu nombre es:.$_POST[nombre].<br>; echo Tu edad es:.$_POST[ edad].<br>; echo Tu edad es:.$edad.<br>; // con register_globals=on ?>
IT Colima Ene-Jun 2009 68

3.1.2. Forms. (todo en la misma pagina)


<?php if ( isset($_POST["Enviar"]) ) { // validando si existe el boton Enviar echo "el nombre es".$_POST["nombre"]."<br>"; echo "la edad es".$_POST["edad"]."<br>"; } else { ?> <p>Captura de datos personales:</p> <form id="form1" name="form1" method="post" action="" > <p>Nombre: <input type="text" name="nombre" id="nombre" /> <br /> Edad: <input type="text" name="edad" id="edad" /> </p> <p> <input type="submit" name="Enviar" id="Enviar" value="Enviar" /> <input type="reset" name="Limpiar" id="Limpiar" value="Limpiar" /> </p> </form> <? } ?> </body> </html>
IT Colima Ene-Jun 2009 69

3.1.2. Forms. (todo en la misma pagina)


Ejercicios con formularios

IT Colima Ene-Jun 2009

70

3.2. Cookies.
int setcookie (string nombre [, string valor [, int fin [, string camino [, string dominio [, int seguro]]]]]) setcookie(PruebaCookie, expirar dentro de una hora, time() + 3600); setcookie(PruebaCookie, , time());
IT Colima Ene-Jun 2009 71

3.3. Sesiones.
bool session_start(void); bool session_register (mixed name [, mixed ...]) bool session_destroy(void); // Ejemplo, un contador session_start(); print($contador); $contador++; session_register("contador"); <A HREF="siguiente.php?<?=SID?>">Continuar</A>
IT Colima Ene-Jun 2009 72

3.4. Tratamiento de errores.

$nombre = '/etc/shadow'; $fichero = @fopen ($nombre, 'r'); if( !$fichero ) { die("No se pudo abrir el fichero ($nombre)"); }
IT Colima Ene-Jun 2009 73

3.5.1. Cadenas. Comparacin.


El operador (==) nos puede servir para evaluar si dos cadenas de caracteres son iguales dentro de una estructura de control. Adems, tenemos la funcin strcmp( ) , que compara bit a bit dos cadenas de caracteres. Atendiendo al valor de salida de la funcin, podemos obtener los siguientes resultados: Si el valor que se obtiene es 0, las dos cadenas son exactamente igual. Si obtenemos un valor negativo, el primer string es ms pequeo que el segundo. Si obtenemos un valor positivo, el primer string es ms grande que el segundo.

IT Colima Ene-Jun 2009

74

3.5.1. Cadenas. Comparacin.


int strcmp (string str1, string str2) int strcasecmp (string str1, string str2) (esta no es sensible a maysculas) // Ejemplo: if (strcmp($a, $b) == 0) { echo iguales; }

IT Colima Ene-Jun 2009

75

3.5.2. Cadenas. Subcadenas.


La funcin substr() permite seleccionar un conjunto de caracteres de una cadena, quedando intacto el string original.

string substr (string cadena, int inicio [, int tamao]) $str $str $str $str = = = = substr('abcdef', substr('abcdef', substr('abcdef', substr('abcdef', 2, 3); -2); -2, 1); 1, -2); // // // // cde ef e bcd

IT Colima Ene-Jun 2009

76

3.5.2. Cadenas. Subcadenas. (2)


La funcin strpos() encuentra en un string la posicin de un carcter determinado.

int strpos (string cadena, string referencia [, int inicio]) int strrpos (string cadena, char referencia) $i // $i // $s // $s // = strpos('cadena de prueba', 'de'); $i = 2 = strpos('cadena de prueba', 'de', 5); $i = 7 = strrpos('cadena de prueba', 'de'); $s = 7 = strstr('cadena de prueba', 'de'); $s = dena de prueba
IT Colima Ene-Jun 2009 77

3.5.2. Cadenas. Subcadenas. (2)


<?php $cadena = "Esta cadena tiene muchas letras"; echo "La primera ocurrencia de 'tiene' es " . strpos($cadena,"tiene") . "<br>"; ?> <?php $cadena = "Esta cadena tiene muchas letras"; echo "La primera ocurrencia de 'a' es " . strpos($cadena, "a" ) ."<br>"; echo "La primera ocurrencia desde atrs de 'a' es " . strrpos($cadena, "a") . "<br>"; ?>

IT Colima Ene-Jun 2009

78

3.5.2. Cadenas. Subcadenas. (2)


string strstr (string cadena, string referencia) La funcin strstr() recibe como parmetros una cadena de caracteres donde buscar y otra con un conjunto de caracteres que queremos encontrar. Si se encuentra el patrn de bsqueda, el resultado ser una cadena de caracteres que comenzar justo en el patrn, hasta el final del string primero. Si no se encuentra el patrn el resultado ser false. < ?php $cadena = "Esta cadena tiene muchas letras"; echo "La primera ocurrencia de 'cadena' es: " . strstr ($cadena,"cadena") . "<br>"; ?>
IT Colima Ene-Jun 2009 79

3.5.2. Cadenas. Limpieza de cadenas


Sirven para limpiar espacios en blanco al principio de la cadena, al final o en cualquier parte desde el principio al final y son respectivamente ltrim( ) , chop() y trim()
subcads4.php

<?php $salto_linea = "\n"; $cadena = " cadena con varios espacios en blanco " ; echo $salto_linea . $cadena . " tamao: " . strlen($cadena); echo "<br>"; echo $salto_linea . ltrim($cadena) . " tamao: ".strlen(ltrim($cadena)); echo "<br>"; echo $salto_linea . chop($cadena) . " tamao: ".strlen(chop($cadena)); echo "<br>"; echo $salto_linea . trim($cadena) . " tamao: ".strlen(trim($cadena)); ?>
IT Colima Ene-Jun 2009 80

3.5.2. Cadenas. Sustitucion de cadenas


La funcin str_replace() toma como parmetros un conjunto de caracteres a buscar, un grupo que debe sustituirse por el anterior y una cadena de caracteres sobre la que actuar. <?php //subcads5.php $cadena = "Esta cadena tiene muchas letras"; $cadena = str_replace("Esta","Este",$cadena); echo str_replace("cadena","conjunto",$cadena); ?> Si en la cadena existiera ms de una instancia del conjunto buscado, todas las ocurrencias quedaran cambiadas. <?php //subcads6.php $cadena = "Esta cadena tiene muchas letras y cadenas"; $cadena = str_replace("Esta","Este",$cadena); echo str_replace("cadena","conjunto",$cadena); ?>
IT Colima Ene-Jun 2009 81

3.5.2. Cadenas. Funciones de mayscula


y minscula
Las funciones strtolower() y strtoupper() devuelven la cadena que se pasa como argumento, completamente en minscula o mayscula respectivamente. <?php//subcads8.php $cadena = "Hay palabras en MAYSCULAS y en minsculas<br>" ; echo strtolower($cadena) ; echo strtoupper($cadena); ?>

IT Colima Ene-Jun 2009

82

3.5.2. Cadenas. Funciones de mayscula


y minscula
Si lo que realmente nos interesa es que la primera letra de un texto aparezca como letra Capital o, que letras iniciales de cada palabra en una frase aparezcan en mayscula, tenemos las funciones ucfirst( ) y ucwords( ) . <?php $cadena = "haba una vez...<br>"; echo ucfirst($cadena); $cadena2 = "linux user group"; echo "LUG significa ".ucwords($cadena2) ; ?>

IT Colima Ene-Jun 2009

83

3.5.2. Cadenas. Expresiones regulares


Las funciones vistas anteriormente basan su potencia en la bsqueda o sustitucin de los caracteres de una cadena, pero son poco tiles cuando tratamos de comprobar si un conjunto de caracteres cumple un formato determinado. Si solicitamos mediante un formulario un correo electrnico, necesitamos saber, a priori, si ese correo por lo menos est bien construido

alumno@hotmail.org alumno@gmail.com
IT Colima Ene-Jun 2009 84

3.5.2. Cadenas. Expresiones regulares


La idea es poder descartar de alguna forma los correos escritos:
alumno @hotmail.org ALUMNO@gmail.com alumno@@hotmail.org

IT Colima Ene-Jun 2009

85

3.5.2. Cadenas. Comprobar expresiones regulares


La funcin ereg() es capaz de comprobar si una cadena se corresponde con el patrn que se pasa como parmetro. Toma dos argumentos obligatorios, una expresin regular y una cadena de caracteres donde buscar el patrn. Seguidamente puede ver un ejemplo completo de utilizacin de expresiones regulares y la funcin:

IT Colima Ene-Jun 2009

86

3.5.2. Cadenas. Expresiones regulares


Las expresiones regulares son patrones de bsqueda dentro de cadenas. Estos patrones se construyen mediante caracteres especiales que cumplen unas reglas determinadas

IT Colima Ene-Jun 2009

87

Tipo de Operador

Ejemplo aAy6% @

Descripcin Letras, digitos y cualquier carcter especial Precede un caracter especial con el signo \ para cancelar su significado Nueva linea, tabulacin y retorno de carro Cdigos de control Cdigos hexadecimales Empieza con Termina con cualquier carcter includo en [ ] cualquier carcter excepto aAeEiou cualquier carcter hexadecimal (0 a 9 o a a f) cualquier carcter cualquier espacio (espacio \n \r o \t) cualquier letra cualquier digito cualquier carcter que no sea un espacio 1 o mas (algunos) 0 o mas (quizas algunos) 0 0 1 (quizas a) 4 exactos 4 o ms entre 4 y 8

Caracteres literales Localizacin de un carcter concreto

\$ \^ \+ \\ \? \n \t \r \cJ \cG \xa3 ^

Delimitadores $ [aAeEiou] [^aAeEiou] [a-fA-F0-9] . Grupo de carcteres [[:space:]] [[:alpha:]] [[:digit:]] [^[:space:]] + * ? Agrupaciones aplicadas a elementos {4} {4,} {4,8}

Alternar Agrupando

| () (?: )

una u otra

IT Colima Ene-Jun 2009

agrupacin almacenandola a una variable agrupacion sin almacenar en variable

88

3.5.2. Cadenas. Expresiones regulares


[ a - z ] + @ [ a - z ] + \ . o rg

La primera parte, [a-z] +, nos dice que aceptar una letra, o conjunto de letras, sin espacios y en minsculas, que pueden corresponderse con el nombre de usuario de la cuenta de correo. Despus aceptar un smbolo @, seguido de otro conjunto de caracteres, correspondientes al servidor de correo. La ltima parte de la expresin la componen los smbolos \ ., que indican que tiene que aparecer un punto que separe la descripcin del servidor del dominio y la cadena org , que obliga a que todos los correos sean de dominio no gubernamental.

IT Colima Ene-Jun 2009

89

3.5.2. Cadenas. Expresiones regulares


^[ a - z ]+@[ a - 2 ] + \ . o r g$ Obliga a que el comienzo de la cadena y el final sean parte de la expresin.

IT Colima Ene-Jun 2009

90

3.5.2. Cadenas. Expresiones regulares


Tambin podemos encontrarnos con que existen correos introducidos correctamente, pero el dominio es otro distinto a org. Esta vez la solucin es introducir el operador O lgico |, que permite elegir entre varias opciones: ^ [ a - z ] +@ [ a - z ] + \ . ( o r g | c o m | n e t )$

IT Colima Ene-Jun 2009

91

3.5.2. Cadenas. Expresiones regulares


Un problema menor, aunque habitual en el mbito de los correos electrnicos, es la utilizacin de signos de puntuacin para separar nombres y apellidos y servidores de servidores virtuales. Por ejemplo, el correo siguiente es correcto, pero no sera evaluado por la expresin anterior:
alumno.sistemas@labredes.itcolima.edu.mx

IT Colima Ene-Jun 2009

92

3.5.2. Cadenas. Expresiones regulares


alumno.sistemas@labredes.itcolima.edu.mx
Solucin

^[a-z\.]+@[a-z\.]+\.(org|com|net|edu)$

IT Colima Ene-Jun 2009

93

3.5.2. Cadenas. Comprobar expresiones regulares


<?php $correo = "alumno.sistemas@labredes.itcolima.org"; $correol = "ALUMNO@labredes@itcolima.edu"; $correo2 = "@lumno.sistemas@labrede.itcolima.edu"; if ( ereg("^[a-z\.]+@[a-z\.]+\.(org|com|net|edu)$",$correo) ){ echo "El correo $correo se acepta.<br>"; } else { echo "El correo $correo no cumple el patrn.<br>"; } if (ereg("^[a-z\.]+@[a-z\.]+\.(org|com|net|edu)$",$correol) ) { echo "El correo $correol se acepta.<br>"; }else { echo "El correo $correol no cumple el patrn.<br>"; } if (ereg("^[a-z\.]+@[a-z\.]+\.(org|com|net|edu)$",$correo2)) { echo "El correo $correo2 se acepta.<br>"; }else { echo "El correo $correo2 no cumple el patrn.<br>"; } ?>

IT Colima Ene-Jun 2009

94

3.5.3. Cadenas. Imprimir y formatear.


int printf (string formato [, mixed args...]) string sprintf (string formato [, mixed args...])
1. 2. 3. 4. 5. Relleno Alineacin Nmero de caracteres Precisin Tipo
% b c d f o s x X

Secuencias de formato

El carcter de tanto por ciento. Entero en binario. Entero como carcter ASCII. Entero en decimal. Double en punto flotante. Entero en octal. Cadena. Entero en hexadecimal (minsculas). IT Colima Ene-Jun 2009 Entero en hexadecimal (maysculas).

95

3.5.3. Cadenas. Imprimir y formatear. (2)


<?php $dia=17; $mes=3; $anio=2009; printf("%02d/%02d/%04d", $dia, $mes, $anio); echo "<br>"; $pago1 = 68.75; $pago2 = 52.35; $pago = $pago1 + $pago2; // echo $pago mostrara "123.1" // Mostrar al menos un dgito entero y exactamente // dos decimales, rellenando con ceros printf ("%01.2f", $pago); ?>

IT Colima Ene-Jun 2009

96

3.5.4. Escapar caracteres. SQL.

$busca = DAlton; // Habr que escapar el apstrofe $sql = SELECT * FROM usuarios WHERE apellido = \ . addslashes($busca) . \;

IT Colima Ene-Jun 2009

97

3.5.4. Escapar caracteres. Shell.

string system (string comando [, int valor_salida]) echo system(finger $usuario); Qu pasa si $usuario=pepe ; apachectl stop ? string escapeshellcmd (string comando)

IT Colima Ene-Jun 2009

98

3.5.4. Escapar caracteres. HTML.


$valor = a>b; echo <input type=hidden name=var value= . htmlspecialchars($valor) . >; // <input type=hidden name=var value=a&gt;b>

string nl2br (string cadena)

IT Colima Ene-Jun 2009

99

3.5.5. Extraer campos.


array explode (string delimitador, string cadena [, int lmite]) $cadena = campo1:campo2:campo3; $campos = explode(:, $cadena); string implode (string delimitador, array campos) $cadena = implode(:, $campos);

IT Colima Ene-Jun 2009

100

3.5.5. Extraer campos. Expresiones regulares.

array split (string delimitador, string cadena [, int lmite]) $fecha = "12/4 2000"; $campos = split ('[ /.-]', $fecha);

IT Colima Ene-Jun 2009

101

3.5.6. Recorrer un array.


reset(), end(), next(), each(), current(), key() $arr = array(1,'cosa',1.57,'gato'=>'raton','perro'=>'gato'); current($arr); next($arr); current($arr); prev($arr); end($arr); current($arr); key($arr); reset($arr); each($arr); each($arr); each($arr); // // // // // // // // // // // 1 cosa cosa 1 gato gato perro 1 array(0,1) array(1,'foo') IT Colima Ene-Jun 2009 array(2,1.57)

102

3.5.7. Ordenar un array.

sort(): rsort(): ksort(): rksort():

Ordena el array por contenido en orden ascendente. Ordena por contenido en orden descendente. Ordena por el ndice en orden ascendente. Ordena por el ndice en orden descendente.

IT Colima Ene-Jun 2009

103

3.5.8. Otras funciones.


Eliminar espacios en blanco: string trim (string cadena) string ltrim (string cadena) string rtrim (string cadena) Maysculas y minsculas: string strtoupper (string cadena) string strtolower (string cadena) string ucfirst (string cadena)
IT Colima Ene-Jun 2009 104

3.6.1. Ficheros. Abrir y cerrar.


int fopen (string nombre, string modo [, int include_path])
Modos: r r+ w w+ a a+ Slo lectura. Puntero al inicio. Lectura/escritura. Puntero al inicio. Slo escritura. Se trunca el fichero. Lectura/escritura. Se trunca el fichero. Slo escritura. Puntero al final. Lectura/escritura. Puntero al final.

int fclose (int identificador)


IT Colima Ene-Jun 2009 105

3.6.2. Ficheros. Leer y escribir.


string fgets (int identificador, int tamao) mixed fscanf (int identificador, string formato [, string var1...]) int feof (int identificador) array file (string fichero [, int include_path]) int fwrite (int identificador, string cadena [, int tamao])
IT Colima Ene-Jun 2009

106

3.6.3. Ficheros. Copiar / renombrar / borrar.

int copy (string origen, string destino) int rename (string origen, string destino) int unlink (string fichero)

IT Colima Ene-Jun 2009

107

3.6.4. Directorios.

int chdir (string directorio) int mkdir (string nombre, int modo) int rmdir (string nombre)

int opendir (string nombre) string readdir (int identificador) void closedir (int identificador)

IT Colima Ene-Jun 2009

108

3.6.4. Directorio. Listado de contenidos.

$direcotrio = opendir('.'); while (($fichero = readdir($directorio)) !== FALSE) { echo "$fichero\n"; } closedir($directorio);

IT Colima Ene-Jun 2009

109

3.6.5. Ficheros. Envo.


<FORM ENCTYPE="multipart/form-data" ACTION="recibir.php" METHOD=POST> <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000"> Fichero: <INPUT NAME="fichero" TYPE="file"> <INPUT TYPE="submit" VALUE="Enviar"> </FORM>

// Contenido de recibir.php echo Recibido el fichero: ".$fichero_name."<br>; echo Tamao del fichero: . $fichero_size . <br>; echo Tipo mime: . $fichero_type . <br>; rename($fichero, $fichero_name);
IT Colima Ene-Jun 2009 110

3.7.1. POO. Definicin de una clase.

class NombreClase { var $variables; function metodos ($parametros) { codigo } }


IT Colima Ene-Jun 2009 111

2.7.1. POO. Definicin de una clase. Ejemplo.


class Coche { var $velocidad; // Velocidad actual // Constructor por defecto. El coche est parado. function coche() { $this->velocidad = 0; } // Constructor que indica la velocidad inicial. function coche($vel) { $this->velocidad = $vel; } // Mtodo acelerar. El coche va ms rpido. function acelerar() { $this->velocidad++; } // Mtodo frenar. El coche va ms lento hasta frenar. function frenar() { if ($this->velocidad > 0) { $this->velocidad--; } } IT Colima Ene-Jun 2009

112

2.7.1. POO. Modificadores de acceso


Restringiendo el acceso a las propiedades (encapsulacion) Modificadores de acceso: Publico (public) //por defecto Privado (private) Protegido (protected) Cuando se declara una propiedad como privada solo la misma clase puede acceder a la propiedad Cuando se declara como protected solo la misma clase y las clases derivadas puede acceder a la propiedad (herencia).
IT Colima Ene-Jun 2009 113

2.7.1. POO. Modificadores de acceso


<?php class persona{ var $nombre; public $departemento, $edad; private $RFC; protected $clave; function __construct(){ $this->nombre="xxxx"; $this->edad=0; } function set_nombre($nuevo_nombre){ $this->nombre = $nuevo_nombre; } function set_edad($nueva_edad){ $this->edad = $nueva_edad; } function get_nombre(){ return $this->nombre; } function get_edad(){ return $this->edad; } } IT Colima Ene-Jun 2009

114

2.7.2. POO. Herencia.

class ClaseDerivada extends ClaseBase { // // // // }


IT Colima Ene-Jun 2009 115

definicin de mtodos y variables exclusivos de ClaseDerivada, y redefinicin (especializacin) de mtodos de ClaseBase

2.7.2. POO. Herencia. Ejemplo.


class persona{ var $nombre; public $departemento, $edad; private $RFC; protected $clave; function __construct(){ $this->nombre="xxxx"; $this->edad=0; } function set_nombre($nuevo_nombre){ $this->nombre = $nuevo_nombre; } function set_edad($nueva_edad){ $this->edad = $nueva_edad; } function get_nombre(){ return $this->nombre; } function get_edad(){ return $this->edad; } }

class admvo extends persona{ }

IT Colima Ene-Jun 2009

116

2.7.2. POO. Herencia. Ejemplo.


class CocheFantastico extends coche() { // Frenado instantneo function frena() { $this->velocidad = 0; } // El coche habla! function habla() { echo Hola, Michael.; } // Salta! function salta() { echo Boing!!; } // Turbo propulsin function turbo() { $this->velocidad = 200; IT Colima Ene-Jun 2009 } }

117

2.7.3. POO. Creacin y uso de objetos.


// Creacin (instanciacin) $MiCoche = new Coche; $MiCocheSeMueve = new Coche(10); // Uso $MiCoche->acelerar(); $MiCoche->acelerar(); $MiCoche->acelerar(); echo $MiCoche->velocidad; $MiCoche->frenar();
IT Colima Ene-Jun 2009 118

2.7.3. POO. Creacin y uso de objetos.


// Creacin (instanciacin) $MiCoche = new Coche; $MiCocheSeMueve = new Coche(10); // Uso $MiCoche->acelerar(); $MiCoche->acelerar(); $MiCoche->acelerar(); echo $MiCoche->velocidad; $MiCoche->frenar();
IT Colima Ene-Jun 2009 119

2.7.3. POO. Interfaces


Uso: cuando se hace imprescindible definir unas pautas generales de trabajo para que el resultado final sea el esperado. Si el desarrollo consiste en programar varios objetos, el analista de la aplicacin puede definir la estructura bsica en papel o crear una pequea plantilla con mtodos que el objeto final debera tener obligatoriamente. Esta plantilla es un interface y permite definir una clase con funciones definidas, pero sin desarrollar, que obliga a todas las clases que lo implementen a declarar estos mtodos como mnimo.

IT Colima Ene-Jun 2009

120

2.7.3. POO. Interfaces


interface persona{ function set_nombre(){ } function get_nombre(){ } }
La interface anterior define la estructura bsica que queremos para el objeto, declarando las funciones set_nombre y get_nombre. Para que una clase haga uso de la interface se declara de la siguiente forma: class trabajador implements persona
IT Colima Ene-Jun 2009 121

2.7.3. POO. Clases abstractas


Un interface no permite crear el cuerpo de ninguna funcin, dejando esta tarea a las clases que la implementen. Las clases abstractas permiten definir funciones que deben implementarse obligatoriamente en los objetos que hereden y, adems, permiten definir funciones completas que pueden heredarse. Las clases abstractas deben llevar la palabra reservada abstract en la declaracin de la clase y en todos los mtodos que slo definan su nombre. abstract class persona{ protected $nombre; function set_nombre($nombre){ $this->nombre=$nombre; } abstract function get_nombre(){ } IT Colima Ene-Jun 2009 }

122

2.7.3. POO. Clases abstractas


abstract class persona{ protected $nombre; function set_nombre($nombre){ $this->nombre=$nombre; } abstract function get_nombre(){ } }

En lugar de un interface , se ha optado por utilizar una clase abstracta, porque se tiene claro que el mtodo set_nombre() tiene que funcionar as. Tambin se define el mtodo abstracto get_nombre() , que obligatoriamente debe ser declarado en la clase que herede de sta. En realidad, un interface es una clase que tiene todos sus mtodos abstractos
IT Colima Ene-Jun 2009 123

POO. Clases con metodos estaticos


En PHP 5 puede declarar funciones dentro de una clase que no utilicen propiedades o mtodos de la misma. Estos mtodos pueden calcular valores numricos, hacer una conexin a una base de datos o comprobar que un correo electrnico est bien definido. Aunque no existe ninguna palabra reservada para definirlo, son conocidos como mtodos estticos y pueden ser utilizados sin necesidad de instanciar un objeto.
IT Colima Ene-Jun 2009 124

POO. Clases con metodos estaticos


<?php class Nombre{ protected $nombre; public function getNombre(){ return $this->nombre; } public function setNombre($nombre){ $this->nombre = $nombre; } public function NombreDefecto(){ return Juan Perez<br>"; } $juan = new Nombre; echo $juan->NombreDefecto(); //Tambin se puede acceder al nombre por defecto echo Nombre::NombreDefecto(); ?>

IT Colima Ene-Jun 2009

125

POO. Llamada a funciones de la clase padre


El operador ( :: ) se puede utilizar tambin dentro de una clase para hacer llamadas a funciones de la clase padre que estn sobrecargadas. Si define un constructor para la clase padre y otro para la clase hijo, cuando cree el objeto, el constructor que se ejecuta es el de nivel inferior, el constructor hijo. Para llamar al constructor padre debe utilizarse la nomenclatura Nombre_clase_padre : : construct() .
IT Colima Ene-Jun 2009 126

POO. Llamada a funciones de la clase padre


<?php class Nombre{ protected $nombre; function __construct ( $nombre){ $this->nombre = $nombre; } public function getNombre() { return $this->nombre; } public function setNombre($nombre) { $this->nombre = $nombre; } public function NombreDefecto() { return Juan Perez<br>"; } } class Apellido extends Nombre{ protected $apellidos; function __construct($nombre,$apellidos) { $this->apellidos = $apellidos; Nombre::construct(Snombre) ; } public function getApellidos () { return $this->apellidos; } } $juan = new Apellido(Juan",Perez"); echo $juan->getNombre() . "<br>"; echo $juan->getApellidos(); ?>

IT Colima Ene-Jun 2009

127

3.8.1. BD. Conexin y desconexin.


int mysql_connect ([string servidor [:puerto] [:/camino/al/socket] [, string usuario [, string contrasea]]]) int mysql_close ([int identificador]) int mysql_pconnect ([string servidor [:puerto] [:/camino/al/socket] [, string usuario [, string contrasea]]])
Ene-Junidentificador]) 2009 int mysql_pcloseIT Colima ([int 128

3.8.1. BD. Conexin y desconexin. Ejemplo.

$link = mysql_connect ("www.mmlabx.ua.es", "nobody", ""); if (!$link) { die ("No se pudo conectar"); } print ("Conexin realizada"); mysql_close ($link);
IT Colima Ene-Jun 2009 129

3.8.2. BD. Elegir una BD.

int mysql_select_db (string nombre_bd [, int identificador])

if (!mysql_select_db("prueba", $link)) { die (No existe la BD); }


IT Colima Ene-Jun 2009 130

3.8.3. BD. Querys.


int mysql_query (string query [, int identificador]) int mysql_db_query (string nombre_bd, string query [, int identificador]) int mysql_free_result (int result) $query = "SELECT codigo, nombre, descripcion, creditos, tipo FROM asignatura"; $asignaturas = mysql_query($query, $link); if (!$asignaturas) { die (Error en el query); IT Colima Ene-Jun 2009 }

131

3.8.4. BD. Extraer informacin.


int mysql_affected_rows ([int identificador]) int mysql_num_rows (int resultado) array mysql_fetch_row (int resultado) array mysql_fetch_array(int resultado [, int tipo_resultado]) object mysql_fetch_object (int result) array mysql_fetch_lengths (int resultado) int mysql_data_seek (int resultado, IT Colima Ene-Jun 2009 int numero_fila)
132

2.8.5. BD. Extraer informacin. Ejemplos.

while ($fila = mysql_fetch_array($asignaturas)) { echo $fila[codigo] . . $fila[nombre] . \n; } while ($fila = mysql_fetch_object($asignaturas)) { echo $fila->codigo . . $fila->nombre . \n; }
IT Colima Ene-Jun 2009 133

3.9. Acceso a BD unificado. Clase ConexionGenerica.


class ConexionGenerica { var $link; function connect($servidor, $usuario, $clave) { echo "<h1>El m&eacute;todo <i>connect</i> ", "no est&aacute; implementado en la ", "clase <i>".get_class($this)."</i></h1>"; return FALSE; } function function function function function } close() {} select_db($base_datos) {} query($query) {} fetch_array($resultado) {} free_result($resultado) {}
IT Colima Ene-Jun 2009 134

3.9. Acceso a BD unificado. Clase ConexionMySQL.


require ("ConexionGenerica.inc"); class ConexionMySQL extends ConexionGenerica { function connect($servidor="localhost", $usuario="nobody", $clave="") { return $this->link = mysql_connect($servidor, $usuario, $clave); } function function function function function } close() {} select_db($base_datos) {} query($query) {} fetch_array($resultado) {} free_result($resultado) {}
IT Colima Ene-Jun 2009 135

3.9. Acceso a BD unificado. Uso.


// Fichero CreaConexion.inc require ("ConexionMySQL.inc"); $conexion = new ConexionMySQL(); require ("CreaConexion.inc"); $conexion->connect("localhost", "nobody"); $conexion->select_db("prueba", $link); $asignaturas = $conexion->query("SELECT codigo, nombre, descripcion, creditos, tipo FROM asignatura");
IT Colima Ene-Jun 2009 136

S-ar putea să vă placă și