Escolar Documentos
Profissional Documentos
Cultura Documentos
PLANTELES EDUCATIVOS EN
COMPUTACION EMPRESARIAL 2000.
S.C.
ZONA GUANAJUATO
Contenido
INTRODUCCION........................................................................................... 3
Primeros pasos............................................................................................ 3
Variables..................................................................................................... 3
Tip............................................................................................................ 4
Reconociendo variables.............................................................................. 4
Qu contenido pueden tener mis variables.................................................4
Tipo de variables......................................................................................... 5
Qu son las constantes y en qu se diferencian con las variables?..........5
Diferentes tipos de condicionales...............................................................6
Casos de uso............................................................................................... 6
if, else y elseif.......................................................................................... 6
Switch...................................................................................................... 7
Condicionales con HTML..........................................................................8
Qu son los operadores?...........................................................................9
Operadores aritmticos............................................................................9
Operadores de asignacin.......................................................................9
Operadores de comparacin..................................................................10
Operadores lgicos................................................................................ 10
En PHP existen cuatro tipos de bucles: while, do while, for y foreach....11
while......................................................................................................... 11
do while..................................................................................................... 12
for............................................................................................................. 12
foreach...................................................................................................... 13
Cmo armar un formulario para que sea procesado por Php?.................15
Inputs..................................................................................................... 16
Textarea.................................................................................................... 18
SelectBox.................................................................................................. 19
Recibiendo los datos................................................................................. 20
contacto_script.php................................................................................... 21
Expliquemos paso por paso...................................................................21
Qu esta pasando ac?........................................................................21
Cuerpo del Mensaje............................................................................... 22
Funcin mail.............................................................................................. 22
Script Completo........................................................................................ 23
Sintaxis..................................................................................................... 23
Calcular la edad de una persona...............................................................24
Las cookies y las sesiones.........................................................................25
Qu son las cookies?............................................................................... 25
Qu son las Sesiones?............................................................................. 25
Para qu usar Cookies si con las Sesiones se logra practicamente lo
mismo de forma ms rapida y ms segura?.............................................26
Qu es una Base de Datos?.....................................................................26
Importancia de las Bases de Datos...........................................................26
Interaccin................................................................................................ 27
Ventajas de MySQL.................................................................................... 27
Conectarse con PHP a MySQL...................................................................27
Qu otras alternativas existen?...............................................................28
Por qu usar phpMyAdmin?.....................................................................28
Cmo crear una tabla?............................................................................ 29
Qu son los ndices?................................................................................ 31
Tipos de Consultas..................................................................................... 32
Primeros pasos en PHP............................................................................... 32
Ordenar nuestras consultas..........................................................................33
Filtrar las consultas.................................................................................... 34
Cmo insertar nuevos registros en la base de datos?..........................34
Casos de uso.......................................................................................... 34
Sintaxis.................................................................................................. 36
Editando una noticia.............................................................................. 37
Borrando una noticia.............................................................................. 39
joins....................................................................................................... 40
Inner, Left y Right Joins..........................................................................40
Union..................................................................................................... 41
Count........................................................................................................ 42
Max y Min.................................................................................................. 42
SUM........................................................................................................... 42
LIMIT......................................................................................................... 42
Subiendo Imgenes a un Sitio...................................................................43
IDE para desarrollar en php......................................................................44
Importar datos en la db de un CSV...........................................................44
Pgina 7 de 50
INTRODUCCION
Para empezar, PHP es un lenguaje de programacin para pginas web que permite
generar pginas dinmicas del lado del servidor. Para ser un poco ms preciso, nos
referimos por pginas dinmicas a aquellas pginas que van a cambiar su contenido
dependiendo de los valores que se le asignen.
Sin ir ms lejos, este mismo blog est programado en PHP y para ver los artculos se
utiliza siempre el mismo archivo, pero se muestra el contenido de acuerdo a la id del
artculo que se le est pidiendo.
Y por qu del lado del servidor? Esto significa que el cdigo PHP va a ser
interpretado en el servidor. As, lo que el usuario ver en pantalla ser el contenido
generado por la interpretacin del archivo PHP que el usuario est solicitando.
Una de las grandes ventajas que tiene PHP es su gran versatilidad a la hora de trabajar
con bases de datos, permitiendo realizar pginas con informacin almacenada en forma
persistente en bases de datos y mostrarla segn la peticin de los usuarios.
Primeros pasos
Dentro de un archivo PHP se puede alternar entre cdigo html y cdigo PHP. Esto
nos permite realizar pginas dinmicas de forma fcil: realizando toda la estructura con
html y luego agregando el contenido dinmico.
Imaginemos una pgina html comn, pero en lugar de ser index.html es index.php.
Cuando se quiera agregar cdigo PHP habr que hacerlo dentro de las etiquetas <?php
y ?> o <? y ?>, por ejemplo:
<html>
<head>
<title>hola mundo</title>
</head>
<body>
<h1>incluir cdigo PHP en html</h1>
<p><? ac va el cdigo PHP ?></p>
</body>
</html>
Variables
Las variables son elementos que creamos para asignarles un valor o dato especfico (que
puede cambiar a lo largo de nuestro archivo). En PHP, las variables se definen
anteponiendo el signo $, por ejemplo:
$hola = "hola mundo";
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 8 de 50
Tip
Lo ideal a la hora de programar es definir todas las variables y realizar las operaciones
antes del cdigo html y en ese cdigo mostrar los resultados de nuestras variables. Por
ejemplo, un cdigo completo de hola mundo sera:
<? $hola = "hola mundo"; ?>
<html>
<head>
<title><? echo $hola; ?></title>
</head>
<body>
<h1>incluir cdigo PHP en html</h1>
<p><? echo $hola; ?></p>
</body>
</html>
Reconociendo variables
Como expliqu en la clase anterior las variables anteponen el smbolo $, es decir
$variable, $queEsEsto, $no_se, son tres variables que se le pone el nombre que uno
quiere.
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 9 de 50
$miVariable = true;
?>
Si escribimos todo eso en nuestro cdigo php, el valor final que va a tener la variable
$miVariable va a ser true, todo el resto de la informacin asignada se pierde.
Tipo de variables
Existen dos tipos de variables en php, locales y globales, locales son aquellas que se
ejecutan en un nico mbito, es decir si yo defino una variable $local y a continuacin
uso una funcin que adentro contiene una variable llamada $local, van a ser
consideradas como dos variables diferentes y no va a pasar lo que pasa en el ejemplo
anterior que la informacin asignada prioritariamente a la variable $local se pierde.
Para crear una variable global que s puede ser accedida desde todos los mbitos de
nuestro script se debe aclarar, caso contrario es local.
<?
global $miGlobal = "esta es una variable global";
?>
De esa forma hemos definido la constante HOLA (por convencin se utilizan nombres
en mayscula para las constantes aunque no es obligatorio). Las constantes son ms
livianas que las variables en el uso de memoria del servidor y no pueden ser reescritas,
es decir, si en nuestro script tenemos lo siguiente:
<?
define('HOLA', 'Hola mundo');
define('HOLA', 'Chau mundo');
?>
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 10 de 50
Por ltimo, para usar una constante la usamos directamente por el nombre que
definimos en el primer trmino, volviendo al ejemplo de Hola mundo de nuestra primer
clase, usando la constante sera de la siguiente forma:
<? define('HOLA', 'Hola mundo'); ?>
<html>
<head>
<title><? echo HOLA; ?></title>
</head>
<body>
<h1>incluir cdigo PHP en html</h1>
<p><? echo HOLA; ?></p>
</body>
</html>
A partir de esta clase vamos a empezar a ver con ms profundidad como podemos
aprovechar al mximo la programacin. Los condicionales son bsicamente el elemento
fundamental a la hora de hacer pginas dinmicas. Con ellos decidimos qu tipo de
accin realizar y son parte de la llamada estructura de control.
Casos de uso
Por otro lado est muy relacionada con el else, que sirve para continuar con el proceso
si no se cumple la condicin.
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 11 de 50
Switch
La estructura switch es una forma paralela a la usada en el ltimo caso. Se forma de la
siguiente manera:
<?
switch($hoy) {
case 'Lunes':
echo 'Hoy es Lunes, tenemos carne para almorzar';
break;
case 'Martes':
echo 'Hoy es Martes, tenemos fideos para almorzar';
break;
case 'Miercoles':
echo 'Hoy es Miercoles, tenemos estofado para almorzar';
break;
case 'Jueves':
echo 'Hoy es Jueves, tenemos pizza para almorzar';
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 12 de 50
break;
case 'Viernes':
echo 'Hoy es Viernes, tenemos tarta para almorzar';
break;
case 'Sabado':
echo 'Hoy es Sabado, tenemos ravioles para almorzar';
break;
case default:
echo 'Hoy es Domingo, no almorzamos
';
break;
}?>
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 13 de 50
Operadores aritmticos
+ adicin de valores.
- resta de valores.
*
multiplicacion de
valores.
/ division de valores.
% resto de una division.
++
incrementa en una
unidad.
Operadores de asignacin
=
+=
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 14 de 50
segundo.
%=
.=
Operadores de comparacin
Este tipo de operadores se van a utilizar mucho en los condicionales, junto con los
operadores lgicos son los que le van a dar la complejidad a nuestro script.
comprueba si dos valores son iguales, por ejemplo if ($a == $b) si $b es igual $a,
== el condicional
devuelve TRUE y continua ejecutando el script.
!= comprueba si dos valores son distintos.
>
<
Operadores lgicos
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 15 de 50
&& es igual que el and
|| es igual que el or
Casi siempre nuestros script van a realizar tareas repetitivas, por ejemplo, una funcin
que muestra un listado de noticias, repite siempre la misma estructura, es decir, mostrar
un ttulo, mostrar una imagen, mostrar el autor, lo nico que cambia es el contenido,
pero la tarea que realiza es siempre la misma.
Una forma fcil de realizar una secuencia de instrucciones en forma repetitiva es
utilizando los BUCLES.
Explicando un poco la sintaxis del while, lo que va entre ( ) es la condicin, puede ser
de cualquier tipo, ver si existe una variable, si una variable es menor a otra, si una
variable es verdadera, etc. Y entre { } va la instruccin o instrucciones.
Un ejemplo sencillo de este bucle puede ser mostrar una cuenta de 1 hasta 10.
<code>
<?
$c = 1;
while ( $c < 11) {
echo "$c <br>";
$c++;
}
?>
</code>
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 16 de 50
do while
Este bucle no difiere mucho del anterior:
<code>
<?
do {
intrucciones
} while ( condicion)
?>
</code>
for
El bucle for tiene la siguiente sintaxis:
<?
for( expresion 1; expresion 2; expresion 3 ) {
instrucciones
}
?>
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 17 de 50
Al igual que como hicimos en el ejemplo del while, aqu seteamos $c = 1 (expresin 1
que se ejecuta por nica vez antes de comenzar el bucle), $c < 11 es la expresin 2, o
sea la condicin que queremos que se cumpla, y $c++ es la accin que se va a realizar al
finalizar la iteracin, igual que el while donde le ponamos el $c++ dentro de las
instrucciones.
Para bucles for se puede utilizar tambin una sintaxis alternativa.
<?
for ( expresion 1; expresion 2; expresion 3 ):
instrucciones
endfor;
?>
foreach
Este bucle es una forma rpida y sencilla de recorrer un arreglo o una matriz. En la clase
2 vimos que una variable poda contener un arreglo (array). Qu quiere decir esto? que
a una variable se le puede asignar un conjunto de elementos, por ejemplo la variable
$semana puede contener un arreglo con los das de la semana, para esto la definimos
as:
<?
$semana =
array( 'lunes','martes','mircoles',jueves','viernes','sbado','doming
o' );
?>
La sintaxis del foreach que nos va a permitir recorrer los array es la siguiente:
<?
foreach ( expresion1 as expresion2 ) {
instruccion
}
?>
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 18 de 50
// comienza el bucle
foreach ( $semana as $dia ) {
echo "$dia <br />";
}
?>
Ahora que ya tenemos nuestro array ms complejo, vamos a ver el foreach sin mostrar
ndices y mostrndolos
<?
foreach ( $noticia as $valor ) {
echo "$valor<br />";
}
?>
obtenemos en pantalla
titulo: Php Clase 5 - Bucles
cuerpo: Ac va el contenido de la clase 5 de php, mucho texto, mucho
mucho
autor: Justi
Tip
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 19 de 50
Lo bueno de usar esta ltima expresin es que se puede manipular que mostrar en
pantalla dependiendo del ndice, supongamos que queremos imprimir nuestra noticia
pero queremos que los ttulos tengan un <h1> el cuerpo aparezca en un <p> y el autor
en un <span> usando los condicionales hacemos lo siguiente:
<?
foreach ( $noticia as $indice => $valor ) {
if ( $indice == 'titulo' ) { echo "<h1>$valor</h1>"; }
if ( $indice == 'cuerpo' ) {echo "<p>$valor</p>"; }
if ( $indice == 'autor' ) {echo "<span>$valor</span>"; }
}
?>
PECE2000
ZONA GUANAJUATO
Pgina 20 de 50
cuando realizan una bsqueda en Google, esta se hace a travs de un formulario con
mtodo GET, ya que en la URL nos aparece toda la informacin que nosotros buscamos
ms otras variables.
Ahora bien Cundo es aconsejable usar uno u otro mtodo? Pues como dije justo en el
prrafo anterior, cuando se realiza un formulario de bsqueda, o un formulario para
filtrar la informacin mostrada o cambiar el orden de la informacin mostrada (En un
listado de departamentos en alquiler, cambiar el orden por mejor precio, por nmero de
ambientes, etc.) es aconsejable usar el metodo GET, ya que el usuario es muy probable
que entre en una pgina y luego vuelva para atrs, en esta vuelta para atras, esta
haciendo refresh de la pagina con los resultados de busqueda, si hubiese sido por POST,
el navegador hubiese mandado la alerta de que se esta intentando entrar en una pgina
que recibio informacion via POST y podra no mostrar la informacion correctamente.
Por el contrario, es aconsejable utilizar el mtodo POST cuando se desea enviar mucha
informacin, o es informacin que no va a cambiar por decisin del usuario, es decir, no
es un filtro, sino un formulario de contacto, para escribir una nueva entrada en nuestro
blog, crear un tema en un foro, etc.
id: lo usuamos para identificar el formulario, ya que podemos llegar a tener muchos
formularios en una misma pgina y queremos que se identifique bien cada formulario.
Aqui elegimos el nombre que queremos.
Listo, ya sabemos como configurar nuestro formulario, la clase que viene vamos a ver
que diferentes tipos de campos existen y como vamos a procesar esta informacin con
PHP.
Hola, bienvenidos a la octava clase del Taller de PHP! Esta clase estar dividida en dos
partes, por una cuestin de prolijidad. En esta primera parte vamos a ver algunos tipos
de campos que podemos tener en el formulario.
Los diferentes campos que podemos tener en un formulario son inputs, selectbox y
textarea. A su vez los inputs se dividen en de tipo texto, radio, checkbox, password,
hidden, button, submit, reset. Son un montn, as que veamos uno por uno.
Inputs
El ms comn de todos es el de tipo text. Este sirve para completar una sola linea de
texto y tiene que tener las siguientes propiedades.
<label for="input_campo">Nombre Campo</label>
<input id="input_campo" type="text" name="nombreCampo" value="" />
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 21 de 50
La id del input es un identificador nico, no puede haber ningn otro elemento con este
nombre en toda la pgina. El nombre es a gusto de ustedes, pero por convencin se
utilizan nombres relacionados con el elemento que estn identificando.
Consejo: a la hora de crear una id es muy til, por experiencia propia, ponerle primero
el tipo de elemento html que es y luego que representa, si se fijan yo eleg input_campo,
ya que es un input y como us un nombre genrico le puse campo, pero ah podra ser
input_direccion, input_telefono, input_email. Esto les va a resultar til a la hora de
armar un CSS o realizar acciones con Javascript. Van a poder identificar el elemento
muy fcilmente.
Con type le indicamos el tipo de input que es, en este caso es un texto, name es
obligatorio y lo utilizaremos para levantar la variable POST y value es el contenido del
campo, si lo dejamos con las dos comillas y sin contenido por defecto no nos va a
aparecer nada en el campo, sino podemos completarlo con alguna frase del estilo para
que nos aparezca adentro del campo.
<label for="input_contacto">Nombre Campo</label>
<input id="input_contacto" type="text" name="nombreContacto"
value="Complete con sus nombres y apellidos" />
Bueno, los inputs de tipo text los utilizamos para casos en que el usuario debe completar
un solo regln. Como completar con sus nombres y apellidos, direccin, telfono, email,
etc.
Tambin tenemos los inputs de tipo Radio, cuya sintaxis es la siguiente:
<label for="input_si">Si</label><input id="input_si" type="radio"
name="suscribirse" value="si" />
<label for="input_no">No</label><input id="input_no" type="radio"
name="suscribirse" value="no" />
Qu tenemos ac? Fjense que name es el mismo para ambos inputs, lo que cambia es
el value (y la id obvio, no se puede repetir id en toda la pagina). Este tipo de campos es
autoexcluyente, slo se puede marcar una opcin, y por php se recibir nicamente el
valor que fue marcado. El mismo se ve de la siguiente manera:
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 22 de 50
Otro caso similar es el tipo Checkbox, los clsicos cuadraditos que se utilizan para tildar
y destildar, es muy comn ver este tipo de inputs antes de registrarnos en algn lugar y
que nos pregunten si estamos de acuerdo con los trminos y condiciones.
La sintaxis es la siguiente:
<input id=input_acuerdo" type="checkbox" name="acuerdoLegal" value="1"
/>
En caso de que NO este marcado por el usuario al momento de hacer un submit del
formulario, este campo no se enva y al procesarlo por Php, veremos que no existe la
variable POST correspondiente a este campo.
Otro tipo de input es Password, esta propiedad hace que el campo en lugar de ver el
texto que se escribe en l, aparezcan los clsicos redondelitos negros ocultando la
informacin.
<input id="input_password" type="password" name="password" value="" />
Por ltimo vamos a ver el tipo Submit que es el campo que va a enviar nuestro
formulario
<input type="submit" name="submit" value="Enviar consulta" />
De esta manera vimos casi todos los campos de tipo input, que ya sabemos que sirven
para que el usuario ingrese una lnea de texto que ser procesada luego. En la clase de
hoy vamos a ver los textarea, es decir, donde se deja el cuerpo del mensaje.
Textarea
Los textarea funcionan muy similar a un campo input de tipo text con la particularidad
de que se pueden agregar saltos de linea, es decir escribir bloque de textos completos
con diferentes prrafos.
La sintaxis es la siguiente:
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 23 de 50
<textarea id="textarea_comunicacion" name="comunicacion" rows="10"
cols="50"></textarea>
La id es exactamente igual que en los casos anteriores, con name vamos a definir el
nombre de la variable que vamos a levantar con PHP via POST, rows es el nmero de
filas que queremos que tenga nuestro campo y cols es el ancho.
Entre los tags <textarea> y </textarea> se puede incluir un texto para que aparezca por
defecto, por ejemplo:
<textarea id="textarea_comunicacion" name="comunicacion" rows="5"
cols="50">Escribe aqu lo que quieras</textarea>
SelectBox
La sintaxis del que permite seleccionar slo uno es la siguiente:
<select id="select_sexo" name="sexo">
<option value="M">Masculino</option>
<option value="F">Femenino</option>
</select>
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 24 de 50
name="gustos" multiple="multiple">
jugar al Tennis</option>
jugar al Futbol</option>
jugar al Correr</option>
Para poder seleccionar mltiples opciones hay que dejar apretada la tecla Ctrl.
Ya terminamos con todo lo que tiene que ver con el formulario del lado del front end,
ahora slo nos resta ver el back end que es donde acta todo el proceso de PHP.
Hola, bienvenidos a la clase nmero once del Taller de PHP! Ya vimos todo el
frontend del formulario, ahora nos resta ver como levantamos las variables enviadas
atravs del mismo con PHP.
Hay que tener mucho cuidado en esta parte, como en general, dado que un pequeo
descuido al tipear el cdigo puede provocar un error al intentar enviar los datos a travs
del formulario. Sigue atentamente las indicaciones y no tendrs problemas!
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 25 de 50
Este formulario ser enviado al archivo contacto_script.php por el mtodo post. Ahora
la pregunta del milln es qu contiene el archivo contacto_script.php.
contacto_script.php
Este archivo va a interpretar los datos enviados a travs del formulario. Para ello lo que
vamos a hacer es primero ver si llegaron todos los parmetros y agregarlos cada uno a
una variable.
<?
// definimos las variables o marcamos el error
if ( !empty($_POST['nombres']) ) $nombres = $_POST['nombres']; else
$error = true;
if ( !empty($_POST['email']) ) $email = $_POST['email']; else $error =
true;
if ( !empty($_POST['sexo']) ) $sexo = $_POST['sexo']; else $error =
true;
if ( !empty($_POST['mensaje']) ) $mensaje = $_POST['mensaje']; else
$error = true;
?>
PECE2000
ZONA GUANAJUATO
Pgina 26 de 50
Como el e-mail llega como texto plano, debemos definirle los saltos de linea con \n\r.
Perfecto, ya definimos las variables, ya nos aseguramos que no tengo ningn error,
creamos el cuerpo del email, ahora lo que vamos a hacer es enviar el mensaje que
recibimos atravs del formulario a nuestra casilla de email. Para ello vamos a utilizar
una funcion de php que se llama mail()
Funcin mail
mail ( string $para , string $asunto , string $mensaje );
esta funcin va a responder true o false, dependiendo si se pudo ejecutar correctamente,
en nuestro script quedaria algo as:
// enviamos el email
if ( mail( 'direccion.del.destinatario@email.com','Recibiste un
mensaje a travs del formulario de contacto de tu sitio',$cuerpo ) ) {
header( 'Location: contacto_exitoso.php' );
die;
} else {
header( 'Location: contacto_error.php' );
die;
}
Fjense que en el primer parmetro de la funcin mail agregamos a dnde queremos que
se enve el mensaje, en el segundo parmetro ponemos el asunto y en el tercero el
cuerpo que definimos anteriormente.
Si la condicin es verdadera, es decir, el e-mail se envi correctamente redireccionamos
a una nueva pgina llamada contacto_exitoso.php, la cual contendr un mensaje del
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 27 de 50
Script Completo
El script completo quedara algo asi:
<?
// definimos las variables o marcamos el error
if ( !empty($_POST['nombres']) ) $nombres = $_POST['nombres']; else
$error = true;
if ( !empty($_POST['email']) ) $email = $_POST['email']; else $error =
true;
if ( !empty($_POST['sexo']) ) $sexo = $_POST['sexo']; else $error =
true;
if ( !empty($_POST['mensaje']) ) $mensaje = $_POST['mensaje']; else
$error = true;
// verificamos que no exista un error
if ( !empty($error) ) {
header( 'Location: contacto_error.php' );
die;
}
// definimos el cuerpo del email
$cuerpo = "
De: $nombres \n\r
Email: $email \n\r
Sexo: $sexo \n\r
Mensaje: \n\r
$mensaje
";
// enviamos el email
if ( mail( 'direccion.del.destinatario@email.com','Recibiste un
mensaje a travs del formulario de contacto de tu sitio',$cuerpo ) ) {
header( 'Location: contacto_exitoso.php' );
die;
} else {
header( 'Location: contacto_error.php' );
die;
}
?>
Sintaxis
las funciones se pueden definir con la siguiente sintaxis:
<?php
function nomber($argumento1, $argumento2, ..., $argumento_n)
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 28 de 50
{
echo "Funcin de ejemplo.";
return $resultado;
}
?>
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 29 de 50
Consejo: conviene tener un archivo funciones.php con todas las funciones de este tipo
que utilizan en el sitio, y lo incluyen en todas las pginas, ya van a ver que a la hora de
programar utilizan muchos procesos similares, si estos se incluyen en funciones, los
pueden llamar a todo momento y as ahorrar muchas lineas de cdigo y de tiempo. A
medida que avanzamos con el curso vamos a ir entendiendo igual la fuerza de tener
funciones.
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 30 de 50
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 31 de 50
Interaccin
La interaccin entre php y las base de datos se realiza a travs de herramientas propias
del lenguaje Php, por un lado, y escribiendo los pedidos a la base de datos en un idioma
universal, SQL (Structured Query Language) por otro, que podremos encontrar en todas
las bases de datos.
De todas formas no se asustn, SQL es muy sencillo (pero muy potente) y facil de
aprender.
Hasta la semana que viene.
MySQL es un sistema de base de datos open source (gratuito y modificable), y es
gracias a ello que se convirti en la base ms popular del mundo. Incluso su continuo
desarrollo y su impresionante popularidad estn haciendo que MySQL sea un
competidor directo de las grandes empresas como Oracle o IBM.
Este sistema de base de datos muy utilizado sobretodo con PHP es relacional, ya que
utiliza mltiples tablas para almacenar y organizar la informacin. Tambin es
multihilo porque se pueden realizar varias tareas concurrentemente. Y como ltima
caracterstica es multiusuario, pudiendo conectarse varios usuarios simultneamente.
Ventajas de MySQL
Nos da tambin una potencia sin igual, ya que utiliza SQL como
lenguaje para consultar la base de datos (usar ese motor nos
ahorrar una gran cantidad de trabajo).
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 32 de 50
Este programa permite acceder a todas las funciones tpicas de la base de datos MySQL
de forma muy intuitiva. Bsicamente no se necesita tener conocimientos previos de base
de datos para comenzar a crear tablas y agregar contenido.
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 33 de 50
Fjense que a la izquierda (en el sector ms oscuro) esta el listado de base de datos y a la
derecha hay una serie de informacin.
Si la base de datos (a partir de ahora la llamaremos db, por data base, base de datos en
ingles) ya existe hacemos clic en la misma, caso contrario, escribimos en el formulario
de la derecha donde dice crear nueva base de datos o en ingls create new database
con el nombre que nosotros queremos y hacemos clic en el botn crear.
Perfecto, en este momento nuestra db no contiene ninguna tabla, para ver como creamos
tablas, vamos a crear una tabla que contenga datos de contactos de personas amigas
(una agenda).
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 34 de 50
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 35 de 50
La diferencias practicas entre uno u otro es que por ejemplo TIMESTAMP admite
fechas entre 1970 y 2037 solamente, a diferencia de DATETIME que admite desde el
rango 1001-01-01 00:00:00 al 9999-12-31 23:59:59. Una de las ventajas que puede
tener TIMESTAMP es que el campo se puede poner que se actualice al momento de
cambiar cualquier otro valor almacenado, es muy comn utilizar este tipo para guarda la
fecha de modificacin de una lnea.
Por ltimo me queda explicar enum que tambin corresponde al tipo de datos de
caracteres, como el char y el varchar, la diferencia es que hay que especificar que
valores queremos que se puedan utilizar, y solo se va a poder completar el campo con
estos valores.
Bueno, ahora que expliqu cada tipo de dato, ya podemos crear nuestra tabla agenda,
para ello vamos a crear el primer campo con el nombre idAgenda, este campo va a ser
un int ya que va a ser el valor de identificacin nico de cada lnea que agreguemos, y
como no sabemos el tamao que tendr nuestra agenda, por las dudas le ponemos un
largo de 10, o sea, es un campo llamado idAgenda del tipo int(10). Por ltimo, como es
el identificador primario y se auto incrementa, vamos a tener que seleccionar en extra
el valor auto_increment y marcar el primer radio button con el iconito con una llave
que dice Primaria o Primary. Esto le indica que es la llave primaria de la tabla, el
valor nico que nos ayudara a identificar una fila almacenada.
El segundo campo lo llamaremos nombres y va a ser un varchar(255). El tercero va a
ser para almacenar los nmeros de telfono. Ac es donde surge la duda. Es un int o es
un varchar? Yo elegira varchar, ya que puede ser que se almacenen nmeros de telfono
con letras, o es posible separar un telfono en conjunto de dgitos, por ejemplo 45476789, en este caso si se hubiese elegido int, no sera un dato vlido para la tabla. El
cuarto campo vamos a llamarlo email, puede ser un varchar(100) y el ltimo un
enum llamado grupo, aqu en el campo longitud/valores vamos a incluir los
grupos posibles de la siguiente forma: familia, trabajo, amigos.
Finalmente hacemos clic en save y listo, ya tenemos nuestra tabla creada.
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 36 de 50
Tipos de Consultas
Bsicamente tenemos cuatro consultas a realizar entre PHP y MySQL que son las
siguientes:
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 37 de 50
Con estas cuatro consultas es que nosotros vamos a desarrollar todos nuestros sitios
webs, obviamente que a medida que avanza el curso vamos a ir aprendiendo elementos
ms complejos, como uniones entre tablas por ejemplo, pero no nos apuremos.
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 38 de 50
Fijense que hicimos una consulta SELECT y le indicamos los campos que queremos
traer (no es necesario traer todos), luego en el FROM le decimos de qu Tabla (OJO, no
confundan tabla con base de datos, por un lado tenemos la base de datos que fue la que
elegimos al conectar y dentro de la base de datos tenemos muchas tablas, la semana
pasada creamos una).
Con mysql_query enviamos la consulta a la base de datos activa, le tenemos que decir
qu queremos hacer y le pasamos la conexin ($conn).
Luego con mysql_fetch_assoc obtenemos un array que corresponde con una fila,
devolviendo en ese array los tres campos que nosotros le pedimos en este caso:
idNoticia, Ttulo y Cuerpo. Y pasa el puntero a la siguiente lnea, es por eso, que
usamos un while, recuerden que mientras que exista la lnea en la base de datos, nos va
a devolver un array en la variable row y nosotros a ese array, para no perderlo, lo
pasamos a un array que llamamos $noticia, as de esta forma, ya tenemos toda la
informacin de la base de datos en esa variable y no tenemos que recurrir de nuevo a la
base de datos si lo necesitamos usar ms adelante en el mismo script.
Por ejemplo si queremos mostrar el ttulo de la primer noticia que tenemos en la base de
datos ponemos <? echo $noticia[0]['titulo']; ?> y nos imprime en pantalla el ttulo.
Perfecto, eso es todo por hoy, ya a partir de la semana que viene veremos como ir
insertando datos en la base mediante PHP.
Buenos das alumnos! Hoy vamos a continuar con la insercin de datos en nuestra
base, as ya tienen ms sentido nuestras consultas de la clase anterior.
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 39 de 50
Y para que se entiendan mejor vamos a seguir el ejemplo de la tabla noticias con los
campos idNoticia ( int(11) - autoincremental), titulo (varchar( 255)), cuerpo (text) y
estado (enum(publicado,'borrador)) que vimos la semana pasada.
Recuerden que la tienen que realizar siempre antes de realizar cualquier tarea en el
script con base de datos la conexin con la misma.
De igual modo esto se hace una vez, por lo general arriba de todo en cualquier script se
pone la conexin con la base de datos y despus la variable que la guarda, $conn, en
nuestro caso se utiliza para todas las consultas, ya sean de insertar, borrar, consultar, etc.
Casos de uso
Esta es la parte divertida, ver realmente cmo vamos a utilizar esta sentencia de
MYSQL. Bsicamente lo que vamos a tener es un archivo que llamaremos subirnoticias.php, el cual separaremos en dos: por un lado todo nuestro script en php y por
otro lo que tiene relacion con HTML. Ya van a ver cmo se empieza a complicar todo :).
Veamos la parte de HTML primero.
<html>
<head>
<title>Formulario de Notcias</title>
</head>
<body>
<h1>Agregar Nueva Noticia</h1>
<form action="subir-noticias.php" method="post">
<label for="titulo">Titulo</label><br />
<input id="titulo" type="text" name="titulo" value="" /><br /><br />
<label for="cuerpo">Cuerpo</label><br />
<textarea id="cuerpo" name="cuerpo" rows="5"
cols="50"></textarea><br /><br />
<label for="estado">Estado</label><br />
<select id="estado" name="estado">
<option value="publicado">Publicado</option>
<option value="borrador">Borrador</option>
</select><br /><br />
<button type="submit" name="submit" value="1">Enviar Noticia</button>
</form>
</body>
</html>
Si prestan atencin vern que el formulario no tiene nada de raro salvo que la accin del
mismo apunta al mismo archivo. Por qu es esto? Porque, como dije antes, vamos a
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 40 de 50
trabajar todo sobre un mismo archivo, separando lo que es PHP de lo que es HTML.
Arriba del HTML vamos a poner todo nuestro script de PHP que va a ser como sigue:
<?
// datos de configuracion
$ip = 'localhost';
$usuario = 'usuario';
$password = 'password';
$db_name = 'baseDeDatos';
// conectamos con la db
$conn = mysql_pconnect($ip,$usuario,$password) or die();
// seleccionamos la base de datos
$huboerror = mysql_select_db($db_name,$conn) or die();
// si se envia el formulario
if ( !empty($_POST['submit']) ) {
$query = INSERT INTO `noticias` (titulo,cuerpo,estado) values
({$_POST['titulo']},'{$_POST['cuerpo']},'{$_POST['estado']});
$response = mysql_query($query, $conn);
}
?>
Fijense un par de cositas, arriba de todo pusimos la conexin con la base de datos (esto
lo voy a repetir siempre, para que quede bien grabadito :D).
Luego hacemos uso de una condicin mediante la sentencia if. Fijense que preguntamos
si la variable submit no est vacia.
Nosotros en nuestro formulario le pusimos valor 1, entonces siempre que se enve el
formulario, va a llegar tambin una variable $_POST['submit'] con valor 1. Si no est
vacia, hacemos la insercin de la noticia. Ya ms adelante veremos como hacer que
algunos campos sean obligatorios y otros no, pero como siempre los voy a dejar con la
intriga.
Por otro lado vern que uso unos {} en la sentencia de insercin de datos, esto es para
que me tome solamente el indice que le estoy pasando del array $_POST, ya que estoy
insertando una variable directamente dentro de un string que esta entre comillas
dobles(). Si yo no llegase a incluir los {} me insertaria el array $_POST dentro del
String en lugar del valor correspondiente al indice titulo.
Perfecto ya tenemos nuestro script para agregar noticias. Aqu les dejo el script
completo
<?
// datos de configuracion
$ip = 'localhost';
$usuario = 'usuario';
$password = 'password';
$db_name = 'baseDeDatos';
// conectamos con la db
$conn = mysql_pconnect($ip,$usuario,$password) or die();
// seleccionamos la base de datos
$huboerror = mysql_select_db($db_name,$conn) or die();
// si se envia el formulario
if ( !empty($_POST['submit']) ) {
$query = INSERT INTO `noticias` (titulo,cuerpo,estado) values
({$_POST['titulo']},'{$_POST['cuerpo']},'{$_POST['estado']});
$response = mysql_query($query, $conn);
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 41 de 50
}
?>
<html>
<head>
<title>Formulario de Notcias</title>
</head>
<body>
<h1>Agregar Nueva Noticia</h1>
<form action=subir-noticias.php method=post>
<label for=titulo>Titulo</label><br />
<input id=titulo type=text name=titulo value=" /><br /><br />
<label for=cuerpo>Cuerpo</label><br />
<textarea id=cuerpo name=cuerpo rows=5
cols=50></textarea><br /><br />
<label for=estado>Estado</label><br />
<select id=estado name=estado>
<option value=publicado>Publicado</option>
<option value=borrador>Borrador</option>
</select><br /><br />
<button type=submit name=submit value=1>Enviar Noticia</button>
</form>
</body>
</html>
Listo, ya aprendieron a insertar datos en una tabla, ahora nos falta saber cmo hacer si
esos datos que insertamos los escribimos mal, o los queremos cambiar y, siendo un
poquito ms extremos, no queremos que existan ms.
Para ello, en la clase de hoy, les voy a explicar cmo es la sintaxis de las consultas de
UPDATE y DELETE con la que lograremos nuestro objetivo.
Sintaxis
Bsicamente la sintaxis de PHP para estas consultas es bastante sencilla, por ejemplo,
para actualizar una tabla:
$query = "UPDATE `nombre_tabla` set campo1 = 'valoresCampo1', set
campo2 = 'valoresCampo2' WHERE primaryKey = 'valorPrimaryKey' LIMIT
1";
$response = mysql_query($query, $conn);
Recordar pasar siempre la variable de conexin como primer medida, luego, hay que
decirle en qu tabla queremos hacer el UPDATE, y luego le decimos qu campos vamos
a modificar y con qu valores. Es muy importante tambin la clusula WHERE para
indicarle que estn modificando una fila nicamente, si ustedes quieren modificar varias
filas con el mismo valor, pueden quitar la clusula where y el limit 1, y de esta
forma editaran toda la tabla.
Para borrar es muy similar:
$query = DELETE FROM `nombre_tabla` WHERE primaryKey =
'valorPrimaryKey' LIMIT 1";
$response = mysql_query($query, $conn);
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 42 de 50
Incisto, tengan mucho cuidado con lo que pongan en el WHERE, pueden poner
cualquier condicin, borrar por primary key o por muchos campos a la vez, pero
mucho OJO porque pueden borrar toda la informacin que contiene la tabla.
La clase que viene veremos algunos casos de usos de ambas consultas, y adems
aadiremos consultas del tipo SELECT, necesarias para poder hacer un administrador
de contenido decente.
Hasta la semana que viene! Practiquen mucho!
Hola de nuevo! Me imagino que habrn estado estudiando casi todo lo que estuvimos
viendo hasta aqu, ya que en la clase de hoy vamos a dar una vueltita por casi todos los
temas.
Lo que vamos a hacer es continuar con nuestro ejemplo de la tabla de noticias, vamos a
traer la noticia que queremos editar y para ello usaremos una variable get con la ID de
la noticia. Luego con esa ID, haremos una consulta para traer todos los datos que
incluiremos en un formulario y a su vez enviaremos las variables post con los nuevos
datos para editarla. Sencillo, no?
Entonces en nuestro archivo (previo nos conectamos con la base de datos como
siempre) vamos a tener un if para ver si existe una variable get idNoticia, en caso de que
exista hacemos la consulta para traer los datos completos
if ( !empty($_GET['idNoticia']) ) {
// traemos la noticia
$query = "SELECT idNoticia,titulo,cuerpo,estado FROM `noticias` WHERE
idNoticia = {$_GET['idNoticia']} limit 1;
$response = mysql_query($query, $conn);
$noticia = mysql_fetch_assoc($response);
}
Y luego, una vez que tenemos nuestra variable noticia con todos los datos de la base de
datos, vamos a completar el formulario con los datos originales de la siguiente manera:
<h1>Agregar Nueva Noticia</h1>
<form action="editar-noticias.php" method="post">
<label for="titulo">Ttulo</label><br />
<input id="titulo" name="titulo" value="<? echo $noticia['titulo']; ?>
type=text /><br /><br />
<label for=cuerpo>Cuerpo</label><br />
<textarea id=cuerpo name=cuerpo rows=5 cols=50><? echo
$noticia['cuerpo']; ?></textarea><br /><br />
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 43 de 50
<label for=estado>Estado</label>
<select id=estado name=estado>
<option value=publicado <? if ( $noticia['estado'] == publicado )
echo selected=selected; ?>>Publicado</option>
<option value=borrado <? if ( $noticia['estado'] == borrado ) echo
selected=selected; ?>>Borrado</option>
</select><br /><br />
<button type=submit name=submit value=1>Editar Noticia</button>
<input name=idNoticia value=<? echo $noticia['idNoticia']; ?>
type=hidden />
</form>
Como vern hay dos cambios importantes con respecto al formulario de ingreso de
noticias, en este completamos el atributo value con los datos originales. Y el otro
cambio es que agregamos un nuevo campo al formulario de tipo hidden, o sea, oculto
con el valor de la ID de la noticia que estamos editando.
Este formulario lo enviaremos a un archivo que contendr el script, puede ser este
mismo archivo, de la misma forma que lo hicismos al ingresar una noticia.
Si hiciramos eso, tendramos que tener entonces (antes de hacer nuestra consulta para
traer la noticia) otro if para saber si recibimos las variables post para editarla.
if ( !empty($_POST['submit']) ) {
$query = UPDATE `noticias` set titulo = {$_POST['titulo']}, set
cuerpo = {$_POST['cuerpo']}, set estado = {$_POST['estado']} WHERE
idNoticia = {$_POST['idNoticia']} LIMIT 1;
$response = mysql_query($query, $conn);
}
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 44 de 50
$response = mysql_query($query, $conn);
$noticia = mysql_fetch_assoc($response);
}
?>
<html>
<head>
<title>Formulario de Edicin de Noticias</title>
</head>
<body>
<h1>Agregar Nueva Noticia</h1>
<form action="editar-noticias.php" method="post">
<label for="titulo">Titulo</label><br />
<input id="titulo" name="titulo" value="<? echo $noticia['titulo']; ?>
type=text /><br /><br />
<label for=cuerpo>Cuerpo</label><br />
<textarea id=cuerpo name=cuerpo rows=5 cols=50><? echo
$noticia['cuerpo']; ?></textarea><br /><br />
<label for=estado>Estado</label>
<select id=estado name=estado>
<option value=publicado <? if ( $noticia['estado'] == publicado )
echo selected=selected; ?>>Publicado</option>
<option value=borrado <? if ( $noticia['estado'] == borrado ) echo
selected=selected; ?>>Borrado</option>
</select><br /><br />
<button type=submit name=submit value=1>Editar Noticia</button>
<input name=idNoticia value=<? echo $noticia['idNoticia']; ?>
type=hidden />
</form>
</body>
joins
Las consultas con joins prcticamente son para unir tablas por medio de un campo.
Supongamos que tenemos dos tablas, la tabla usuarios y la tabla noticias. Ambas tienen
los siguientes campos:
usuarios [ idUsuario, nombre, apellido ]
noticias [ idNoticia, titulo, cuerpo, idAutor ]
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 45 de 50
Fijense que en la tabla noticias no dejamos registro del nombre de la persona que
escribi la noticia, dejamos solo la referencia a la tabla usuarios mediante una
identificacin nica. Esto nos permite que a la hora de mostrar la noticia, si el usuario
cambia uno de sus datos, ya sea porque el nombre estaba mal escrito, o una mujer que
se cas y ahora quiere que se vea el apellido del marido tambin, o cualquier otro
motivo, ahora solo va a tener que editar la tabla de usuarios, si nosotros hubiramos
puesto en la tabla noticias en lugar de idAutor, nombreDelAutor, al momento de
actualizar la tabla de usuarios, tambin tendramos que actualizar la de noticias.
Bueno, ms o menos ya entendieron cul es la idea al relacionar las tablas, ahora, qu
pasa si nosotros hacemos una consulta del tipo SELECT en la tabla de noticias para
traer el listado completo, no vamos a saber cul es el autor, solo vamos a tener un
numerito que hace referencia a la tabla de usuarios pero no sabemos el nombre, nos
tenemos que ir a fijar a esa tabla.
Para evitar tener que hacer una nueva consulta es que existe una forma de generar las
consultas agregando los joins y en una sola consulta chequeamos dos o ms tablas al
mismo tiempo.
La sintaxis es la siguiente:
SELECT noticias.titulo, noticias.cuerpo, usuarios.nombre,
usuarios.apellido FROM noticias INNER JOIN usuarios ON
noticias.idAutor = usuarios.idUsuario
De esta forma unimos ambas tablas, fjense que en las columnas primero aclaramos a
que tabla pertenece lo que queremos traer y despus el nombre del campo, lo mismo que
cuando declaramos el INNER JOIN le tenemos que indicar con qu tabla queremos unir
y despus en ON le avisamos de qu forma es que unimos. Al final de esta consulta se
puede poner sin problemas filtros del tipo WHERE, tambin ORDER BY y LIMIT.
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 46 de 50
SELECT noticias.titulo, noticias.cuerpo, noticiasImagenes.archivo FROM
noticias RIGHT JOIN noticiasImagenes ON noticias.idNoticia =
noticiasImagenes.idNoticia
Vamos a lograr que nos traiga como resultado tantas lneas como imgenes tenemos
asignadas, repitiendo los datos de las noticias, por ejemplo, puede ser que los resultados
sean as:
idNoticia - titulo - imagen
1 - Taller de PHP - php.jpg
1 - Taller de PHP - logo.gif
Union
Otro tipo de consulta ms compleja son los UNION, que sirve para combinar resultados
de varias consultas del tipo SELECT. La sintaxis es:
SELECT ... UNION [ALL | DISTINCT] SELECT
El union puede ser UNION ALL o UNION DISTINCT, con la primer opcin va a traer
todos los resultados encontrados en ambas tablas, y con DISTINCT solo los diferentes.
Supongamos que tenemos dos tablas de noticias, una para las noticias publicadas y otra
para el borrador, y nosotros queremos traer en una misma consulta todos los datos de
ambas tablas ordenados por orden de fecha de creacin, en estos casos es que tenemos
que hacer la consulta del tipo UNION, para poder ordenar datos de dos tablas diferentes
intercalando los datos entre un conjunto y otro.
Buenas, en la clase de hoy vamos a ver una forma de traer valores puntuales de la base
de datos.
Tambin veremos cmo evitar hacer cuentas o clculos complejos y cmo aplicar
count, los tipos de consultas max y min, sum y limit.
As que manos a la obra y ya saben que cualquier duda que vaya surgiendo pueden
dejrmela en los comentarios que tratar de responderlos a medida que van llegando.
Count
El count nos va a dar el nmero de veces que se repite un valor en la db, es decir el
nmero de registros almacenados que correspondan con nuestra consulta. Por ejemplo,
en nuestra tabla de noticias, si queremos saber cuntas noticias hay publicadas entonces
la consulta que hacemos es:
SELECT COUNT(*) FROM noticias WHERE estado = 'publicado';
Ahora que pasa si queremos agregar algn otro campo en la consulta, por ejemplo el
nmero de noticias publicadas por cada autor:
SELECT autor, count(*) FROM noticias GROUP BY autor;
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 47 de 50
Fjense que agregamos a la consulta GROUP BY que nos permite agrupar por el valor
que queremos, por ejemplo, la consulta anterior nos traera como resultados posibles:
Justi - 3
Juan Manuel - 8
Wilkilen - 1
Max y Min
Otro tipo de consulta muy comn es traer el valor mximo o mnimo de un listado de
valores. Supongamos que tenemos una tabla de productos con sus respectivos precios, si
queremos traer el precio mximo o mnimo lo hacemos de la siguiente manera:
SELECT MAX(precio) FROM productos;
SELECT MIN(precio) FROM productos;
Y si queremos saber, por ejemplo, cul es el precio promedio del producto con id 15
podemos hacer:
SELECT AVG(precio) FROM productos WHERE idProducto = 15;
SUM
Por ltimo tenemos la suma. Por ejemplo, si tenemos un carrito de compras y
seleccionamos 5 productos y queremos saber cunto es el total a pagar por el usuario
con id 3 deberamos hacer:
SELECT sum(precio) FROM carrito WHERE idUsuario = 3;
LIMIT
Algo que es muy comn tambin es limitar la cantidad de registros que queremos traer
de la base de datos, por lo general algunas tablas pueden llegar a tener miles de registros
y traer a todos hara demasiado uso de servidor y demorara demasiado para lo que
realmente necesita el script, es por ello que es muy comun limitar las consultas a la
cantidad de resultados que necesitamos (si es que realmente conocemos este dato).
Por ejemplo si hacemos una consulta con un count(*) porque queremos saber el total de
registros de una tabla, al final le colocaremos LIMIT 1.
SELECT count(*) FROM productos LIMIT 1;
Otra forma de usar el limit es pasndole dos argumentos en lugar de uno, por ejemplo, si
ponemos:
SELECT * FROM productos LIMIT 5,10;
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 48 de 50
El primer valor que ponemos es desde qu registro queremos empezar a traer (el
primero es 0) y el segundo cuntos valores, por lo que la consulta anterior va a traer
desde el producto con id 6 al 15.
Es muy comn utilizar el limit con dos argumentos cuando se desea hacer un paginado.
La clase anterior fue la ltima en lo que respecta a MySQL y base de datos. S que no
es un tema sencillo (incluso tuve que aadir una clase extra por all) pero todo es
prctica, constancia y consultas.
Por eso dejar esta clase exclusivamente para que dejen sus comentarios con dudas o
inquietudes que les puedan surgir. Tienen tiempo hasta el prximo lunes. Prometo
responder todos los comentarios e incluso ir dando ejemplos para ser ms claro.
Prefiero que cerremos el tema de esta forma para retomar el taller luego con
Manipulacin de Archivos, algo diferente a lo que vimos hasta ahora.
Hoy es el da de las respuestas a todas esas dudas de modo que no veremos solamente
un tema sino que el mismo ir variando de acuerdo a cada pregunta. La idea es que
todos podamos aprovechar para afianzar lo que estuvimos viendo. Comencemos!
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 49 de 50
Por IDE nos referimos a la herramienta que utilizamos para programar nuestros script,
es ms una cuestin de gustos que otra cosa el cul es la mejor.
En un principio yo utilizaba Dreamweaver, ya que trabajaba un poco en forma visual y
un poco en modo cdigo. Luego cuando ya practicamente hacia todo en modo cdigo
pase a usar Zend Studio, ambas opciones son desarrolladas por empresas privadas, por
lo que hay que abonar por ellas, como alternativa gratuita a estas opciones est Eclipse,
excelente programa que compite cabeza a cabeza con Zend, de hecho actualmente yo
estoy usando Eclipse con un plugin de Zend Studio obteniendo las mejores
caractersticas de ambos programas.
TALLER DE PHP
PECE2000
ZONA GUANAJUATO
Pgina 50 de 50
Que nos va a devolver la ip del usuario, con esta variable podemos hacer lo que
queremos, o un:
<? echo $_SERVER["REMOTE_ADDR"]; ?>
TALLER DE PHP
PECE2000
ZONA GUANAJUATO