Archivo de Marzo de 2010

Como hacer subqueries con mysql

Miércoles, 17 de Marzo de 2010

Vamos a proceder a crear una subqueries en mysql. Esto nos servirá para poder combinar diferentes tablas. Ideal para buscadores que precisas de más de dos tablas relacionadas por algún campo.

 SELECT * FROM Empleados WHERE Salario > (SELECT MAX(Salario) FROM Empleados)

Subqueries ecalares

 SELECT * FROM Empleados WHERE Salario > (SELECT MAX(Salario) FROM Empleados)

IN y NOT IN - Esto dice si una valor de una columna está o no esta en la otra columna de la otra tabla

SELECT * FROM Clientes WHERE Id IN (SELECT Cliente FROM Ventas);

ALL y ANY - Se puede seleccionar filas que cumplen con cierta condición en las tablas

  SELECT * FROM Conformes WHERE Vencimiento > ALL (SELECT Fecha FROM Facturas);

SUBQUERIES CORRELACIONADOS - Esto es cuando hace referencia a una tabla que no figura en el FROM aunque sí debe figurar en la query que la contiene

 SELECT Articulo, Importe FROM Ventas V1 WHERE
Importe = (SELECT MAX(Importe)
FROM Ventas V2 WHERE V2.Articulo = V1.Articulo) ORDER BY Articulo;

EXIST y NOT EXIST - Te dice si tiene alguna fila o no en la query

 SELECT * FROM Sucursales WHERE EXISTS (SELECT 1 FROM Ventas WHERE Sucursal = Sucursales.Id);

Saludos!!

Paginación automática con php

Martes, 9 de Marzo de 2010

Vamos a ver una forma de poner paginación automática, gracias a PAGINATOR

Bajarse el script: aquí

¿Cómo se utiliza?

  • Conectarse a la Base de datos.
  • Definir una sentencia sql (cadena) válida (para MySql) y almacenarla en la variable $_pagi_sql. Esta variable no debe contener la cláusula “LIMIT”, pues será agregada automáticamente por el script. La definición de esta variable es OBLIGATORIA.
  • OPCIONALMENTE también podemos definir las siguientes variables:
    1. $_pagi_cuantos: Entero. Número de resultados que queremos obtener por cada página. Si no se define esta segunda variable, será por defecto 20.Disponible desde la versión 1.0
    2. $_pagi_nav_num_enlaces: Entero. Cantidad de enlaces a los números de página que se mostrarán como máximo en la barra de navegación. Por defecto se muestran todos. Disponible desde la versión 1.3
    3. $_pagi_mostrar_errores: Booleano. Define si se muestran o no los errores de MySQL que se puedan producir. Por defecto está en “true”. Disponible desde la versión 1.3
    4. $_pagi_propagar: Array de cadenas. Contiene los nombres de las variables que se quiere propagar por el url. Por defecto se propagarán todas las que ya vengan por el url (GET). Disponible desde la versión 1.4
    5. $_pagi_conteo_alternativo: Booleano. Booleano. Define si se cuentan los registros desde PHP con mysql_num_rows() (true) o desde MySQL como se venía haciendo hasta ahora con COUNT(*) (false). Por defecto está en false. Recomendable mantener en false a menos que dé errores de conteo o resultados no esperados. Disponible desde la versión 1.5
    6. $_pagi_nav_estilo: Cadena. Contiene el nombre del estilo CSS para los enlaces de paginación. Por defecto no se especifica estilo.
    7. $_pagi_nav_anterior: Cadena. Contiene lo que debe ir en el enlace a la página anterior. Puede ser un tag <img>. Por defecto se utiliza la cadena “&laquo; Anterior”.
    8. $_pagi_nav_siguiente: Cadena. Contiene lo que debe ir en el enlace a la página siguiente. Puede ser un tag <img>. Por defecto se utiliza la cadena “&raquo; Siguiente”.
  • Incluir el Paginator. A partir de aquí, quedan disponibles las siguientes variables:
    1. $_pagi_result : Que contiene el id del resultado de la consulta para los registros de la página actual, listo para pasarlo por alguna función tipo mysql_fetch_array().
    2. $_pagi_navegacion : Que contiene la “barra de navegación” para poder acceder a las diferentes páginas.
    3. $_pagi_info : Cadena que contiene información sobre los registros de la página actual. Ejemplo: “desde el 16 hasta el 30 de un total de 123″;
  • Mostrar los resultados, la barra de navegación y la info en el lugar que mejor nos parezca haciendo uso de las variables mencionadas en el apartado anterior.

Ejemplo


//Conexión a la base de datos
$con = mysql_connect("localhost","tu_username","tu_password") or die (mysql_error());
mysql_select_db("tu_base",$con) or die (mysql_error());

//Sentencia sql (sin limit)
$_pagi_sql = "SELECT * FROM clientes WHERE sexo='m' ORDER BY edad";

//cantidad de resultados por página (opcional, por defecto 20)
$_pagi_cuantos = 10;

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("paginator.inc.php");

//Leemos y escribimos los registros de la página actual
while($row = mysql_fetch_array($_pagi_result)){
    echo $row['nombre']."<br />";
}

//Incluimos la barra de navegación
echo"<p>".$_pagi_navegacion."</p>";

Fuente: http://jpinedo.webcindario.com/scripts/paginator/


Saber cuantos días tienen un mes en PHP

Martes, 2 de Marzo de 2010

Se puede saber por código cuantos días tiene un mes, esto va bien para que no de problemas los meses bisiestos.

date(”t”, strtotime(”$data”))

data será la fecha que queremos buscar el número de días del mes.

Saludos!!

Poner formato europeo de números decimales

Martes, 2 de Marzo de 2010

Se puede poner el formato europeo de números decimales como 1.222,23

Se hará de la siguiente forma:

number_format($value,2,”,”,”.”)

Valor pasará del 1222.3 al 1.222,23

Saludos!

sumar horas, días, meses y años con PHP

Martes, 2 de Marzo de 2010

mktime sirve para poder sumar fechas en PHP, definiendo el formato de representación.

LO MEJOR: $fec_vencimi= date(“Y-m-d”, strtotime(“$fec_emision + $can_dias days”));

date(‘H:i:s’, mktime( $hour1 + $hour2, $min1 + $min2, $sec1 + $sec2));

Si fueran días o meses

date(‘Y:m:d’, mktime( $year1 + $year2, $month1 + $month2, $day1 + $day2));

Se puede combinar las dos funciones