MySQLi Extension (MySQL Improved)
Agosto 4th, 2009 por jjeb™Sigo sufriendo un poco a la hora de actualizar el blog, pero tenía tiempo queriendo escribir un poco sobre este tema y ahora que me decidí he encontrado unos excelentes post acerca de MySqli y PDO que he decidido poner solo unas pequeñas definiciones y enlazar este post a los que he leído, espero sea de su agrado:
¿Qué es Mysqli ?
Básicamente es una extensión que nos permite conectarnos a mysql, claro con algunas ventajas, viene incluida en PHP5 o superiores
Ventajas:
- Una Interfaz orientada a objetos
- Posibilidad de seguir programando por el método procedural
- Se incorpora un protocolo binario mejor que el anterior
- Se aumenta la velocidad de ejecución en muchas funciones
- Posibilidad de consultas preparadas (Mayor seguridad y velocidad)
- Transacciones (ACID)
- Mayor seguridad en las conexiones
Aquí les dejo un buen artículo sobre el mysqli, en un rato mas subo un post sobre PDO también. Espero les sirva la información.
http://dealnews.com/developers/php-mysql.html En ingles
http://www.tufuncion.com/select-mysqli-pdo-php En español
Tags: base de datos, desarrollo web, mysql, php, Programación, web
Como crear Temas para WordPress
Junio 8th, 2009 por jjeb™Por cuestiones de trabajo descuide este blog, pero creo que es el momento de retomarlo y lo hago con un pequeño video/tutoríal que me paso mi buen amigo y excelente desarrollador Héctor Guedea para la creación de temas para wordpress, son 3 videos con una duración de alrededor de 120 minutos con una explicación clara de la estructura y un ejemplo para facilitarnos el trabajo.
Y pues buenos la liga de donde puedes descargar el ejemplo y los videos es:
http://css-tricks.com/designing-for-wordpress-complete-series-downloads/
Disfrútenlo y espero no dejar este blog varado una vez mas :s
DataGrid(jTPS) en utilizando javascript (jquery)
Diciembre 22nd, 2008 por jjeb™jTPS es un plugin para jqury que nos permite implementar un “DataGrid “, tienen como características tiene, ordenamiento ascendente y descendente, paginación, variar las cantidades de la paginación.:
Para su utilización necesitaremos los descargar los archivos de la siguiente dirección: http://www.overset.com/2008/08/30/animated-sortable-datagrid-jquery-plugin-jtps también los archivos vienen con el ejemplo que esta al final del documento.
La estructura de la tabla a utilizar es la siguiente:
<table id="demoTable" style="border: 1px solid #ccc;" border="0" cellspacing="0" width="700"> <thead> <tr> <th><strong>Col 1</strong></th> <th>Col 2</th> <th>Col 3</th> </tr> </thead> <tbody> <tr> <td>información 1</td> <td>información 1</td> <td>información 1</td> </tr> </tbody> <tfoot> <tr> <td colspan="3"> <div class="paginationTitle">Página</div></td> </tr> </tfoot></table>
Agregamos las librerías (jquery.js, jTPS.js) y la hoja de estilo (jTPS.css) que descargamos anteriormente:
<script language="JavaScript" type="text/javascript" src="jTPS/jquery.js"></script> <script language="JavaScript" type="text/javascript" src="jTPS//jTPS.js"></script>
<link rel="stylesheet" type="text/css" href="jTPS/jTPS.css">
Lo siguiente es agregar el código en javascript (jquery) :
$(document).ready(function () { $('#demoTable').jTPS( {perPages:[5,12,15,50,'Todos'], // demoTable es el id de nuestra tabla, y especificamos los modos de paginación scrollStep:1,scrollDelay:30, // Retardo en el desplazamiento de la páginas.. perPageText:'Cantidad por página ' // Texto que aparece en la sección inferior de la tabla.. } ); $('#demoTable tbody tr:not(.stubCell)').bind('mouseover mouseout', function (e) { e.type == 'mouseover' ? $(this).children('td').addClass('hilightRow') : $(this).children('td').removeClass('hilightRow');// Iluminado de las filas.. } ); });
Por último dejo una imagen de cómo se vería el grid, el demo y los archivos para su descarga:

Tags: css, grid, html, javascript, jquery
Creación de disparadores(triggers) en MYSQL
Diciembre 14th, 2008 por jjeb™Mysql es por el gestor de base de datos más utilizado cuando se programa con php, a partir de la versión 5.0.2 se han implementado el soporte para disparadores (triggers), estes es un pequeño ejemplo de la utilización de los disparadores y pues bueno iniciamos:
¿Qué son los disparadores (triggers)?
Un disparador es un objeto con nombre dentro de una base de datos el cual se asocia con una tabla y se activa cuando ocurre en ésta un evento en particular. Actualmente, el soporte para disparadores es básico, por lo tanto hay ciertas limitaciones en lo que puede hacerse con ellos.
Estructura de los disparadores:
CREATE TRIGGER nombre_disp momento_disp evento_disp
ON nombre_tabla FOR EACH ROW sentencia_a_realizar
Ejemplo:
Creamos 3 disparadores sobre la tabla de usuarios, estos nos dirán las acciones que se realicen sobre esta (inserción, modificación o borrado).
La estructura de las tablas serán las siguientes:
/* Creamos la tabla de acciones*/ CREATE TABLE acciones( fecha DATE, hora TIME, accion VARCHAR(50), idusuario int ); /*Creamos la tabla de usuarios*/ CREATE TABLE usuarios( idusuario integer PRIMARY KEY, nombre VARCHAR(50), apellido VARCHAR(50) );
Las sentencias para los disparadores son:
/*Disparador para el registro de inserciones*/ DELIMITER | CREATE TRIGGER inser_usuarios BEFORE INSERT ON usuarios FOR EACH ROW BEGIN INSERT INTO acciones VALUES(CURDATE(),CURTIME(),'Registro insertado',new.idusuario); END; | DELIMITER ; /*Disparador para el registro modificado*/ DELIMITER | CREATE TRIGGER update_usuarios BEFORE UPDATE ON usuarios FOR EACH ROW BEGIN INSERT INTO acciones VALUES(CURDATE(),CURTIME(),'Registro Modificado',old.idusuario); END; | DELIMITER ; /*Disparador para el registro eliminado*/ DELIMITER | CREATE TRIGGER delete_usuarios BEFORE DELETE ON usuarios FOR EACH ROW BEGIN INSERT INTO acciones VALUES(CURDATE(),CURTIME(),'Registro eliminado',old.idusuario); END; | DELIMITER ;
Una pequeña explicación de las sentencias utilizadas es:-
- DELIMITER: los disparadores (Triggers), están formados por varias instrucciones, por lo tanto, antes de comenzar su definición, debes especificar qué carácter delimita (o separa) siguiente.
- CREATE TRIGGER: Es la sentencia de creación del disparador.
- BEFORE: Indica el momento de acción del disparador
- DELETE: Indica el evento que activará al disparador
- FOR EACH ROW: Define lo que se ejecutará cada vez que el disparador se active, lo cual ocurre una vez por cada fila afectada por la sentencia activadora.
Las palabras clave OLD y NEW permiten acceder a columnas en los registros afectados por un disparador. (OLD y NEW no son sensibles a mayúsculas). En un disparador para INSERT, solamente puede utilizarse NEW.; ya que no hay una versión anterior del registro. En un disparador para nom_colDELETE sólo puede emplearse OLD., porque no hay un nuevo registro. En un disparador para nom_colUPDATE se puede emplear OLD. para referirse a las columnas de un registro antes de que sea actualizado, y nom_colNEW. para referirse a las columnas del registro luego de actualizarlo.nom_col
Una columna precedida por OLD es de sólo lectura. Es posible hacer referencia a ella pero no modificarla. Una columna precedida por NEW puede ser referenciada si se tiene el privilegio SELECT sobre ella. En un disparador BEFORE, también es posible cambiar su valor con SET NEW. si se tiene el privilegio de nombre_col = valorUPDATE sobre ella. Esto significa que un disparador puede usarse para modificar los valores antes que se inserten en un nuevo registro o se empleen para actualizar uno existente.
En un disparador BEFORE, el valor de NEW para una columna AUTO_INCREMENT es 0, no el número secuencial que se generará en forma automática cuando el registro sea realmente insertado.
Podemos revisar que todo este correcto con las siguientes sentencias:
INSERT INTO usuarios VALUES (1,'Sofia','Hernández Maya'); INSERT INTO usuarios VALUES (2,'Emilio','Díaz Esparza'); INSERT INTO usuarios VALUES (3,'Juan','Esparza'); /*Verificamos las inserciones*/ select * from usuarios; /*Revisamos la tabla de acciones */ select * from acciones; /*Modificamos 1 regitro*/ update usuarios set apellido = 'Hernández' where idusuario=1; /*Revisamos la tabla de acciones */ select * from acciones; /*Eliminamos 1 regitro*/ delete from usuarios where idusuario=3; /*Revisamos la tabla de acciones */ select * from acciones;
Tags: base de datos, mysql
Diseño de cajas de mensaje en CSS, muy util en php
Diciembre 8th, 2008 por jjeb™Bueno esta información es para los que como yo somos un poco malos en cuanto a diseño y muchas veces estamos quebrándonos la cabeza para hacer que el mensaje o respuesta del sistema se vea de una manera agradable, y pues bueno les dejo una css que me encontré en la web hace ya un tiempo y que me ha sido de una gran ayuda, viene con un set de iconos que se encuentran en este sitio y algunos ejemplo de las salidas son las siguientes:
El código en css es el siguiente que me parece que es lo suficientemente claro:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /*Css para los mensajes..*/ .info, .success, .warning, .error, .validation { border: 1px solid; margin: 10px 0px; padding:15px 10px 15px 50px; background-repeat: no-repeat; background-position: 10px center; font-family:Arial, Helvetica, sans-serif; font-size:13px; width:400px; } .info { color: #00529B; background-color: #BDE5F8; background-image: url('info.png'); } .success { color: #4F8A10; background-color: #DFF2BF; background-image:url('success.png'); } .warning { color: #9F6000; background-color: #FEEFB3; background-image: url('warning.png'); } .error { color: #D8000C; background-color: #FFBABA; background-image: url('error.png'); } |
Y la implementación es muy simple, acá un ejemplo:
Mensajes en css
1 2 3 4 5 6 7 8 9 10 11 12 | Mensajes en css <div class="error"><strong>Este es un error</strong></div> <div class="info"><strong>Esta puede ser de información</strong></div> <div class="success"><strong>Agregando un pequeña lista </strong> <ul> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> </ul> </div> <div class="warning"> Otro ejemplo</div> |
es cuestión de sólo llamar la clase.
Y bueno para terminar les dejo la descarga de la hoja de estilo y las imágenes con el set antes mencionado.
[Ver online] [Descargar]
Tags: css, diseño, Programación, web
Libros: javascript, ajax, css, xhtml y php
Diciembre 8th, 2008 por jjeb™Continuando con la colección de libros, ahora dejo algunos muy buenos, que son los siguientes:
PHP [Descargar]
Introducción a javascript [Descargar]
Introducción al xhtml [Descargar]
Introducción al Css [Descargar]
Introducción al Ajax [Descargar]
El libro de php es del sitio de Desarrollo Web y el resto son de librosweb.
Espero sean de su agradado.
Tags: ajax, css, javascript, php, xhtml
Libro: “Building Scalable Websites”
Noviembre 30th, 2008 por jjeb™Esta es otra entrada de las que tenía en la dirección pasada es un buen libro que todo desarrollador debería tener a la mano.
El libro está escrito por el programador jefe de Flickr, hasta donde he leido me parece directo. Un excelente libro..
Tags: desarrollo web, Libros, mysql, php, Programación
Combos (Combobox) Dependientes Utilizando PHP, Mysql y jQuery (Javascript)
Noviembre 30th, 2008 por jjeb™La idea es generar una relación entre 3 combos, en este caso utilizaremos país -> estado -> ciudad.
Para esto utilizaremos javascript (jquery), PHP y Mysql. Iniciaremos con la estructura de la base de datos para ellos necesitaremos 3 tablas, que son las siguientes:
País:
CREATE TABLE `pais` ( `idpais` int(10) unsigned NOT NULL auto_increment, `pais` varchar(50) default NULL, PRIMARY KEY USING BTREE (`idpais`) ) ENGINE=MyISAM;
Estado:
CREATE TABLE `estado` ( `idestado` int(10) unsigned NOT NULL auto_increment, `estado` varchar(50) default NULL, `pais` int(11) NOT NULL default '0', PRIMARY KEY USING BTREE (`idestado`) ) ENGINE=MyISAM;
Ciudad:
CREATE TABLE `ciudad` ( `idciudad` int(10) unsigned NOT NULL auto_increment, `ciudad` varchar(50) NOT NULL default ”, `estado` int(11) NOT NULL default '0', `pais` int(10) unsigned NOT NULL default '0', PRIMARY KEY USING BTREE (`idciudad`) ) ENGINE=MyISAM;
Los combos sera algo asi:
<select id="pais" name="pais"> <option selected="selected" value="0">---------</option> <option value="<?=$rs[">"></option> </select> <div> <select id="estado" name="estado"> <option selected="selected" value="0">----------------</option> </select></div> <div> <select id="ciudad" name="ciudad"> <option selected="selected" value="0">-------------------</option> </select></div>
Nuestro código en javascript será el siguiente:
$(document).ready(function(){ $("select").change(function(){ // Vector para saber cuál es el siguiente combo a llenar var combos = new Array(); combos['pais'] = "estado"; combos['estado'] = "ciudad"; // Tomo el nombre del combo al que se le a dado el clic por ejemplo: país posicion = $(this).attr("name"); // Tomo el valor de la opción seleccionada valor = $(this).val() // Evaluó que si es país y el valor es 0, vacié los combos de estado y ciudad if(posicion == 'pais' & valor==0){ $("#estado").html(' ----------------') $("#ciudad").html(' ----------------') }else{ /* En caso contrario agregado el letreo de cargando a el combo siguiente Ejemplo: Si seleccione país voy a tener que el siguiente según mi vector combos es: estado por qué combos [país] = estado */ $("#"+combos[posicion]).html('Cargando...') /* Verificamos si el valor seleccionado es diferente de 0 y si el combo es diferente de ciudad, esto porque no tendría caso hacer la consulta a ciudad porque no existe un combo dependiente de este */ if(valor!="0" || posicion !='ciudad'){ // Llamamos a pagina de combos.php donde ejecuto las consultas para llenar los combos $.post("combos.php",{ combo:$(this).attr("name"), // Nombre del combo id:$(this).val() // Valor seleccionado },function(data){ $("#"+combos[posicion]).html(data); //Tomo el resultado de pagina e inserto los datos en el combo indicado }) } } }) })
Muy bien hasta este momento tenemos las dependencias es decir que combo carga a el siguiente, ahora necesitamos la página donde tendremos información que asignaremos en estos.
combos.php
'.htmlentities($rs["estado"]).''; break; } case "estado":{ $res = mysql_query("SELECT idciudad,ciudad FROM ciudad WHERE estado= $idcombo order by ciudad ASC"); while($rs = mysql_fetch_array($res)) echo ''.htmlentities($rs["ciudad"]).''; break; } } ?>
La mayor parte del código viene en su mayoría comentado por lo que no me parece necesario explicarlo.
Tags: javascript, jquery, mysql, php
Primer Post
Noviembre 28th, 2008 por jjeb™
Bienvenidos a este pequeño espacio donde encontraran un poco de información de mi interés como lo es: programación, internet, software entre otras muchas cosas .
Y pues si bien inicie esta idea con en la dirección http://jjeb.wordpress.com/ me parece que la mejor forma de darle un poco mas de seriedad y atención de mi parte es comprar un dominio… y aquí estoy.. espero que sea de agrado …
