Include y Require

Para incluir archivos a nuestros scripts en PHP se puede realizar de dos maneras:

Include o Require

Cada uno realiza la misma manera pero con una pequeña diferencia notable:

Include: lee un archivo externo y lee su contenido, si el archivo a leer no se encuentra causara un warning y no detendrá la ejecución del script.

Require: a diferencia del include si no encuentra el archivo a leer require producirá un error y detendrá todo el script en ejecución.

Require_once y include_once: trabajan de forma similar a require e include respectivamente, solo con una notable diferencia: no importa las veces que incluyas un archivo en particular, require_once e include_once se leerá o interpretara una sola vez.

Generar PDFs en PHP

Para generar reportes o para guardar el contenido de la pagina en concreto en PDF, que librerías existen para obtener este resultado fácil y sencillo.

FPDF: Una clase escrita en PHP que permite generar documento PDF directamente desde el PHP, sin usar la biblioteca PDFlib.

Características básicas:

  • Elección de la unidad de medida, formato de página y márgenes
  • Gestión de cabeceras y pies de página
  • Salto de página automático
  • Salto de línea y justificación del texto automáticos
  • Admisión de imágenes (JPEG, PNG y GIF)
  • Colores
  • Enlaces
  • Admisión de fuentes TrueType, Type1 y codificación
  • Compresión de página

PDFlib: Generación y procesamiento de documentos PDF en sistemas móviles y embebidos.

R&OS: Esta clase está diseñada para proporcionar un módulo para la creación de documentos pdf dentro de PHP.

Ejemplos

DOMPDF: Es una librería PHP que te permitirá convertir HTML a PDF. Puede interpretar tags html, CSS incluidos y externos con lo cual se puede lograr documentos PDF que son el reflejo de los html

¿Qué es Zend?

Desde hace un par de años he escuchado sobre el tema de Zend/Zend Studio pero nunca me había puesto a interpretar que es en realidad un Framework o un motor. Bueno empecemos la búsqueda no debe de estar demasiado lejos este tema y si lo esta no importa porque aprenderemos mas.

Zend Framework: Framework de código abierto para el desarrollo de aplicaciones web y servicios con PHP 5. Ofrece una robusta implementación en Modelo-Vista-Controlador.

Zend Studio: Es un entorno de desarrollo que permite al programador la generación de código, asistencia de código y el análisis semántico para agilizar el desarrollo rápido de aplicaciones tanto en el lado del servidor (PHP) y el lado del cliente (JavaScript). Disponible para Windows, Mac OS y GNU/Linux.

Zend Motor: Es el motor de procesamiento para la interpretación y cifrado de código PHP como una de la más destacada. Desarrollado por ZEND para acelerar la carga de aplicaciones realizadas con PHP.

Porque es importante ZEND, porque si te quieres certificar en desarrollador PHP, ZEND es uno que ofrece este certificado (más información) Donde te preguntaran desde configuraciones del servidor, XML, seguridad y otras cosas que hay que estar bien preparado.

http://www.zend.com/services/certification/php-5-certification/

is_main_query() wordpress 3.3.1

He actualizado mi wordpress a la versión 3.3.1 y una de las mejoras que ah traído es el la función is_main_query(), “Esta práctica función te dirá si un objeto WP_Query es la consulta principal de WordPress o una secundaria.”

Ejemplos en la pagina de wordpress:

En funcionamiento seria de la siguiente manera:

Tenemos un template que se utiliza para mostrar solo una categoría en especifico, esto se usa básicamente para cuando se muestra en diferentes diseños o tiene que hacer una cosa en especial.

Según la Jerarquia de wordpress de plantillas podemos usar la siguiente:

category-$slug.php / category-$id.php / category.php

Rapidamente es: $slug es el nombre de la categoría que se mostrara en la URL, ejemplo “marca alguna” el slug seria “marca-alguna”, entonces para las opciones seria: category-marca-alguna.php / category-23.php / category.php (la plantilla general para todas las categorías).

Usaremos la siguiente category-$id.php esto quiere decir que le podemos dar o hacer algo diferente en esta plantilla para esta categoría en especifico. Colocamos el siguiente código en function.php

query_posts( "cat=1" );
echo (is_main_query())?"si":"NO";

y lo probamos en el navegador y nos dira que SI ya que esa plantilla solo muestra un solo query. Lo interesante y la función de esto es cuando existen mas loops en una plantilla y se deben de modificar y no perder configuraciones del primer query. Ejemplo:

 // Segunda consulta
query_posts( "cat=1" );
echo (is_main_query())?"si":"NO";
// The Loop
while ( have_posts() ) : the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;
// Reset Query
wp_reset_query(); //Nota si no aplicas esto el WP creera que la consulta principal no lo es.
//Consulta principal del template category-3.php
echo (is_main_query())?"si":"NO";
if ( have_posts() ) : 
    while ( have_posts() ) : the_post(); 
        echo '<li>';
        the_title();
        echo '</li>';
    endwhile; 
endif;

 

¿Lo notas?, si haces un proyecto en wp y en alguna plantilla debes de mostrar y hacer diferentes acciones esta función te ayudara bastante para no perder la referencia de la primera query.

 

Del día a día

Cada día que pasa voy aprendiendo más y más cosas y de todas ellas me apasiona mucho el tema y a veces por dedicarle a algunas más olvido de otras.

  • Configuración de un servidor en Linux.
  • Programación PHP
  • Bases de datos en MySQL
  • HTML y CSS
  • El poderosísimo jQuery
  • WordPress plugins
  • Framework CodeIgniter

Y las cosas nuevas que deseo aprender como la programación en Android, leer grandes novelas apasionantes de esas que te enganchan y hacen que quieras leer más hasta terminar el libro.

Que es jQuery

Lanzamiento de jQuery: 26 de agosto de 2006

jQuery: “jQuery es una biblioteca de JavaScript rápida y concisa que simplifica atravesando documento HTML, manejo de eventos, animación, y las interacciones Ajax para el desarrollo web rápido. jQuery está diseñado para cambiar la forma en que escribes JavaScript.”

Wikipedia

“Es una biblioteca de JavaScript, creada inicialmente por John Resig, que permite simplificar la manera de interactuar con los documentos HTML, manipular el árbol DOM, manejar eventos, desarrollar animaciones y agregar interacción con la técnica AJAX a páginas web.”

Desarrollo Web:

“Para simplificar, podríamos decir que jQuery es un framework Javascript, pero quizás muchos de los lectores se preguntarán qué es un framework. Pues es un producto que sirve como base para la programación avanzada de aplicaciones, que aporta una serie de funciones o códigos para realizar tareas habituales. Por decirlo de otra manera, framework son unas librerías de código que contienen procesos o rutinas ya listos para usar. Los programadores utilizan los frameworks para no tener que desarrollar ellos mismos las tareas más básicas, puesto que en el propio framework ya hay implementaciones que están probadas, funcionan y no se necesitan volver a programar.”

Que hace el jQuery manipula el DOM que es el que contiene todos los elementos de la pagina HTML y los edita, agrega o elimina como quieras que se comporte mientras el cliente está viendo el performance de la web.

jQuery en si no es un Framework es una librería como lo describe la propia web del jQuery. Esta librería va muy bien para aquellas personas que no tienen conocimientos de javascript y requieren hacer efectos rápidos y sencillos en su web.

Existen otras librerías para manipulación de eventos:

  • jQuery UI
  • Mootools
  • Prototype
  • Yahoo! UI Library
  • Sencha (ExtJS)

 

Que es el DOM

El DOM es el Modelo de Objetos del Documento, permite acceder y manipular las paginas XHTML como si fueran documentos XML. Es decir permite el acceso a la estructura de una página HTML mediante el mapeo de los elementos de esta página en un árbol de nodos.

Ejemplo

	<p>Primera linea</p>
	<p>Segunda linea con <a href="#">un enlace</a></p>

La etiqueta A es hijo del segundo nodo P, gráficamente seria

Los elementos son todas las etiquetas en HTML como p, div, table etc.

Para manipular estos elementos con el DOM existe la función Javascript document ejemplo.

document.getElementsByTagName("a")

La utilidad del DOM es la manipulación de de los elementos del HTML.

Realizar un update con 2 filas de la misma tabla.

Consulta MySQL Funcional:

UPDATE update_filas as up1
 
Inner Join update_filas AS up2 ON up1. id_relacion = up2. id_relacion
 
SET up1.`texto` = up2.`texto`
 
Where  up2.id_idioma  =  '1';

Detalle del problema

Tengo una tabla la cual contiene las traducciones de un x productos, los cuales cada producto se crea un INSERT en la tabla separándolo por idiomas con el ID_IDIOMAS el cual sus IDs son 1 y 2.

Si solo se cuenta con un texto traducido (Miran imagen) en el cual el ID 1 contiene el texto AAA y el ID 2 no contiene texto, pero se requiere actualizarlo con el valor del dato principal realizando una consulta MySQL con UPDATE

Para esto realizamos la siguiente consulta:

UPDATE update_filas as up1
 
Inner Join update_filas AS up2 ON up1. id_relacion = up2. id_relacion
 
SET up1.`texto` = up2.`texto`
 
Where up2.id_idioma = '1';

Y nos el resultado será el siguiente:

Si no lo ves muy claro pues podemos colocarle un texto para ver si solo afecta al campo que deseamos.

UPDATE update_filas as up1
 
INNER JOIN update_filas as up2 ON up1.id_idioma != 1
 
SET up1.`texto` = concat(up2.`texto`, ' Actualizado')
 
Where up2.id_relacion = up1.id_relacion

Resultado

Esto es muy util cuando tienes que actualizar mas de 5 tablas con el mismo detalle de que todas dependen de un dato que ya tiene los campos y replicarlos a los demás.

Saludos.

Enrique Acevedo

 

 

Facebook – No aparece “Ver la página de perfil de la aplicación”

SI has creado una nueva app en Facebook y no aparece el botón de “Ver la página de perfil de la aplicación” eh aquí una pequeña solución momentánea.

Escribir en la URL

https://www.facebook.com/dialog/pagetab?app_id=[APP-ID]&redirect_uri=http://www.tudominio]

Después, remplaza:

  1. [APP-ID] por el ID de tu app.
  2. [http://www.tudominio] por el de Facebook canvas o URL de la pestaña

Y saldrá la pestaña para agregarla a nuestra página.

Extra información:
A partir del 10 de Diciembre del 2011 FB anuncio que empezara a eliminar todas las páginas de perfil de aplicación el 1 de febrero de 2012. Indican que deben de actualizar todas tus aplicaciones antes de la fecha indicada, bajar la información relacionada para que no se pierdan datos y que después de la fecha se perdara el redireccionamiento al perfil de la aplicación (No lo entiendo bien y no quiero confundir).

Para nuevas aplicaciones (Que es nuestro caso)

Nuevas aplicaciones, no obtendrá automáticamente una página de perfil de la aplicación. En cambio, las nuevas aplicaciones pueden optar por crear una página de Facebook de la aplicación revelador. Sólo tienes que visitar la sección de información de contacto en la ficha Opciones avanzadas de la aplicación Dev y haga clic en “Crear página de Facebook” para crear una nueva página de Facebook.

Mas información  Removing App Profile Pages

 

Variables POST, GET, SESSION convertirlas a variables globales

Bueno estaba trabajando en la oficina cuando me pidieron publicar algo, me fui a al administrador y le di agregar y no realizaba ninguna accion, asi que recorde que meses atras habian restaurado el servidor, asi que pense “Bueno esto no me conpete realizarlo si no al encargado del area“, si antes funcionaba, debe de funcionar si solamente restauro el servido, guardo y copio la info que existia. Bueno me tranquilice y decidi que lo mejro era hecharle un ojo y me encontre lo siguiente:

Existien variables llamadas por cita run ejemplo: $tipo las cuales venian de un formulario donde efectivamente exite un campo que trae el valor de Tipo, lo que pense que talvez faltaba asignarle esto:

$tipo = $_POST['tipo'];

Pero imaginate son muchos scripts como resolverlos, asi que lei por un rato y encontre esto:

Supongamos que la variable viene desde un formulario via POST, el código decía algo asi …

<?php
 
if ($variable == “algo”)
{
echo “esta variable hace alguna cosa”;
}
 
?>

Es decir, le faltaba esta instrucción antes del if

<?php
 
$variable = $_POST["variable"]; // le faltaba esta instrucción antes del if
 
if ($variable == “algo”)
{
echo “esta variable hace alguna cosa”;
}
 
?>;

Tenia 2 opciones, o me ponía a buscar TODAS estas situaciones y las arreglaba una a una, o colocaba un pedazo de código en archivo al que todos los demás le hacían un include que me corrigiera este “error” propio de aquellos que estamos a trabajar con los “servidores en producción”, o sea, con las variables globales en On.

Bueno, después de muchos cabecearme encontré la solución, y aquí la muestro a todos uds.

<?php
 
if($_POST)
{
$keys_post = array_keys($_POST);
foreach ($keys_post as $key_post)
{
$$key_post = $_POST[$key_post];
error_log(“variable $key_post viene desde $ _POST”);
}
}
 
if($_GET)
{
$keys_get = array_keys($_GET);
foreach ($keys_get as $key_get)
{
$$key_get = $_GET[$key_get];
error_log(“variable $key_get viene desde $ _GET”);
}
}
 
if($_SESSION)
{
$keys_sesion = array_keys($_SESSION);
foreach ($keys_sesion as $key_sesion)
{
$$key_sesion = $_SESSION[$key_sesion];
error_log(“variable $key_sesion viene desde $ _SESSION”);
}
}
 
?>;

Son básicamente 3 if que hacen lo mismo, toman las claves del arreglo en cuestión (SESSION , POST o GET) y generan una “variable variable”, creo que hay un articulo en desarrolloweb que habla de este tema, y esto hace toda la magia, el error_log fue una implementación para ver que variables se iban ocupando (si no tienes acceso al servidor puedes sacarlo sin problemas).

Para alguien que guste de las funciones puede también guardarlo como función y llamarla cuando lo necesite. O también iterar el proceso con las 3 variables en cuestión para no tener que hacer 3 if, o pasarle cualquier arreglo para que haga el mismo proceso … en fin, la idea esta, solo espero haber contribuido en algo al ahorro de tiempo de alguno de ustedes.