Como hacer subqueries con mysql

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

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

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

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

2 de Marzo de 2010

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

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

Modificar eje vertical de gráfica flex - LineChart

24 de Febrero de 2010

Para modificar los ejes verticales de las gráficas estilo Linechart, hay que poner este código obligando que no ponga por defecto la base del eje vertical a zero.

 <mx:LineChart id="lineChart">
 <!-- vertical axis -->
        <mx:verticalAxis>
            <mx:LinearAxis baseAtZero="false" title="Price" />
        </mx:verticalAxis>
 </mx:LineChart>

Problema con el combos con IE Internet Explore

18 de Febrero de 2010

Para actualizar un combo se haría así:

<select id=”miselect”>
<option>Opcion1</option>
</select>

Para recargarlo haríamos así:

document.getElementById(“miselect”).innerHTML = “<option>Opcion2</option>”;

En Internet Explorer se ha de hacer utilizando un div y en el actualizar todo el combo:

<div id=”miselectDiv”>

<select id=”miselect”>
<option>Opcion1</option>
</select>

</div>

A través de javascript además de inyectarle las option añadimos el propio select (con <select> </select>).

document.getElementById(“miselectDiv“).innerHTML = “<select><option>Opcion2</option></select>”;

Funciones con arrays

9 de Febrero de 2010
  • array_change_key_case — Devuelve una matriz con todas las claves de las cadenas convertidas a mayúsculas o minúsculas
  • array_chunk — Divide una matriz en segmentos
  • array_combine — Crea una nueva matriz, usando una matriz para las claves y otra para sus valores
  • array_count_values — Cuenta todos los valores de una matriz
  • array_diff_assoc — Comprueba las diferencias entre matrices teniendo en cuenta los índices
  • array_diff_key — Calcula la diferencia de matrices usando las llaves para la comparación
  • array_diff_uassoc — Computa la diferencia entre matrices con un chequeo adicional de índices, el cual es realizado por una llamada de retorno entregada por el usuario
  • array_diff_ukey — Calcula la diferencia de matrices usando callback function on the keys for comparison
  • array_diff — Comprueba las diferencias entre matrices
  • array_fill_keys — Fill an array with values, specifying keys
  • array_fill — Llena una matriz con valores
  • array_filter — Filtra elementos de una matriz mediante una función “callback”
  • array_flip — Intercambia los valores de una matriz con sus índices
  • array_intersect_assoc — Calcula la intersección de matrices verificando que también coincidan los índices
  • array_intersect_key — Calcula la intersección de matrices usando las llaves para la comparación
  • array_intersect_uassoc — Calcula la intersección de matrices con chequeo de índices adicional por una función de usuario
  • array_intersect_ukey — Calcula la intersecció de matrices usando una función de usuario para la comparación de los índices
  • array_intersect — Calcula la intersección de matrices
  • array_key_exists — Comprueba si el índice o clave dada existe en la matriz
  • array_keys — Devuelve todas las claves de una matriz
  • array_map — Aplica la llamada de retorno especificada a los elementos de las matrices dadas
  • array_merge_recursive — Une dos o más matrices recursivamente
  • array_merge — Combina dos o más matrices
  • array_multisort — Ordena múltiples matrices, o matrices multi-dimensionales
  • array_pad — Rellena una matriz con un valor hasta el tamaño especificado
  • array_pop — Extrae el último elemento de la matriz
  • array_product — Calcula el producto de valores en una matriz
  • array_push — Inserta uno o más elementos al final de la matriz
  • array_rand — Selecciona una o más entradas aleatorias de una matriz
  • array_reduce — Reduce iterativamente una matriz a un solo valor usando una función llamada de retorno
  • array_reverse — Devuelve una matriz con los elementos en orden inverso
  • array_search — Busca un valor determinado en una matriz y devuelve la clave correspondiente en caso de éxito
  • array_shift — Extrae un elemento del comienzo de la matriz
  • array_slice — Extrae una porción de la matriz
  • array_splice — Suprime una porción de la matriz y la sustituye por otra cosa
  • array_sum — Calcula la suma de los valores en una matriz
  • array_udiff_assoc — Computa la diferencia entre matrices con un chequeo de índices adicional, comparando los datos con una llamada de retorno
  • array_udiff_uassoc — Computa la diferencia entre matrices con un chequeo de índices adicional, comparando los datos y los índices con una llamada de retorno
  • array_udiff — Computa la diferencia entre matrices, usando una llamada de retorno para la comparación de datos
  • array_uintersect_assoc — Calcula la intersección de matrices con chequeo adicional de ídices, comparando los datos por una función del usuario
  • array_uintersect_uassoc — Calcula la intersección de matrices con chequeo adicional de índices, compara los datos y los índices por una función del usuario
  • array_uintersect — Calcula la interseccón de matrices, compara los datos con una función del usuario
  • array_unique — Remueve valores duplicados de una matriz
  • array_unshift — Introduce uno o más elementos al principio de la matriz
  • array_values — Devuelve todos los valores de una matriz
  • array_walk_recursive — Aplicar una función de usuario recursivamente a cada miembro de una matriz
  • array_walk — Aplica una función del usuario a cada elemento de una matriz.
  • array — Crear una matriz
  • arsort — Ordena una matriz en orden inverso y mantiene la asociación de índices
  • asort — Ordena una matriz y mantiene la asociación de índices
  • compact — Crea una matriz que contiene variables y sus valores
  • count — Cuenta los elementos de una matriz o propiedades de un objeto
  • current — Devuelve el elemento actual de una matriz
  • each — Devuelve el siguiente par clave/valor de una matriz y avanza el apuntador
  • end — Mueve el puntero interno de una tabla al último elemento
  • extract — Importa variables a la tabla de símbolos desde una matriz
  • in_array — Revisa si un valor existe en una matriz
  • key — Obtiene una clave de una matriz asociativa
  • krsort — Ordena una matriz por clave en orden inverso
  • ksort — Ordena una matriz por clave
  • list — Asigna variables como si fueran una matriz
  • natcasesort — Ordena una matriz usando un algoritmo de “orden natural” sin distinguir mayúsculas de minúsculas
  • natsort — Ordena una matriz usando un algoritmo de “orden natural”
  • next — Avanza el puntero interno de una matriz
  • pos — Alias de current
  • prev — Rebobina el puntero interno de una matriz
  • range — Crea una matriz que contiene un rango de elementos
  • reset — Fija el puntero interno de una matriz a su primer elemento
  • rsort — Ordena una matriz en orden inverso
  • shuffle — Mezcla una matriz
  • sizeof — Alias of count
  • sort — Ordena una matriz
  • uasort — Ordena una matriz mediante una función de comparación definida por el usuario y mantiene la asociación de índices
  • uksort — Ordena una matriz por claves mediante una función definida por el usuario
  • usort — Ordena una matriz por sus valores usando una función de comparación definida por el usuario

Errores de google adwords

18 de Enero de 2010

1. No apagar la red de contenidos.

Cuando se está configurando por primera vez una campaña, apaga la red de contenidos. Esta opción está “on” por defecto, y tendrás suerte si funciona la primera vez que ejecutes. Es una forma de publicidad contextual e intenta posicionar tus anuncios en sitios como About.com, The New York Times, Food Network entre otros. Por lo general verás altas impresiones en tu sistema, pero normalmente bajo CTR (click-through-rates, determinado por impresiones por click) y clicks de baja calidad. Esos no son compradores serios; están malgastando tu dinero y tu tiempo.

2. Usar demasiadas keywords.

Cuando se crean nuevas campañas y grupos de anuncios, mucha gente empieza introduciendo cada palabra clave que se le ocurre. No. Enfocar es la clave; piensa sobre tu nicho de negocio y las categorías dentro de él. Puedes usar herramientas como Wordtracker Free Suggestion Tool para determinar que las keywords con las que empezar. Una vez tienes una lista, mira el consejo 6.

3. Ignorar la competencia.

Analiza a tus competidores. Un modo es usar Google Keyword Tool. Selecciona “site-related keywords” e introduce el sitio web del competidor para sacar grupos de palabras clave de sus páginas. Además, comprueba sus sitios para tener impresión global de su contenido. Escarba un poco más en SpyFu.com para encontrar algo más en los rankings y en los gastos de PPC competitivos. Mira las páginas de resultados de búsquedas después de introducir sus principales keywords en Google, revisa sus anuncios, piensa en el texto y prepárate para el consejo #4.

4. No incluir keywords en el texto del anuncio.

Usa keywords en el título del anuncio, pero también en la copia del anuncio. Muchos copywriters de anuncios se olvidan de incluir la frase clave en el mismo cuerpo del texto del anuncio. Escribe con claridad y suministra contenido relevante tanto para los usuarios como para el Google AdBot. Crea una página con contenido relevante y acorde a las keywords para satisfacer a los usuarios y obtener un mayor Nivel de Calidad de Google.

5. Enviar a tus visitantes a tu página de inicio.

Muchas de las cuentas PPC por las que he pasado envían tráfico y visitantes a su página inicial. Pero ahí, simplemente, hay demasiada información, y los visitantes pueden abandonar tu sitio web. Date cuenta que apuntar es mejor que lanzar “a saco” información en la mayoría de los casos.

6. Usar palabras clave demasiado generales.

Es necesario crear las campañas publicitarias y los grupos de anuncios en estricta concordancia con las palabras clave, pero la mayoría no lo hace. Deberías poner sólo unas pocas keyword dentro de cada grupo publicitario y añadir más grupos para acomodar las nuevas keywords “tematizadas”. Google maximiza 100 grupos de anuncios por cuenta; creo que lo aumentarán en algún punto.

7. Usar concordancia general.

Cuando configuras Google AdWords por primera vez e introduces una palabra clave, el tipo por defecto es broad match. Aunque broad match te puede funcionar, siempre recomiendo usar los tipos “phrase” y “exact” match para empezar y seguir el rendimiento desde ahí. AdWords también tiene un tipo negative match, que es pasado por alto casi siempre. Ejemplo de tipos de match:

  • Broad: chaqueta de piel (cualquier orden, cualquier palabra, no enfocado, más clicks)
  • Phrase: “chaqueta de piel” (en este orden, palabras antes y después, más enfocado, clicks OK)
  • Exact: [chaqueta de piel] (en este orden, sin otras palabras, muy enfocado, menos clicks)
  • Negative: - rosa (no mostraría anuncios para “chaqueta de piel rosa”)

Yahoo! Search Marketing también incluye tipos de match. Asegúrate de entenderlos y en qué son diferentes. Empieza por el tipo de match standard, que no es el que hay por defecto.

8. Usar la opción por defecto “optimize”.

La configuración por defecto de AdWords es dejar que Google “optimice” tus anuncios por ti. Es mejor seleccionar la opción “rotate”, de modo que puedas testear tu rendimiento publicitario de un modo mucho más limpio.

9. No seguir los anuncios ni las keywords.

Si los anuncios y las keywords no están funcionando, estás malgastando el dinero. Puedes usar la herramienta gratuita Google Analytics para ayudarte a hacer el seguimiento de actividad. Las palabras clave además también deben ser testeadas y seguidas con fallos ortográficos, plurales y derivaciones.

10. No probar convenientemente los anuncios.

El testing A/B ha estado rondando el mundo de la publicidad durante décadas, y el concepto es el mismo en la red. Escribe al menos dos anuncios dentro de un grupo, y AdWords las rotará automáticamente por ti. Esto revelará los mejores anuncios basándose en el rendimiento. A continuación, pausa el anuncio perdedor y escribe uno nuevo y mejor; intenta mejorar al ganador una vez más. No lo cambies inmediatamente, sin embargo; deja que funciona durante un tiempo para obtener algunos datos sobre sus tendencias.

11. No aplicar el “conversion code.”

Asegurate de aplicar el “código de conversión”, que es un simple JavaScript que va dentro de tu página de aterrizaje o tu página de agradecimiento. Esta información mostrará una columna en tu tablero de AdWords cuando entres, y es un modo rápido para comprobar los mejores recuentos y es importante para seguir el retorno del gasto.

Fuente : http://comoganardinerodesdecasa.es/top-11-de-los-errores-en-google-adwords/

Tabla de asignación de pagerank según enlaces compartidos

8 de Enero de 2010

Esta es la gráfica que relaciona que pagerank tendrías que tener si otras web de determinado pagerank apuntan hacia la tuya.