Como utilizar una consulta PHP 2 veces



En PHP es posible que necesitemos usar una consulta 2 veces. Un ejemplo práctico de ésto, sería rellenar 2 combos con la misma consulta, sin tener que copiar los combos. La solución sería que tras recorrer el array de la consulta para cargar el primer combo, volver a poner el puntero de la consulta al primer registro de ésta. Esto se hace con «mysql_data_seek»

Ejemplo:

$conexion=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
if(!$conexion)
{
    echo "No se pudo conectar a la DB";
}else
{
	mysql_select_db(DB_NAME) or die ("No se puedo conectar con la base de datos");

	$resultado=mysql_query("SELECT equipo FROM equipos
                                WHERE categoria='PrimeraCategoria'",$conexion);

	if(!$resultado)
	{
		echo "La consulta no funciono";
	}else
        {
                //CARGO EL PRIMER COMBO
                echo '<label>Equipo Local:</label>';
                echo '<select style="width: 225px;" name="equipoLocal">';
                while ($row=mysql_fetch_row($resultado))
                {
                      echo'<option value="'.$row[0].'">'.$row[0].'</option>';
                }
                echo '</select>';

                //Devuelvo al array de la consulta a la posición de partida para volverlo a recorrer
               if( !mysql_data_seek($resultado, 0) )
               {
                      die( "No se pudo regresar al primer resultado" );
               }else
               {      //CARGO EL SEGUNDO COMBO
                      echo '<label>Equipo Visitante:</label><br>';
                      echo '<select name= "equipoVisitante" style="width: 225px">';
                      while ($row=mysql_fetch_row($resultado))
                      {
                            echo'<OPTION VALUE="'.$row[0].'">'.$row[0].'</OPTION>';
                      }
                      echo '</select>';
               }
       }
}

Diferencia entre redireccion frame y http

Logotipo de dominio logo imagen

En ocasiones nos podremos encontrar un escenario en el que tenemos dos dominios, por ejemplo midominio.es y midominio.com

Para estos casos en lugar de apuntar con las dos direcciones a nuestro hosting, podemos hacer una redirección desde el dominio secundario apuntando al dominio principal. Normalmente en las empresas donde tenemos contratados el dominio, (ej. 1and1), tendremos la opción de hacer una redirección http y frame. ¿Cuál elegir?

La redirección http o redirección visible, consiste en que al teclear en el navegador nuestro dominio secundario, directamente saltará en la barra del navegador nuestro dominio principal.

La redirección frame o redirección invisible, consiste en que al teclear en el navegador nuestro dominio secundario, éste se quedará en el navegador fijo, aunque estemos viendo nuestra página web del dominio principal.

 

Esto no es un número en phpMyAdmin

Si estás creando campos en la base de datos con phpMyAdmin y te encuentras que al crear un campo de tipo texto no puedes, porque te aprece un mensaje de error «Esto no es un número«, tendrás que hacer lo siguiente:

Esto no es un número phpMyAdmin

Para solucionar este error, tendrás que indicar a la base de datos que tamaño tiene este campo. Esto se hace en el campo Longitud/Valores, por ejemplo podrías poner 255 en caso de que el campo fuera para un nombre de persona por ejemplo.

Crear campos en una tabla con PhpMyAdmin

Logotipo de la base de datos MySql (logo)

Quizás pueda resultar muy sencillo crear campos en una base de datos y así es en la mayoría de los casos, que aparte de soportar la creación del campo en modo consulta sql también se puede hacer desde el apartado gráfico del motor de la base de datos.

En este caso un error frecuente, aunque por otro lado obvio, es crear un campo con phpMyAdmin.

En la imágen siguiente veremos que tendremos que rellenar para este proceso.

crear un campo con php my admin

1.- Campo: Es el nombre del campo (obligatorio)

2.- Tipo: El tipo de datos del campo, según lo que nos interese guardar, números, texto, fechas, etc

3.-  Longitud/Valores: Si hemos puesto texto deberemos de informar de cuántos carácteres queremos crear el campo.

4.- Predeterminaos: Lo habitual es dejarlo en None

5 y 6 .- Cotejamiento y atributos: Lo habitual es dejarlo como está

7.- Nulo: Si queremos que nuestro campo admita valores nulos o no

8.- Índice: Importante si se quiere que el campo sea la clave de la tabla y de que tipo de clave

9.- Auto_increment: Si fuera de tipo entero el campo, podríamos hacer que el MySql se encargara de aumentarlo correlativamente cada vez que se añadiera un registro,.

VLC Espere mientras, reconstruye la cache de fuentes

VLC esta construyendo la cache de fuentes

Si usamos el reproductor de video VLC (muy recomendado por otra parte) a veces, con las últimas versiones y  en según que videos podemos tener un latoso mensaje, en el que nos dice: «Espere mientras se reconstruye la caché de fuentes. Debería realizarse en menos de un minuto«.

Este mensaje es muy sencillo de quitar para ello vamos a seguir este mini-tutorial:

1.- Vamos a Herramientas -> preferencias (Tools – preferences)

Preferencias VLC

2.- Abajo a la izquierda hay 2 opciones para seleccionar Sencilla y Todo (Simple – All) y pincharemos en Todo (All).

todas las preferencias de vlc

3.- En el menu de la Izquierda desplegamos el apartado de video y pinchamos en el submenú de Subtitulos/OSD (Subtitles/OSD)

VLC subtitulos osd video

4.- En el desplegable de Módulo de generación de texto, seleccionamos la opción  «Función de generador de fuente simulada» (Dummy font renderer function).

Generacion de texto vlc modulo
5.- Pinchamos en el botón de abajo a la derecha «Guardar» (Save).

Si has seguido todos los pasos, sólo tienes que cerrar VLC y al volver a abrirlo ya no nos saldrá el molesto mensaje.

Error al cargar el diseñador en Visual Studio

Visual studio logo, logotipo de microsoft

A veces cuando te pasan un proyecto para Visual Studio o lo descargas de internet, suele darnos un poco la lata. El error más común en este tipo de situaciones (salvo que sea de escritura de código), suele ser el cargar el diseñador de los forms y nos dan mensajes como estos:

No se puede mostrar el diseñador para este archivo porque ninguna de las clases que contiene se pueden diseñar.El diseñador inspeccionó las siguientes clases en el archivo: Principal --- La clase base 'System.Object' no se puede diseñar. GenExcell --- La clase base 'System.Object' no se puede diseñar. Form1 --- La clase base 'System.Object' no se puede diseñar.

Este error es fácilmente solucionable compliando el proyecto. Si a la hora de compliar nos aparece algún error (suelen ser problemas de código) lo tendremos que solucionar primero. Y en el caso peor de que nuestro error esté en algún componente del form, y al no poder verlo en el diseñador no poder modificarlo, recordemos que todo en Visual Studio tiene su código y podremos ir a la clase del formulario.designer y por ejemplo eliminar el componente que nos da la lata.

Como hacer copias de seguridad en Linux (Ubuntu server) con crontab

Logotipo de ayuda de ubuntu server

Si estas administrando un servidor Linux, en mi caso Ubuntu Server, lo normal es que necesites automatizar tareas como por ejemplo las copias de seguridad. Para la automatización de comandos podemos usar Cron que viene instalado en la mayoría de distribuciones Linux.

Para la configuración usaremos el programa crontab que viene con el paquete cron y que nos va a ayudar a programar nuestras tareas de un manera sencilla.

Vamos a hacer un ejemplo para crear copias de seguridad diarias de las carpetas de usuarios -> /home

1.- Editamos crontab desde terminal ejecutando -> sudo crontab -e

nos saldrá una pantalla parcida a la de la imagen en donde incluiremos nuestras líneas de código.

Crontab automatizacion de copias automaticas linux

2.- Introduciremos los comandos indicando cuando queremos que se ejecuten. Para ello crontab tiene un sistema muy sencillo de usar:

Cada linea de este archivo esta formada por 7 columnas

  1. Minutos (de 0 a 59)
  2. Horas (de 0 a 23)
  3. Dia (de 1 a 31)
  4. Mes (de 1 a 12)
  5. Dia de la semana (de 0 a 7, donde 7 suele indicar domingo dependiendo de la configuración del sistema)
  6. usuario (opcional)
  7. orden a ejecutar

En las cinco primeras columnas si indicamos el valor asterísco ‘*’, estaremos diciendo que lo haga en todo el rango de esos valores. Por ejemplo si ponemos esto: 0 4 * * 7 estaríamos diciendo que la tarea se ejecutara a las 4:00, todos los días, todos los messes, los días que sean domingo.

3.- Introducimos nuestro comando: -> 0 2 * * * tar -jcvf /tmp/copiaSeguridadHome.tar.bz2 /home

Con la línea introducida anteriormente tendríamos copias de seguridad todos los días del año a las 2:00 am, del directorio /home y sus subdirectorios en el archivo copiaSeguridadHome.tar.bz2 en el directorio tmp.

4.– Reiniciamos cron para que cargue la nueva configuracion: -> sudo /etc/init.d/cron restart

 

De esta forma ya tendríamos nuestras copias de seguridad automatizadas, pero se puede programar todo lo que nos imagináramos.

Como hacer un report en columnas en Crystal Reports

Si necesitas sacar el detalle de un report, en Crystal Reports, en columnas para tener el detalle expandido horizontalmente en lugar de verticalmente, puedes hacerlo de la siguiente manera.

Vas al «Section Expert» haciendo click derecho en la parte de secciones de nuestro report. Ahí marcamos la opción «Format with Multiple Columns«, para que nos salga una pestaña arriba que pone «Layout» como vemos en la siguiente imagen.

Crystal reports imprimir en columnas

Despues en la pestaña de Layout ya seleccionamos el tamaño de cada columna «Detail Size» y el tamaño entre columnas «Gap Between Details«.

Crystal Reports seccion expert impresion en columnas

Con esto ya tendremos nuestro informe en columnas.

Como formatear una cadena con ceros en SQL

Logo SQL Server

A verces para que queden mas bonitos los reports que asociaremos a una consulta SQL, necesitamos formatear ciertas cadenas de número con ceros a la izquierda.

Por ejemplo: tenemos el cliente 670 y el cliente 23755. En un listado quedarían un poco feos por la diferencia de longitud, por lo que deberíamos poner 00670 y 23755 para que quedaran bien alineados.

Para ello dentro de la consulta pondremos lo siguiente.

Select left(replace(str(campoDelIdDelCliente, 5), ‘  ‘, ‘0’), 5) as IdClienteFormateado * from Clientes