Beruflich Dokumente
Kultur Dokumente
<script language="php">
echo 'Algunos editores (como el FrontPage) Sólo
entienden este método';
</script>
<html>
<body>
<?php if ( Hour(time)>20 || Hour(time)<4) { ?>
Buenas noches.
<?php } else { ?>
Buenos días.
<?php }?>
</body>
</html>
print (
date( "M d, Y H:i:s",
time()
)
)
;
/* Comentarios estilo C.
* Pueden extenderse durante varias líneas.
*/
$var_1 = 123;
$var_2 = ’hola’;
$var_3 = $var_1 * 2;
$mivar = 123;
echo $mivar; // Se convierte a string
Operador cast:
$mivar = (string)123;
$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 función, son LOCALES a esa
función.
Dentro de una clase, sólo pueden ser
accedidas a través del operador “->”
sobre el nombre del objeto.
$alias = &$variable
$a = 1;
$b = &$a;
unset ($a); // Pero $b sigue valiendo 1
IT Colima Ene-Jun 2009 24
2.6. Tipos de datos.
•Punto flotante.
$MiVar = 1.3e4;
•Arrays.
$MiVar[2] = 123;
•Strings.
$MiVar = “Cadena de texto\n”;
•Objetos:
$MiVar = newIT Colima
MiClase();
Ene-Jun 2009 25
2.6.3. Tipos de datos. Arrays.
$MiArray[0] = 1;
$MiArray[1] = “hola!!”;
$MiArray[] = 3;
echo $MiArray[2]; // 3
$MiArray[“nombre”] = “Homer”;
echo $MiArray[0]; // 1
echo $MiArray[“nombre”]; // “Homer”
referencia
$MiOtroArray[1][“pepe”][4] = “3 dimensiones!”;
$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.
$cadena = <<<FINCAD
Esto es un ejemplo de cadena como “here doc”.
La variable \$a vale $a.
Ahora vamos a finalizar la cadena:
FINCAD
OperaciónNombre Resultado
Incrementa $a en 1, y
++$a Pre-incremento
devuelve $a (incrementado).
Devuelve $a, y después lo
$a++ Post-incremento
incrementa en 1.
Decrementa $a en 1, y
--$a Pre-decremento
después lo devuelve.
Devuelve $a, y después lo
$a-- Post-decremento
incrementa en 1.
OperaciónNombre Resultado
Asigna el valor de una variable o
$a = $b Asignación expresión del segundo término a la
variable del primer término.
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
además, el tipo coincide.
$var1 = 1; // Asignación
$var2 = 1;
$var3 = “1”;
($var1 == $var2) // Cierto, son iguales
($var1 == $var3) // Son iguales (tras conversión)
($var1 === $var2) // Cierto, son idénticas
($var1 === $var3) // FALSO, el tipo no coincide
$var1 = 1;
$var2 = 2;
if( $var1 = $var2 )
{
echo ‘iguales’;
}
else
{
echo ‘distintas’;
}
$a = 1;
$b = 2;
, ^
or &
xor == != === !==
and < <= > >=
print << >>
= += -= *= /= .= %= &= +-.
|= ^= ~= <<= >>= */%
?: ! ~ ++ -- (int) (double)
|| (string) (array) (object) @
&& [
| new
IT Colima Ene-Jun 2009 45
2.10.1. Estructuras de control.
if … elseif … else
if (expresión)
{
comandos
}
if (expresión)
{
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 (expresión)
{
comandos
}
do
{
comandos
}
while (expresión);
IT Colima Ene-Jun 2009 48
2.10.4. for
$factorial5 = 1;
for ($i = 2; $i <= 5; $i++ )
{
$factorial5 *= $i;
}
’ 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
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 “Código del 1”;
case 2:
echo “Código del 2”;
case 3:
echo “Código del 3”;
break;
case 4:
echo “Código del 4”;
} IT Colima Ene-Jun 2009 55
2.11. Cierto o falso.
Valores numéricos.
$x = 1; // $x
if( $x ) // se evalúa a cierto
// Excepción:
$x = "0"; // cero en una cadena
if( $x ) // evalúa a falso
// (se convierte a entero)
IT Colima Ene-Jun 2009 57
2.11. Cierto o falso.
Arrays.
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 62
$factorial5 = factorial(5);
Echo $factorial5;
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”);
function MiFuncion(&$var)
{
$var++;
}
$a = 5;
MiFuncion($a);
// Aquí $a == 6
function &buscar_cliente($nombre)
{
// ... buscamos ...
return $registro;
}
$cliente = &buscar_cliente(“Juan”);
echo $cliente->dni;
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
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
?>
setcookie(“PruebaCookie”,
“expiraré dentro de una hora”,
time() + 3600);
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';
if( !$fichero )
{
die("No se pudo abrir el fichero ($nombre)");
}
// Ejemplo:
if (strcmp($a, $b) == 0)
{
echo ‘iguales’;
}
<?php
$cadena = "Esta cadena tiene muchas letras";
echo "La primera ocurrencia de 'a' es " . strpos($cadena, "a" ) ."<br>";
echo "La primera ocurrencia desde atrás de 'a' es " .
strrpos($cadena, "a") . "<br>";
?>
<?php//subcads8.php
$cadena = "Hay palabras en MAYÚSCULAS y en minúsculas<br>" ;
echo strtolower($cadena) ;
echo strtoupper($cadena);
?>
<?php
$cadena = "había una vez...<br>";
echo ucfirst($cadena);
$cadena2 = "linux user group";
echo "LUG significa ".ucwords($cadena2) ;
?>
aAy6%
Letras, digitos y cualquier carácter especial
@
. cualquier carácter
Grupo de carácteres
[[:space:]] cualquier espacio (espacio \n \r o \t)
+ 1 o mas (”algunos”)
* 0 o mas (”quizas algunos”)
? 0 0 1 (”quizas a”)
{4,8} entre 4 y 8
La primera parte, [a-z] +, nos dice que aceptará una letra, o conjunto de
letras, sin espacios y en minúsculas, que pueden corresponderse con el
nombre de usuario de la cuenta de correo.
Después aceptará un símbolo @, seguido de otro conjunto de
caracteres, correspondientes al servidor de correo.
La última parte de la expresión la componen los símbolos \ ., que
indican que tiene que aparecer un punto que separe la descripción del
servidor del dominio y la cadena org , que obliga a que todos los correos
sean de dominio no gubernamental.
^[ a - z ]+@[ a - 2 ] + \ . o r g$
^ [ a - z ] +@ [ a - z ] + \ . ( o r g | c o m | n e t )$
^[a-z\.]+@[a-z\.]+\.(org|com|net|edu)$
1. Relleno
2. Alineación Secuencias de formato
3. Número de caracteres
4. Precisión
5. Tipo
% El carácter de tanto por ciento.
b Entero en binario.
c Entero como carácter ASCII.
d Entero en decimal.
f Double en punto flotante.
o Entero en octal.
s Cadena.
x Entero en hexadecimal (minúsculas).
IT Colima Ene-Jun 2009 95
X Entero en hexadecimal (mayúsculas).
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;
$busca = “D’Alton”;
// Habrá que escapar el apóstrofe
$sql = ‘SELECT *
FROM usuarios
WHERE apellido = \’’ .
addslashes($busca) . ‘\’’;
$valor = “a>b”;
echo ‘<input type=hidden name=var value=”’ .
htmlspecialchars($valor) . ‘”>’;
$cadena = “campo1:campo2:campo3”;
$campos = explode(“:”, $cadena);
$arr = array(1,'cosa',1.57,'gato'=>'raton','perro'=>'gato');
current($arr); // 1
next($arr); // cosa
current($arr); // cosa
prev($arr); // 1
end($arr); // gato
current($arr); // gato
key($arr); // perro
reset($arr); // 1
each($arr); // array(0,1)
each($arr); // array(1,'foo')
each($arr); // array(2,1.57)
IT Colima Ene-Jun 2009 102
3.5.7. Ordenar un array.
Mayúsculas y minúsculas:
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.
Modos:
•‘r’ Sólo lectura. Puntero al inicio.
•‘r+’ Lectura/escritura. Puntero al inicio.
•‘w’ Sólo escritura. Se trunca el fichero.
•‘w+’ Lectura/escritura. Se trunca el fichero.
•‘a’ Sólo escritura. Puntero al final.
•‘a+’ Lectura/escritura. Puntero al final.
$direcotrio = opendir('.');
closedir($directorio);
<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 ’Tamaño 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. Definición de una clase.
class NombreClase
{
var $variables;
class Coche {
var $velocidad; // Velocidad actual
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;
}
}
// Creación (instanciación)
$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. Creación y uso
de objetos.
// Creación (instanciación)
$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 aplicación puede definir la estructura básica en papel o crear una
pequeña plantilla con métodos que el objeto final debería 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 métodos como mínimo.
mysql_close ($link);
IT Colima Ene-Jun 2009 129
3.8.2. BD. Elegir una BD.
if (!mysql_select_db("prueba", $link))
{
die (“No existe la BD”);
}
class ConexionGenerica {
var $link;
function close() {}
function select_db($base_datos) {}
function query($query) {}
function fetch_array($resultado) {}
function free_result($resultado) {}
IT Colima Ene-Jun 2009 134
}
3.9. Acceso a BD unificado.
Clase ConexionMySQL.
require ("ConexionGenerica.inc");
function connect($servidor="localhost",
$usuario="nobody", $clave="") {
return $this->link = mysql_connect($servidor,
$usuario, $clave);
}
function close() {}
function select_db($base_datos) {}
function query($query) {}
function fetch_array($resultado) {}
function 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);