viernes, 28 de junio de 2013

Como hacer un slideshow simple

Muchos de nosotros creo que hemos querido saber ¿Como hacer un Slideshow rápido, fácil y sencillo con jquery?. Bueno pues ahora sabremos como hacerlo.
Primero tenemos que descargar, tanto el archivo de la librería de jQuery como el archivo Cycle.jQuery.
Debemos vincularlos con el archivos con el que vamos a trabajar.
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.cycle.all.js"></script>
Debemos tener en cuenta que primero es necesario que la librería de jQuery este vinculada primero, ya que el plugin Cycle.jQuery necesita de esa librería.
Abrimos un SCRIPT de tipo texto Javascript, con el que vamos a inicializar una función que hará el Slideshow ala cargar la pagina.
$(document).ready(function() {
$('.slideshow').cycle({fx: 'Escribimos el efecto que queramos'});
});
Con esto estamos diciendo que: al cargar el documento, ejecute la siguiente función. Dicha función hace referencia a cualquier elemento que tenga la clase (por el “.” si fuera id sería “#”) slideshow y le escribimos cycle para convertirlo en un slideshow, con el efecto que nosotros queramos.
Los efectos que existen son:
  • blindX
  • blindY
  • blindZ
  • cover
  • curtainX
  • curtainY
  • fade
  • fadeZoom
  • growX
  • growY
  • scrollUp
  • scrollDown
  • scrollLeft
  • scrollRight
  • scrollHorz
  • scrollVert
  • shuffle
  • slideX
  • slideY
  • toss
  • turnUp
  • turnDown
  • turnLeft
  • turnRight
  • uncover
  • wipe
  • zoom
A mi en lo personal me gusto mucho el turnLeft y el shuffle.
Nos falta una de las cosas mas importantes, las imágenes que se van a mostrar.
En un DIV con la clase que si recuerdan es slideshow. Y dentro del DIV ponemos todas las imágenes que queramos que aparezcan en el Slider.
Por ejemplo:
<div class="slideshow">
    <img src="http://cloud.github.com/downloads/malsup/cycle/beach1.jpg" width="550" height="300" />
    <img src="http://cloud.github.com/downloads/malsup/cycle/beach2.jpg" width="550" height="300" />
    <img src="http://cloud.github.com/downloads/malsup/cycle/beach3.jpg" width="550" height="300" />
    <img src="http://cloud.github.com/downloads/malsup/cycle/beach4.jpg" width="550" height="300" />
    <img src="http://cloud.github.com/downloads/malsup/cycle/beach5.jpg" width="550" height="300" />
</div>
Con esto ya tenemos un bonito Slideshow.

Espacio en blanco html

Muchos de vosotros habéis tenido que poner alguna vez algún espacio en blanco o más de uno en HTML, asique hoy vamos a ver como ponemos un espacio en blanco en html tal que funcionará como un caracter cualquiera:

&nbsp;

Poniendo esto en el body del documento html lo interpretara como un carácter pero en blanco.

Ejemplo:

<html>
<head>
</head>
<body>


<p>El caballo salió de  &nbsp;&nbsp;&nbsp;&nbsp; paseo</p>


</body>
</html>

Lo que hace el &nbsp; es añadir más espacios entre "de" y "paseo" ya que por defecto aunque los pongas con la tecla espacio solo te cogerá uno.

lunes, 24 de junio de 2013

Crear un enlace en un div completo (section en html5)

Hoy veremos como crear un div enlazado, es decir pinchemos donde pinchemos dentro del div (section en html5) se ejecutará el enlace. Para ello vamos a usar una función javascript muy simple que será necesaria.¡¡ No le tengamos miedo al javascript!! (Quizás habrá un blog de javascript ñeñeñeñeñe):

 <div onClick="location.href='www.phpciones.blogspot.com'">

Todo esto estará enlazado

</div>


En HTML 5:
 <section onClick="location.href='www.phpciones.blogspot.com'">

todo esto estará enlazado

</section>

sábado, 22 de junio de 2013

Crear un div que aparezca al pasar el raton por encima en html y css

 Hoy vamos a ver como crear un llamado toolstip, un toolstip es un div que aparece encima de otro elemento mostrando una breve descripción de él o cualquier otro dato de interés cuando se pasa el ratón por encima. Se puede hacer de muchas maneras pero hoy lo vamos hacer en html y css.

Ejemplo:





Es más sencillo de lo que parece, aquí viene el código css:

.tooltip {
    display: inline;
    position: relative;
    opacity: .95;
   -moz-opacity: .95;
   filter:alpha(opacity=95);

  }
  .tooltip:hover:after {
    /*top: 20px; cuadrado debajo*/
    bottom:26px;/* cuadrado Encima*/   
    content: attr(original-title); /* este es el texto que será mostrado */
    left: 20%;
    position: absolute;
    z-index: 500;
    /* el formato gráfico */
   /*background: rgba(255,255,255, 0.2) ;*/
    background: orange ;
    border-radius: 5px;
    color: #FFF; /* el color del texto */
    font-family: Georgia;
    font-size: 12px;
    padding: 5px 15px;
    text-align: center;
    text-shadow: 1px 1px 1px #000;
    width: 150px;

  }
  .tooltip:hover:before {
    /*top: 20px; triangulo debajo*/
    bottom:20px;/* triangulo Encima*/
    content: "";
    left: 50%;
    position: absolute;
    z-index: 500;
    /* el triángulo inferior */
    border: solid;
    /*border-color: rgba(255,255,255, 0.2) transparent;*/
    border-color: orange transparent;
    /* border-width: 0 6px 6px 6px; Triangulo sentido arriba*/
    border-width: 6px 6px 0 6px; /* Triangulo sentido abajo*/

  }


Ahora lo único que falta es llamarlo desde el HTML tan sencillo cómo:

 <a href="#" original-title="Desarrollado por empline" class="tooltip">un ejemplo</a>

Podeis modificarlo para adaptarlo como querais, espero que os haya servido.



lunes, 17 de junio de 2013

Switch en php

La sentencia switch funciona como si fueran muchos if anidados dependiendo de los casos(case).

La sentencia switch evalúa la expresión y dependiendo del valor de la expresión, así se llevará a cabo un "caso" u otro. La sintanxis de SWITCH es la siguiente:
switch(expresión){
case 1:
sentencias a ejecutarse en caso de que expresión valga 1;
break;
case 2:
sentencias a ejecutarse en caso de que expresión valga 2;
break;
default:
sentencias a ejecutarse en caso de que expresión no cumpla con ninguno de los valores anteriores;
}
Como podrán apreciar, la sentencia break se ha colocado al final de cada posible caso de valor de expresión, diciéndole a PHP que, si el valor de un caso específico se cumple, el siguiente caso no habrá de ser evaluado, sino que el flujo de nuestro progama continuará inmediatamente después de la sentencia SWITCH. Además, noten la presencia de la palabra default, la cual está en nuestro SWITCH como un salvavidas, pues en caso de que expresión no concuerde con ninguno de los posibles casos, la sentencia default se ejecutará.
Ejemplo:
<?php
$nombre = "Eva";
switch($nombre){
case "Adan":
echo "El nombre es Adán";
break;
case "Abel":
echo "El nombre es Abel";
break;
case "Eva":
echo "El nombre es Eva";
break;
default:
echo "No hay nombre que concuerde";
}
echo "<BR>Esto está fuera de SWITCH";
?>

viernes, 7 de junio de 2013

Replicar dos bases de datos


Replicación: replica una BD Mysql (MASTER) en una o varias BDs MySQL (SLAVEs) en un solo sentido (MASTER -> SLAVE)

Para implementar una sincronización en ámbos sentidos, debemos usar MySQL Cluster o crear una sincronización oneway circular. Lo veremos en un próximo artículo.

Por defecto es una replicación asincrona (no necesita conexión continua, no hay problemas por fallos en al conexión).

La replicación se basa en el mecanismo binary logging. Para cada sentencia aplicada en la BD MASTER se escribe un registro (evento) en el binary log, la BD SLAVE descarga y lee el binary log del MASTER y reproduce cada sentencia aplicada a la BD MASTER en la BD SLAVE).

Cuando configuramos el binary logging en el server MASTER, el motor MySQL crea un fichero con el prefijo que le indiquemos, donde se incluirá todos los comandos SQL (sentencias) que modifiquen datos en la(s) base(s) de datos. Este archivo se guardará en el directorio de datos. MyQSL creará el archivo nombrandolo con el prefijo indicado en el archivo de configuración y un número. Este número se incrementará cada vez que se inicie el servidor o cuando se vuelquen los registros.

 Tareas a realizar:
  • En el MASTER: habilitar binary logging y configurar un único server ID
  • En cada SLAVE: configurar un único server ID
  • Antes de crear la BD replicada, debemos anotar la posición del Binary Log en el MASTER. Esto es necesario para que el SLAVE sepa a partir de qué evento debe empezar a sincronizar.
  • Para configurar el SLAVE necesitaremos necesitaremos el nombre/IP del servidor MASTER, user/password de MySQL, nombre del archivo Binary Log y posición.

Configuración del MASTER

Para configurar el Binary Log y server ID único  (nº entero entre 1 y 2^32-1) necesitamos apagar el servidor MySQL y editar el archivo de configuración my.cnf ó my.ini. Descomentar o añadir las líneas si no aparecen en el archivo de configuración.

Opcionalmente podemos seleccionar que solo se guarden en el binary logging las sentencias de una o varias BDs con la opción binlog_do_db (si no añadimos esta opción, se guardarán todas las sentencias de modificación que afecten a todas las bases de datos). En este caso solo se guardará las sentencias que se hagan posteriores a un USE sobre la BD seleccionada.
Tambien podemos seleccionar las BDs a ignorar para registrar las sentencias añadiendo la opción binlog_ignore_db en nuestro archivo de configuración.

Ejemplo: vamos a establecer un prefijo para nuestro archivo de Binary Log  de mysql-bin y un server ID de 1, además vamos a especificar que se guarden en el binary logging las sentencias que afectan unicamente a la dbname1 y dbname2,por lo que el archivo de configuración quedaría:

[mysqld]
log-bin=mysql-bin
server-id=1
binlog_do_db=dbname1
binlog_do_db=dbname2

Después de los cambios, reiniciar el servidor MySQL.
Nota: para transacciones usando InnoDB con transacciones, establecer innodb_flush_log_at_trx_commit=1 y sync_binlog=1 en el archivo my.cnf del master.
Nota: aseguraté que la opción skip-networking no está habilitada, o la sincronización fallará. En algunos sistemas, esta opción se denomina bind-address to 127.0.0.1, para permitir toda comunicación debemos asignar el valor bind-address=0.0.0.0


Configuración del SLAVE 

Para configurar el SLAVE hemos de establecer un server ID único  (distinto del MASTER u otros SLAVEs) y para ello necesitamos apagar el servidor MySQL y editar el archivo de configuración my.cnf ó my.ini al igual que en el MASTER.
Ejemplo:

[mysqld]
server-id=2

Después de los cambios, reiniciar el servidor MySQL.
Nota: si estamos configurando varios SLAVEs, el valor de server ID ha de ser único.
Nota: en ciertas ocasiones hemos de añadir en el archivo my.cnf ó my.ini del SLAVE la línea


report-host=hostname-or-IP-of-MASTER

 para que el comando 'show slave hosts' ejecutado en el MASTER funcione correctamente.


Creando un usuario para la replicación 

Cada SLAVE se conectará al MASTER usando un user/pwd de MySQL, por lo que habrá que crear tal usuario en el MASTER para dar acceso al(los) SLAVE(s). Este usuario deberá tener el privilegio REPLICATION SLAVE. Se podría crear una cuenta para cada SLAVE o una general para todos. No es necesario crear una cuenta para la replicación, pero hay que tener en cuenta que el user/pwd de esta cuenta se almacenará en texto plano en el archivo master.info. Por tanto es recomendable crear el usuario específico por cuestiones de seguridad.

Un ejemplo sería:

mysql> CREATE USER 'repli'@'SLAVE-host-or-IP' IDENTIFIED BY 'replipass';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repli'@'SLAVE-host-or-IP';

 para que el comando 'show slave hosts' ejecutado en el MASTER funcione correctamente.

Nota: si cambiamos el nombre del host, deberemos hacer un FLUSH HOSTS para reiniciar el host cache de MySQL.


Obtener las coordenadas del Binary Log en el MASTER

Si nuestra BD a replicar contiene datos, antes de replicar deberemos volcar la información en SLAVE server. Para ello pararemos la ejecución de sentencias de escritura sobre el MASTER, obtendremos las coordenadas del Binary Log y haremos un volcado de datos (dump).
Los pasos serán:

1. Entrar en la consola MySQL y bloquear la escritura de tablas:

mysql> FLUSH TABLES WITH READ LOCK;

Nota: mientras no salgamos de la sesión, las tablas permanecerán en modo lectura (READ).
Nota: para tablas InnoDB, el comando FLUSH TABLES WITH READ LOCK también bloquea las operaciones COMMIT.

2. En una sesión diferente del MASTER, vamos a obtener las coordenadas del Binary Log (nombre del actual archivo binary log y su posición de ejecución).

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |      107 | pruebarepli  |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

 Nos muestra el nombre del archivo donde guarda las sentencias (mysql-bin.000003), y la posición desde que se la que se copiarán las nuevas sentencias (107). Además nos muestra las BD a registrar y las BDs a ignorar. Guardas esta información para la configuración del SLAVE.



Copia de seguridad del MASTER e importación en el SLAVE

1. Hacer una copia de la BD
Mientras mantenemos en una sesión el FLUSH TABLES WITH READ LOCK, ejecutaremos  en una sesión distinta mysqldump para hacer un backup de la BD MASTER:

shell# ./mysqldump --opt --databases pruebarepli -u root -p > pruebarepli_backup.sql

2. Anular el READ LOCK, si está todavía vigente. Para ello podemos cerrar la sesión abierta con READ LOCK o ejecutar el siguiente comando:

mysql> UNLOCK TABLES;

3. Importar el backup en el SLAVE, utilizaremos el siguiente comando en el servidor SLAVE:

mysql> mysql -u root -p < pruebarepli_backup.sql;


Establecer los parámetros del MASTER en el SLAVE

Lo primero de todo es establecer en el archivo de configuración del SLAVE el server ID.
Nuestro ejemplo será:

[mysqld]
server-id=2

Si configuramos diferentes SLAVEs, los ID's correspondientes han de ser distintos.
Reiniciamos el servidor del SLAVE.

Continuamos estableciendo los parámetros de comunicación entre el SLAVE y el MASTER (los cuales hemos ido recopilando en los pasos anteriores), para lo que ejecutaremos lo siguiente sobre la consola del SLAVE:

mysql> CHANGE MASTER TO
->     MASTER_HOST='master_host_name',
    ->     MASTER_USER='replication_user_name',
    ->     MASTER_PASSWORD='replication_password',
    ->     MASTER_LOG_FILE='recorded_log_file_name',
    ->     MASTER_LOG_POS=recorded_log_position; 

En nuestro ejemplo será:

mysql> CHANGE MASTER TO
->     MASTER_HOST='IP_servidor',
    ->     MASTER_USER='repli',
    ->     MASTER_PASSWORD='replipass',
    ->     MASTER_LOG_FILE='mysql-bin.000003',
    ->     MASTER_LOG_POS=107; 


Arrancar el SLAVE

Para finalizar arrancar el SLAVE con el siguiente comando:

mysql> START SLAVE;



Para finalizar mostramos una captura de pantalla del comando show slave hosts ejecutado en en la consola del MASTER para corroborar la conexión entre MASTER-SLAVE. Confirmamos que se produce la actualización de la BD SLAVE ante una inserción de datos en la BD MASTER.







Source: http://dev.mysql.com/doc/refman/5.7/en/replication.html

Conectarte a una base de datos remota desde consola

Desde window, o cualquier otro sistema operativo, ejecutamos el siguiente comando para acceder a la consola mysql del servidor.:

mysql -h Dirección ip del servidor: ejemplo : 192.192.2.1 -u usuario -p PaswordUsuario

Ya no teneis excusa para no tener una base de datos remota!!

miércoles, 5 de junio de 2013

Crear una vista en sql

Una vista es una alternativa para mostrar datos de varias tablas. Una vista es como una tabla virtual que almacena una consulta. Los datos accesibles a través de la vista no están almacenados en la base de datos como un objeto.


En resumidas cuentas una vista permite coger los datos que se quieran de una tabla concreta evitando así mostrar datos no necesarios a cualquier usuario de la aplicación, vamos al código:

CREATE VIEW vista1 AS
(select usuario,fecha from audicion
)

Una vez que tenemos la vista creada solamente tenemos que hacer un select de la vista de la siguiente manera:

Select * from vista1

Es una alternativa para filtrar que datos se quieren mostrar, realmente no es una tabla física aunque aparezca como tal. Es muy útil cuando cambias la logica de la base de datos, no tendrias que cambiar nad dela aplicación.

Crear un trigger en base de datos

Un trigger (o disparador) en una Base de datos, es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación. Dependiendo de la base de datos, los triggers pueden ser de inserción (INSERT), actualización (UPDATE) o borrado (DELETE). Algunas bases de datos pueden ejecutar triggers al crear, borrar o editar usuarios, tablas, bases de datos u otros objetos.

En este caso la funcionalidad será el insertar un id de un registro borrado en otra tabla de la base de datos, para poder hacer un historial de todo lo que se ha borrado, vamos al código.

 /////////// Creación de trigger///////////////


CREATE TRIGGER (Nombre del trigger sin parentesis) BEFORE DELETE   
ON tabla_del_registro_que_se_borra
FOR EACH ROW

Insert Into tabla (id_campo,id_campo_foraneo)
 Values ('', old.id_de_la_otra_tabla) ;

////////////////////////////////////////////////////////////////////////////////

Una vez ejecutado habremos creado el trigger, y al borrar un registro de la tabla_del_registro_que_se_borra se insertara un registro el la tabla tabla

martes, 4 de junio de 2013

Actualización de un registro en PHP 5 POO

<?php

// Incluimos la clase Conectar, hecha en anteriores entradas
 include_once("Conectar.php");


Creamos una clase cualquiera
class NombreClase
{

//Creamos el método actualizar
 public function actualizar($id)
    {
        $sql = "UPDATE tabla SET CampoTabla='Valor'
            where id='$id'";
        $res=mysql_query($sql,Conectar::con());
     
        return $res;
    }

?>

Este código por sí solo no hace nada, tendremos que hacer una instancia de la clase y la llamada al método actualiazr pasandole como parámetro el id:

<?php 
// Creamos la instancia
$mdf = New NombreClase;

// Ejecutamos el método
$mdf ->actualizar("5");

?>

Eliminación de un registro de la base de datos en PHP 5 POO

<?php

// Incluimos la clase Conectar, hecha en anteriores entradas
 include_once("Conectar.php");


Creamos una clase cualquiera
class NombreClase
{

//Creamos el método eliminar
Public function eliminar_registro($id)
    {
        $sql = "Delete From tabla Where id='$id'";
        $res=mysql_query($sql,Conectar::con());
     
        Return $res;
    }

?>

Este código por sí solo no hace nada, tendremos que hacer una instancia de la clase y la llamada al método eliminar pasandole como parámetro el id:

<?php 
// Creamos la instancia
$elm = New NombreClase;

// Ejecutamos el método
$elm ->eliminar_registro("5");

?>

lunes, 3 de junio de 2013

Gestión de usuarios desde consola

Gestión de usuarios desde consola

Crear usuarios locales y remotos:
  • Verificar los usuarios que existen dados de alta
c:\> mysql -u root -p
mysql> SELECT user FROM mysql.user;
  • Crear un usuario profesor local con todos los privilegios en una BD determinada:
mysql>  GRANT ALL PRIVILEGES ON db.* TO ‘usuario‘@’host‘
IDENTIFIED BY ‘contraseña‘ WITH GRANT OPTION;
  • Crear un usuario profesor local con todos los privilegios en todas las BDs:
mysql>  GRANT ALL PRIVILEGES ON *.* TO ‘usuario‘@’host‘
IDENTIFIED BY ‘contraseña‘ WITH GRANT OPTION;
  • Crear un usuario con ciertos privilegios
mysql> GRANT privilegio1 [, privilegio2 ...] ON db.* TO ‘usuario‘@’host‘ IDENTIFIED BY ‘password‘;
Privilegios:
  • ALTER: Modificar tablas con ALTER TABLE
  • CREATE: Crear una nueva BD o tabla
  • DELETE: Eliminar registros de las tablas
  • DROP: Eliminar BD o tablas
  • INDEX: Crear o eliminar índices
  • INSERT: Crear registros en las tablas
  • SELECT: Listar registros de las tablas
  • UPDATE: Modificar registros de las tablas
  • Listar privilegios para un usuario USUARIO desde una dirección HOST
mysql> GRANTS FOR ‘USUARIO’@’HOST’;
  • Eliminar/quitar privilegios para un usuario USUARIO desde una dirección HOST para una base de datos DB
mysql> REVOKE privilegio1 [, privilegio2 ...] ON db.* FROM ‘usuario‘@’host;
  • Eliminar un usuario desde una dirección de HOST
mysql>  DROP USER ‘USUARIO’@’HOST’
  • Cambiar contraseña a un usuario desde una dirección host
mysql> SET PASSWORD FOR ‘usuario’@’host’ = PASSWORD(‘contraseña’);


Para finalizar el ejercicio vamos a crear una base de datos prueba, con unas tablas. Vamos a crear un usuario prueba que tenga permisos para ver solo 1 de las tablas. Cerrar la sesión de consola en mysql y abrirla de nuevo con este nuevo usuario. Comprobad la visibilidad del nuevo usuario.
Avanzado:
Para conectar desde un equipo remoto mediante consola ejecutaremos:
mysql -h nombrehost|ip -u usuario -p

domingo, 2 de junio de 2013

Conseguir fecha actual php

Conseguimos la fecha actual del sistema con la funcion date:
<?php 

$fecha = date("Y-m-d");

echo $fecha;

?>

Copiar una base de datos mysql desde php

Con este script vamos copiar una base de datos para tener los datos duplicados en caso de desgracia

<?php 
// Cambie el Origen & Destino de Base de Datos 
$source_db="db1"; 
$new_db="db2"; 
mysql_connect("localhost","root","");
mysql_select_db($source_db);
$result=mysql_query("show tables");
$table_names=array();
while($row=mysql_fetch_array($result)){
         $table_names[]=$row[0];
} 
mysql_query("create database $new_db");
mysql_select_db($new_db); 
for($i=0;$i<count($table_names);$i++){
mysql_query("create table ".$table_names[$i]."
select * from $source_db.".$table_names[$i]);
} 
echo count($table_names)." tablas correctamente copiadas!";
 
 
?>

Conexion a base de datos mediante una clase estática php

 Aquí vemos como hacer una clase para poder realizar una conexión a nuestra base de datos en php5 , con solo hacer un include de la clase ya tendríamos la conexión inicializada .

<?php

class Conectar
{
    public static function con()
    {

      $conexion=mysql_connect("TuServidor","tuUSuario","Tupassword");
      mysql_query("SET NAMES 'utf8'");
      mysql_select_db("Tu base de datos");
            
      return $conexion;
    }
}

?>