Con este pequeño ejemplo que me encontre en internet se puede agregar una columna mas con los numeros de la consulta
SELECT @rownum:=@rownum+1 AS rownum, nombre_tabla.* FROM (SELECT @rownum:=0) r, nombre_tabla;
eso es todo !!!
fuente
http://cambrico.net/mysql/equivalente-del-rownum-de-oracle-en-mysql
var form1=document.createElement('FORM');
form1.setAttribute('action','testsnippets_submit');
form1.setAttribute('method','get');
var label1=document.createElement('LABEL');
label1.setAttribute('for','test1');
form1.appendChild(label1);
var txt1=document.createTextNode('Test 1');
label1.appendChild(txt1);
var br1=document.createElement('BR');
form1.appendChild(br1);
var input1=ce('INPUT','test1');
input1.setAttribute('type','text');
input1.setAttribute('id','test1');
form1.appendChild(input1);
var br2=document.createElement('BR');
form1.appendChild(br2);
var select1=ce('SELECT','test2');
form1.appendChild(select1);
var option1=document.createElement('OPTION');
option1.setAttribute('value','1');
select1.appendChild(option1);
var txt1=document.createTextNode('opt1');
option1.appendChild(txt1);
var option2=document.createElement('OPTION');
option2.setAttribute('selected','selected');
option2.setAttribute('value','2');
select1.appendChild(option2);
var txt1=document.createTextNode('opt2');
option2.appendChild(txt1);
var option3=document.createElement('OPTION');
option3.setAttribute('value','3');
select1.appendChild(option3);
var txt1=document.createTextNode('opt3');
option3.appendChild(txt1);
var br3=document.createElement('BR');
form1.appendChild(br3);
var textarea1=ce('TEXTAREA','tareatest');
textarea1.setAttribute('cols','60');
textarea1.setAttribute('rows','5');
form1.appendChild(textarea1);
var txt1=document.createTextNode('Testing textarea');
textarea1.appendChild(txt1);
var p1=document.createElement('P');
form1.appendChild(p1);
var input2=document.createElement('INPUT');
input2.setAttribute('type','submit');
input2.setAttribute('value','Go');
p1.appendChild(input2);
Este pequño codigo muestra como centrar una capa en la pantalla, solo lo tienes que ajustar
.centrar
{
position: absolute;
/*nos posicionamos en el centro del navegador*/
top:50%;
left:50%;
/*determinamos una anchura*/
width:400px;
/*indicamos que el margen izquierdo, es la mitad de la anchura*/
margin-left:-200px;
/*determinamos una altura*/
height:300px;
/*indicamos que el margen superior, es la mitad de la altura*/
margin-top:-150px;
border:1px solid #808080;
padding:5px;
}
REQUISITOS:
NOTA: si utilizas otros programas o librerias tal vez no resulte este tuto. Si utilizas windows vista asegurate de correr todo como administrador, osea le das click derecho y ejecutar como administrador.
INTRODUCCION:
INSTALACION DE TOMCAT O JAKARTA
INSTALACION DE PHP
INSTALACION DE mod_jk
- apache_2.2.11-win32-x86-no_ssl
- apache-tomcat-6.0.18
- php-5.2.8-Win32
- mod_jk-1.2.27-httpd-2.2.10.so
- jdk 6 update 12 o superior (jvm)
NOTA: si utilizas otros programas o librerias tal vez no resulte este tuto. Si utilizas windows vista asegurate de correr todo como administrador, osea le das click derecho y ejecutar como administrador.
INTRODUCCION:
INSTALACION DE APACHE HTTPD
En algunas ocaciones se tienen proyectos realizados en PHP, tambien se cuenta con proyectos realizados en JSP, como ya sabemos apache puede servir paginas HTML y PHP entre otras, y tomcat puede servir paginas JSP y PHP, pero para realizar esto es un poco complicado, asi es que lo que realizaremos es hacer que apache redirecciona las paginas, cuando sea una peticion JSP la atendera tomcat y cuando sea una peticion HTML o PHP que la atienda apache, todo esto sobre el mismo puerto el 80.
Espero que instalar apache no tengas ningun problema, ya que es tan simple como dar, siguiente, siguiente y finalizar, tal vez tengas problemas en una pantalla "server information " en en campo de Network Domain te sugiero que escribas " localhost ", Server Name " localhost " y en administrator´s Email Adress " tunombre@tucorreo.com o me@localhost ", si todo sale bien te aparecera el monitor de apache en la barra tray.
Al lugar donde se instala el apache se le llamada $APACHE_HOME
INSTALACION DE TOMCAT O JAKARTA
El instalador de Tomcat es muy sencillo, no creo que tengas problemas, en la parte donde te pide que puerto y una contraseña de administrador, el puerto que es por default es el 8080, te suguiero que lo dejes asi, y en la contraseña puede ser cualquiera.
Al lugar donde se instala el apache se le llamada $TOMCAT_HOME
La estructura de archivos de tomcat es diferente a la de apache, en apache las paginas web se colocan en la carpeta de htdocs, en tomcat es webapps
apache: C:\Program Files\Apache Software Foundation\Apache2.2\htdocs
tomcat: C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps
En la carpeta de C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib se encuentra un jar que se llama " servlet-api.jar " esa la copias y la pegas en C:\Program Files\Java\jre1.5.0_17\lib\ext
INSTALACION DE PHP
Para la instalacion de php puedes ver este post que anterirormente e hecho, la instalacion es igual no cambia en nada.
INSTALACION DE mod_jk
Publicado por
Skuarch
domingo 1 de marzo de 2009
Etiquetas:
correr php y jsp en el mismo servidor,
jsp y php
Ahora que esta de moda que la programacion sea orientada a objetos, pues yo quise realizar algo sobre eso y realize este pequeño codigo para conectarme a una base de datos.
date_default_timezone_set("America/Mexico_City");
error_reporting(E_ALL | E_STRICT);
//error_reporting(0);
set_time_limit(0);
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
class Conex{
private $user;
private $pass;
private $db;
private $host;
function __construct(){
$this->link=NULL;
$this->result=NULL;
$this->user="ws";
$this->pass="123";
$this->db="wallstrong2";
$this->host="192.168.158.59";
$this->sinBuf=NULL;
$this->numFils=NULL;
$this->arrayFetch=NULL;
}//fin constructor
//--------------------------------------------------------------------------
//conexion base de datos----------------------------------------------------
function conectar(){
if (!$this->link=mysql_connect($this->host,$this->user,$this->pass)){
echo "error en la conexion a la base de datos $db";
exit();
}//fin validacion conex
if(!mysql_select_db($this->db)){
echo "Error al seleccionar la base de datos";
exit();
}//fin validacion if select db
return $this->link;
}//fin function
//------------------------------------------------------------------------------
//ejecutar qry------------------------------------------------------------------
function query($sql){
$this->result=mysql_query($sql,$this->link) or die ("
".mysql_error());
return $this->result;
}//fin if sentencias
//------------------------------------------------------------------------------
//array asociativo--------------------------------------------------------------
function arrayAssoc($row){
$this->arrayFetch=mysql_fetch_assoc($row);
return $this->arrayFetch;
}//fin array asociativo
//------------------------------------------------------------------------------
//numero de filas---------------------------------------------------------------
function filas($row){
$this->numFilas=mysql_num_rows($row);
return $this->numFilas;
}//fin numero de filas
//-------------------------------------------------------------------------------
//desconectar de la db-----------------------------------------------------------
function desconectar($db){
mysql_close($db);
}//fin desconectar
//--------------------------------------------------------------------------------
//funcion para conectar con otro uduario con mayores privilegios------------------
function conectarOtroUsuario($host,$user,$pass,$db){
if (!$this->link=mysql_connect($host,$user,$pass)){
echo "error en la conexion a la base de datos $db";
exit();
}//fin validacion conex
if(!mysql_select_db($db)){
echo "Error al seleccionar la base de datos";
exit();
}//fin validacion if select db
return $this->link;
}//fin conexion con otro usuario
//-------------------------------------------------------------------------------------
//realizar un qry sib buffer para que sea mas rapido, no se puede utilizar mysql_num_row
function sinBuffer($sql,$con){
//$con = $this->conectar();
$this->sinBuf=mysql_unbuffered_query($sql,$con) or die(mysql_error());
return $this->sinBuf;
}//fin sin bufer
//------------------------------------------------------------------------------------------
//liberar resultado
function liberarResultado($free){
mysql_free_result($free);
}//fin liberar resultado
//--------------------------------------------------------------------------------
//depuracion del codigo
function __get($arg1){
echo "
}//fin get
function __call($arg1,$arg2){
echo "
}//fin call
//--------------------------------------------------------------------------------------
//destructor-----------------------------------------------------------------------------
function __destruct(){ }//fin destructor
}//fin class
date_default_timezone_set("America/Mexico_City");
error_reporting(E_ALL | E_STRICT);
//error_reporting(0);
set_time_limit(0);
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
class Conex{
private $user;
private $pass;
private $db;
private $host;
function __construct(){
$this->link=NULL;
$this->result=NULL;
$this->user="ws";
$this->pass="123";
$this->db="wallstrong2";
$this->host="192.168.158.59";
$this->sinBuf=NULL;
$this->numFils=NULL;
$this->arrayFetch=NULL;
}//fin constructor
//--------------------------------------------------------------------------
//conexion base de datos----------------------------------------------------
function conectar(){
if (!$this->link=mysql_connect($this->host,$this->user,$this->pass)){
echo "error en la conexion a la base de datos $db";
exit();
}//fin validacion conex
if(!mysql_select_db($this->db)){
echo "Error al seleccionar la base de datos";
exit();
}//fin validacion if select db
return $this->link;
}//fin function
//------------------------------------------------------------------------------
//ejecutar qry------------------------------------------------------------------
function query($sql){
$this->result=mysql_query($sql,$this->link) or die ("
".mysql_error());
return $this->result;
}//fin if sentencias
//------------------------------------------------------------------------------
//array asociativo--------------------------------------------------------------
function arrayAssoc($row){
$this->arrayFetch=mysql_fetch_assoc($row);
return $this->arrayFetch;
}//fin array asociativo
//------------------------------------------------------------------------------
//numero de filas---------------------------------------------------------------
function filas($row){
$this->numFilas=mysql_num_rows($row);
return $this->numFilas;
}//fin numero de filas
//-------------------------------------------------------------------------------
//desconectar de la db-----------------------------------------------------------
function desconectar($db){
mysql_close($db);
}//fin desconectar
//--------------------------------------------------------------------------------
//funcion para conectar con otro uduario con mayores privilegios------------------
function conectarOtroUsuario($host,$user,$pass,$db){
if (!$this->link=mysql_connect($host,$user,$pass)){
echo "error en la conexion a la base de datos $db";
exit();
}//fin validacion conex
if(!mysql_select_db($db)){
echo "Error al seleccionar la base de datos";
exit();
}//fin validacion if select db
return $this->link;
}//fin conexion con otro usuario
//-------------------------------------------------------------------------------------
//realizar un qry sib buffer para que sea mas rapido, no se puede utilizar mysql_num_row
function sinBuffer($sql,$con){
//$con = $this->conectar();
$this->sinBuf=mysql_unbuffered_query($sql,$con) or die(mysql_error());
return $this->sinBuf;
}//fin sin bufer
//------------------------------------------------------------------------------------------
//liberar resultado
function liberarResultado($free){
mysql_free_result($free);
}//fin liberar resultado
//--------------------------------------------------------------------------------
//depuracion del codigo
function __get($arg1){
echo "
Estas intentando acceder a algo que no existe $arg1
";}//fin get
function __call($arg1,$arg2){
echo "
Estas intentando acceder a algo que no existe $arg1 $arg2
";}//fin call
//--------------------------------------------------------------------------------------
//destructor-----------------------------------------------------------------------------
function __destruct(){ }//fin destructor
}//fin class
A lo que me refiero en este post es como se puede modificar el php.ini sin tener que modificar el archivo directamente, para eso se utiliza la funcion ini_set();
Con la funcion ini_set() se pueden cambiar las directivas del archivo de configuracion php.ini, este es un ejemplo de como se puede usar
//esto solo servira durante la ejecucion del script
ini_set("error_reporting",E_ALL);
no todas las opciones pueden ser modificadas este es el apendice
Con la funcion ini_set() se pueden cambiar las directivas del archivo de configuracion php.ini, este es un ejemplo de como se puede usar
//esto solo servira durante la ejecucion del script
ini_set("error_reporting",E_ALL);
no todas las opciones pueden ser modificadas este es el apendice
Requisitos:
Paso 1
Debes de descomprimir php en la raiz de windows osea en C: te recomindo que lo dejes con el nombre de php en minusculas y sin la version, osea debe de quedar C:\php.
Paso 2
Abre el archivo install.txt que se encuentra dentro de la carpeta que descomprimiste, dentro de el busca la linea " Apache 2.0.x on Microsoft Windows " un poco mas abajo en el mismo archivo esta la linea " Installing as an Apache module " hay copiamos estas lineas
# For PHP 5 do something like this:
LoadModule php5_module "c:/php/php5apache2.dll"
AddType application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "C:/php"
Si ponemos un poco de atencion, en estas tres lineas esta lo necesario para que apache pueda cargar php, e indica donde se encuentra el archivo de configuracion de php osea el php.ini.
Estas lineas las pegamos en el archivo de configuracion de apache. El mio se encuentra en " C:\Program Files\Apache Software Foundation\Apache2.2\conf " y el archivo se llama " httpd.conf ", tengo instalada la version 2.2, la instalacion que realice de apache fue la que tiene por default osea solo di next, next puse localhost y finalizar, si tu apache esta instalado en otro lado pues la ruta cambia.
El archivo de configuracion de apache quedaria mas o menos asi.
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule version_module modules/mod_version.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
# For PHP 5 do something like this:
LoadModule php5_module "c:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "C:/php"
Lo que pege esta en letras rojas y lo puse despues de todos los LoadModule.
Checa que tengo instalado apache 2.2 entonces la extencion es php5apache2_2.dll y si fuera apache 2.0.x la extencion seria php5apache2.dll o sea que lo unico que cambia es el _2, con esto apache ya puede atender peticiones php, asi de facil asi de sencillo.
Paso 3
Configuracion de php.ini, este paso es el ultimo, solo tienes que tomar el archivo que se llama " php.ini-recommended " quitarle el " -recommended ", entonces el archivo te quedara como php.ini, lo abres con el notepad (bloc de notas por si estas medio wey) buscas la linea " display_errors = Off " y la cambias por " display_errors = ON " eso por si quieres que aparescan los errores, tambien busca " register_globals = Off " y de igual manera lo pones en on " register_globals = On " por ultimo busca " ;extension=php_mysql.dll " y quitale el " ; " que esta al principio. Reinicia apache.
Con esto tenemos la configuracion basica de php.ini y con esto se concluye el tutorial espero que te salga todo bien y si no te sale pues busca otro tutorial.
- Apache 2.0.x o apache 2.2.x instalado
- Mysql recomendablemente la version 5 en adelante instalado.
- si no tienes mysql instalado bajate mysqllib para que pueda cargar la extension y se pueda conectar con el servidor de base de datos.
Paso 1
Debes de descomprimir php en la raiz de windows osea en C: te recomindo que lo dejes con el nombre de php en minusculas y sin la version, osea debe de quedar C:\php.
Paso 2
Abre el archivo install.txt que se encuentra dentro de la carpeta que descomprimiste, dentro de el busca la linea " Apache 2.0.x on Microsoft Windows " un poco mas abajo en el mismo archivo esta la linea " Installing as an Apache module " hay copiamos estas lineas
# For PHP 5 do something like this:
LoadModule php5_module "c:/php/php5apache2.dll"
AddType application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "C:/php"
Si ponemos un poco de atencion, en estas tres lineas esta lo necesario para que apache pueda cargar php, e indica donde se encuentra el archivo de configuracion de php osea el php.ini.
Estas lineas las pegamos en el archivo de configuracion de apache. El mio se encuentra en " C:\Program Files\Apache Software Foundation\Apache2.2\conf " y el archivo se llama " httpd.conf ", tengo instalada la version 2.2, la instalacion que realice de apache fue la que tiene por default osea solo di next, next puse localhost y finalizar, si tu apache esta instalado en otro lado pues la ruta cambia.
El archivo de configuracion de apache quedaria mas o menos asi.
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule version_module modules/mod_version.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
# For PHP 5 do something like this:
LoadModule php5_module "c:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "C:/php"
Checa que tengo instalado apache 2.2 entonces la extencion es php5apache2_2.dll y si fuera apache 2.0.x la extencion seria php5apache2.dll o sea que lo unico que cambia es el _2, con esto apache ya puede atender peticiones php, asi de facil asi de sencillo.
Paso 3
Configuracion de php.ini, este paso es el ultimo, solo tienes que tomar el archivo que se llama " php.ini-recommended " quitarle el " -recommended ", entonces el archivo te quedara como php.ini, lo abres con el notepad (bloc de notas por si estas medio wey) buscas la linea " display_errors = Off " y la cambias por " display_errors = ON " eso por si quieres que aparescan los errores, tambien busca " register_globals = Off " y de igual manera lo pones en on " register_globals = On " por ultimo busca " ;extension=php_mysql.dll " y quitale el " ; " que esta al principio. Reinicia apache.
Con esto tenemos la configuracion basica de php.ini y con esto se concluye el tutorial espero que te salga todo bien y si no te sale pues busca otro tutorial.
A continuacion explicare algunas de las formas que se pueden manejar los errores en PHP. En este post puedes encontrar como usar try-catch, track_errors y error_reporting.
$PHP_ERRORMSG
Para poder hacer uso de la variable $php_errormsg se tiene que tener hablitada la directiva de " track_errors=On ". si no sabes configurar el php.ini lee este articulo, por default en el php.ini esta desahabilitada. Lo que hace esto es almacenar el error en la variable antes dicha, en el ejemplo se muestra con mas claridad.
//este error se generaria, si no se tiene configurado el smtp en el php.ini
@$mails = mail('skuarch@yahoo.com.mx', 'prueba','prueba') or die ("no se fue Error
$php_errormsg");
Si no se tiene configurado un servidor de SMTP para php, la funcion mail mandara un error, este error lo podemos controlar mediante el " @ ", esto indica que se puede guardar el error en la variable $php_errormsg. En lugar de usar un " or die " podriamos haber dejado la funcion sola y mostrar el error despues.
@$mails = mail('skuarch@yahoo.com.mx', 'prueba','prueba');
echo $php_errormsg;
ERROR_REPORTING
Esta funcion lo que realiza es poder ocultar o mostrar los errores en la pagina con varios niveles, puedes hacer que se muestren unicamente los errores, o puedes hacer que se muestren los warinings, para entrar en mas detalles te muestro unos ejemplos.
error_reporting(E_ALL);
Esto muestra todos los errores en la pagina, todos los warnings y notices. Se puede manipular a conveniencia.
//no muestra ningun error
error_reporting(0)
//solo muestra los warnings
error_reporting(E_WARNING)
//esto puedes ser bueno para (variables no inicializadas, capturar equivocaciones en nombre de variables)
error_reporting( E_ERROR | E_WARNING | E_PARSE | E_NOTICE )
//sugerencias en el codigo, este es el que yo utilizo
error_reporting(E_ALL & ~E_NOTICE | E_STRICT | E_WARNING);
// Reportar todos los errores excepto E_NOTICE
// Este es el valor predeterminado en php.ini
error_reporting(E_ALL ^ E_NOTICE);
Como puedes ver se pueden hacer combinaciones para que el resultado sea mejor. Te recomiendo que esta funcion la utilizes donde haces tu conexion a la base de datos, ya que si usas indiscriminadamente esto en cada pagina, despues para modificarlo tienes que entrar en cada pagina en donde la utilizaste y modificarlo a mano.
TRY-CATCH
Estos bloques estan disponibles apartir de la version 5 de php, lo que hacen son capturas de excepciones, intentan realizar una accion, si la acccion es fallida se captura una excepcion y se continua con la ejecucion del codigo, si la excepcion es grave osea en un error fatal se para la ejecucion del codigo.
fuente: php.net
$PHP_ERRORMSG
Para poder hacer uso de la variable $php_errormsg se tiene que tener hablitada la directiva de " track_errors=On ". si no sabes configurar el php.ini lee este articulo, por default en el php.ini esta desahabilitada. Lo que hace esto es almacenar el error en la variable antes dicha, en el ejemplo se muestra con mas claridad.
//este error se generaria, si no se tiene configurado el smtp en el php.ini
@$mails = mail('skuarch@yahoo.com.mx', 'prueba','prueba') or die ("no se fue Error
$php_errormsg");
Si no se tiene configurado un servidor de SMTP para php, la funcion mail mandara un error, este error lo podemos controlar mediante el " @ ", esto indica que se puede guardar el error en la variable $php_errormsg. En lugar de usar un " or die " podriamos haber dejado la funcion sola y mostrar el error despues.
@$mails = mail('skuarch@yahoo.com.mx', 'prueba','prueba');
echo $php_errormsg;
ERROR_REPORTING
Esta funcion lo que realiza es poder ocultar o mostrar los errores en la pagina con varios niveles, puedes hacer que se muestren unicamente los errores, o puedes hacer que se muestren los warinings, para entrar en mas detalles te muestro unos ejemplos.
error_reporting(E_ALL);
Esto muestra todos los errores en la pagina, todos los warnings y notices. Se puede manipular a conveniencia.
//no muestra ningun error
error_reporting(0)
//solo muestra los warnings
error_reporting(E_WARNING)
//esto puedes ser bueno para (variables no inicializadas, capturar equivocaciones en nombre de variables)
error_reporting( E_ERROR | E_WARNING | E_PARSE | E_NOTICE )
//sugerencias en el codigo, este es el que yo utilizo
error_reporting(E_ALL & ~E_NOTICE | E_STRICT | E_WARNING);
// Reportar todos los errores excepto E_NOTICE
// Este es el valor predeterminado en php.ini
error_reporting(E_ALL ^ E_NOTICE);
Como puedes ver se pueden hacer combinaciones para que el resultado sea mejor. Te recomiendo que esta funcion la utilizes donde haces tu conexion a la base de datos, ya que si usas indiscriminadamente esto en cada pagina, despues para modificarlo tienes que entrar en cada pagina en donde la utilizaste y modificarlo a mano.
TRY-CATCH
Estos bloques estan disponibles apartir de la version 5 de php, lo que hacen son capturas de excepciones, intentan realizar una accion, si la acccion es fallida se captura una excepcion y se continua con la ejecucion del codigo, si la excepcion es grave osea en un error fatal se para la ejecucion del codigo.
fuente: php.net
Publicado por
Skuarch
sábado 31 de enero de 2009
Etiquetas:
error_reporting,
excepciones,
track errors,
try-catch
Los trigger en mysql esta disponibles desde la version 5.0.2 y superiores, los triggers son objetos de la base de datos el cual esta ligado a una tabla y este se ejecuta cuando pasa alguna accion (INSERT,UPDATE,DELETE) en el ejemplo siguiente se muestra un ejemplo.
DELIMITER |
CREATE TRIGGER nombreTrigger BEFORE INSERT ON nombreTabla
FOR EACH ROW
BEGIN
INSERT INTO nombreTabla SET campo1 = NEW.nuevoCampo1;
DELETE FROM nombreTabla WHERE campo3 = NEW.campo1;
UPDATE nombreTabla SET cmpo4 = b4 + 1 WHERE campo4 = NEW.campo1;
END
|
DELIMITER ;
Lo que podemos observar de este sencillo codigo es que se necesita de un delimitador " | "
con la sentencia " CREATE TRIGGER " seguido del nombre se crea el trigger, " BEFORE o AFTER " esto se coloca cuando se quiere que se ejecute una funcion, antes o despues de alguna accion (INSERT,UPDATE,DELETE) despues se coloca " ON " y el nombre de la tabla con la que se quieres que se dispare el trigger, " FOR EACH ROW " para cada fila, despues vemos que se realizan un insert, un update y un delete, pero lo que se resalta de esto es " NEW.campo1 ", se pueden utilizar dos palabras " NEW u OLD" si el trigger esta definido para que se ejecute con BEFORE se utilizara NEW, si es AFTER se utilizara OLD, esto lo que quiere decir es que, si se usa NEW el campo todavia no se a insertado y lo contrario con OLD, dicho con otras palabras se tomaria el campo antes o despues de la accion, " DELIMITER ;" debe de llevar un espacion antes del " ; ".
Espero que te sirva, si no buscale por otro lado.
DELIMITER |
CREATE TRIGGER nombreTrigger BEFORE INSERT ON nombreTabla
FOR EACH ROW
BEGIN
INSERT INTO nombreTabla SET campo1 = NEW.nuevoCampo1;
DELETE FROM nombreTabla WHERE campo3 = NEW.campo1;
UPDATE nombreTabla SET cmpo4 = b4 + 1 WHERE campo4 = NEW.campo1;
END
|
DELIMITER ;
Lo que podemos observar de este sencillo codigo es que se necesita de un delimitador " | "
con la sentencia " CREATE TRIGGER " seguido del nombre se crea el trigger, " BEFORE o AFTER " esto se coloca cuando se quiere que se ejecute una funcion, antes o despues de alguna accion (INSERT,UPDATE,DELETE) despues se coloca " ON " y el nombre de la tabla con la que se quieres que se dispare el trigger, " FOR EACH ROW " para cada fila, despues vemos que se realizan un insert, un update y un delete, pero lo que se resalta de esto es " NEW.campo1 ", se pueden utilizar dos palabras " NEW u OLD" si el trigger esta definido para que se ejecute con BEFORE se utilizara NEW, si es AFTER se utilizara OLD, esto lo que quiere decir es que, si se usa NEW el campo todavia no se a insertado y lo contrario con OLD, dicho con otras palabras se tomaria el campo antes o despues de la accion, " DELIMITER ;" debe de llevar un espacion antes del " ; ".
Espero que te sirva, si no buscale por otro lado.
Con este pequeño script podemos ver que conexiones tenemos activas, las que estan cerrando, y las conexiones que se estan estableciendo.
Esto lo realizamos con un simple comando que se utiliza en windows, este es netstat, despues realiaza una busqueda y un conteo en el resultado del comando mas o menos seria asi.
REM autor skuarch
@ECHO OFF
CLS
ECHO:CONEXIONES ACTIVAS:
netstat -an |find /C "ESTABLISHED"
ECHO:CONEXIONES CERRANDOSE [close_wait]:
netstat -an |find /C "WAIT"
ECHO:CONEXIONES ESTABLECIENDOSE [syn_sent]:
netstat -an |find /C "SYN_SENT"
ECHO:
ECHO:
ECHO:PUERTOS TCP ABIERTOS:
ECHO:
netstat -an | find "LISTENING"
pause
pues lo unico que se puede resaltar de este sencillo script es como se realiza la busque de en el resultado de un comando.
netstat -an | find "LISTENING"
con esto buscamos todas las conexiones que esten en escucha.
Esto lo realizamos con un simple comando que se utiliza en windows, este es netstat, despues realiaza una busqueda y un conteo en el resultado del comando mas o menos seria asi.
REM autor skuarch
@ECHO OFF
CLS
ECHO:CONEXIONES ACTIVAS:
netstat -an |find /C "ESTABLISHED"
ECHO:CONEXIONES CERRANDOSE [close_wait]:
netstat -an |find /C "WAIT"
ECHO:CONEXIONES ESTABLECIENDOSE [syn_sent]:
netstat -an |find /C "SYN_SENT"
ECHO:
ECHO:
ECHO:PUERTOS TCP ABIERTOS:
ECHO:
netstat -an | find "LISTENING"
pause
pues lo unico que se puede resaltar de este sencillo script es como se realiza la busque de en el resultado de un comando.
netstat -an | find "LISTENING"
con esto buscamos todas las conexiones que esten en escucha.
Publicado por
Skuarch
domingo 25 de enero de 2009
Etiquetas:
.bat,
archivos por lotes,
ms-dos,
netstat,
skuarch
En ocaciones es necesario mandar parametros a un .jar como por ejemplo si se realiza un programa para enviar correos, el destinatario puede cambiar, para lograr eso es muy facil, en el siguiente codigo muetro lo sencillo que es sumando dos numeros.
public class Sumador {
public static void main(String[] args) {
int factor1;
int factor2;
int resultado;
//conversacion
//aqui es donde tomamos los parametros que se le envian al .jar
factor1=Integer.parseInt(args[0]);
factor2=Integer.parseInt(args[1]);
//suma
resultado=factor1 + factor2;
//salida
System.out.println("\nresultado="+resultado);
}
}
Se nota lo facil que es, en main se declara un arreglo de argumentos (String[] args), entonces podemos acceder a los argumentos como en un arreglo cualquiera, args[posicion]. Asi de simple.
Entonces solo queda que llamemos a nuetro .jar desde linea de comandos y le enviemos los parametros separados por un espacio.
Como yo aprendi a programar solo, esto no lo sabia asi es que espero que te sirva, si ya te lo sabias pues vete.
public class Sumador {
public static void main(String[] args) {
int factor1;
int factor2;
int resultado;
//conversacion
//aqui es donde tomamos los parametros que se le envian al .jar
factor1=Integer.parseInt(args[0]);
factor2=Integer.parseInt(args[1]);
//suma
resultado=factor1 + factor2;
//salida
System.out.println("\nresultado="+resultado);
}
}
Se nota lo facil que es, en main se declara un arreglo de argumentos (String[] args), entonces podemos acceder a los argumentos como en un arreglo cualquiera, args[posicion]. Asi de simple.
Entonces solo queda que llamemos a nuetro .jar desde linea de comandos y le enviemos los parametros separados por un espacio.
Como yo aprendi a programar solo, esto no lo sabia asi es que espero que te sirva, si ya te lo sabias pues vete.
Para poder crear una tarea que se repita cada cierto periodo en java, se puede utilizar la clase Timer un ejemplo de este puede ser un reloj que cada segundo muestra la hora, pero para realizar un ejemplo sencillo, solo se va a imprimir un numero cada segundo, con esto cada quien puede realizar sus propias adecuaciones al codigo.
import java.util.Timer;
import java.util.TimerTask;
/**
*
* @author skuarch
*/
public class PruebaTimer {
public static void main(String []args){
// Clase en la que está el código a ejecutar
TimerTask timerTask = new TimerTask()
{
int numero=0;
public void run()
{
System.out.println(numero++);
}
};
// se crea un objeto del tipo timer
Timer timer = new Timer();
// se indica la tarea a ejecutar, el retardo y cada cuando se tiene que repetir
timer.scheduleAtFixedRate(timerTask, 0, 1000);
}//fin main
}//fin class
El ejemplo es muy sencillo, cabe mencionar que en la clase TimerTask contiene un metodo que se llama run(), esto es parecido a los Thread, lo que contiene el metodo run es lo que se va a ejecutar cada cierto periodo.
Despues se crea un objeto de tipo Timer, que en este caso se llama "timer", y este accede a la propiedad scheduleAtFixedRate que se le tiene que pasar como parametros la tarea que se va a realizar el retardo, y el periodo, esta funcion tambien pude ser llamada cada determinada fecha, en la api de java puedes encontrar mas informacion sobre como programar tareas con fechas.
import java.util.Timer;
import java.util.TimerTask;
/**
*
* @author skuarch
*/
public class PruebaTimer {
public static void main(String []args){
// Clase en la que está el código a ejecutar
TimerTask timerTask = new TimerTask()
{
int numero=0;
public void run()
{
System.out.println(numero++);
}
};
// se crea un objeto del tipo timer
Timer timer = new Timer();
// se indica la tarea a ejecutar, el retardo y cada cuando se tiene que repetir
timer.scheduleAtFixedRate(timerTask, 0, 1000);
}//fin main
}//fin class
El ejemplo es muy sencillo, cabe mencionar que en la clase TimerTask contiene un metodo que se llama run(), esto es parecido a los Thread, lo que contiene el metodo run es lo que se va a ejecutar cada cierto periodo.
Despues se crea un objeto de tipo Timer, que en este caso se llama "timer", y este accede a la propiedad scheduleAtFixedRate que se le tiene que pasar como parametros la tarea que se va a realizar el retardo, y el periodo, esta funcion tambien pude ser llamada cada determinada fecha, en la api de java puedes encontrar mas informacion sobre como programar tareas con fechas.
Una de las formas de enviar correo con java es utilizar la api de java, javamail, que la puedes descargar de la pagina de sun, tambien se requiere del marco de trabajo que tambien se descarga del mismo lugar, con el nombre de jaf o activador, cuando se tengan estas dos apis se copian los archivos mail.jar y activator.jar en la ruta, C:\Program Files\Java\jdk1.6.0_04\jre\lib\ext obvio sobre windows, si usas otro que no sea JDK la la verdad no se donde se pongan los archivos, supongo que en el mismo lugar pero la verdad no se.
Ahora solo necesitamos un servidor que envie los correos, yo tengo un servidor smtp en windows 2003, pero tambien se puede crear en windows xp profesional, en el panel de control, agregar o quitar programas, agregar o quitar componentes de windows, hay buscamos Servicios de Internet informacion Server(IIS), dentro de eso buscamos Servicio SMTP y lo activamos, damos en aceptar en todo y nos pedira el disco de instalacion, es lo mismo para windows 2003, despues de esto se tiene que configurar el servidor.
Para configurar el servidor y que nos permita enviar correos, tenemos que realizar lo siguiente,
en el boton inicio, seleccionar mi pc dar click derecho y escoger administrar, nos abre una ventana que se llama administracion de equipos, hay buscamos servicios y aplicaciones, dentro de este buscamos Servicios de Internet Information Server(IIS), dentro de este encontramos Default SMTP Virtual Server damos click derecho y escogemos propiedades, nos aparece una ventana escogemos la pestaña de acceso y en la parte de reenvio damos click, hay escogemos la opcion de todas excepto las de esta lista, aceptamos en todo y con eso tenemos nuestro server de correos.
Una vez que se tienen esos archivos en la ruta especificada pasamos a realizar este pequeño codigo.
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
public class Msgsend {
public static void main(String []args) throws Exception{
Properties p = new Properties();
p.setProperty("mail.smtp.host", "localhost");
p.setProperty("mail.smtp.starttls", "true");
p.setProperty("mail.smtp.port", "25");
//p.setProperty("mail.smtp.user", "alguien@dominio.com");
p.setProperty("mail.smtp.auth", "false");
Session session = Session.getDefaultInstance(p,null);
session.setDebug(false);
MimeMessage message = new MimeMessage(session);
// Quien envia el correo
message.setFrom(new InternetAddress("alguien@dominio.com.mx"));
// A quien va dirigido
message.addRecipient(Message.RecipientType.TO, new InternetAddress("quienresibe@dominio.com.mx"));
message.setSubject("prueba de correo");
message.setText("este es el contenido del mensaje");
Transport t = session.getTransport("smtp");
t.connect();
t.sendMessage(message,message.getAllRecipients());
t.close();
}
}
hay esta si no te sale pues buscale por otro lado.
Ahora solo necesitamos un servidor que envie los correos, yo tengo un servidor smtp en windows 2003, pero tambien se puede crear en windows xp profesional, en el panel de control, agregar o quitar programas, agregar o quitar componentes de windows, hay buscamos Servicios de Internet informacion Server(IIS), dentro de eso buscamos Servicio SMTP y lo activamos, damos en aceptar en todo y nos pedira el disco de instalacion, es lo mismo para windows 2003, despues de esto se tiene que configurar el servidor.
Para configurar el servidor y que nos permita enviar correos, tenemos que realizar lo siguiente,
en el boton inicio, seleccionar mi pc dar click derecho y escoger administrar, nos abre una ventana que se llama administracion de equipos, hay buscamos servicios y aplicaciones, dentro de este buscamos Servicios de Internet Information Server(IIS), dentro de este encontramos Default SMTP Virtual Server damos click derecho y escogemos propiedades, nos aparece una ventana escogemos la pestaña de acceso y en la parte de reenvio damos click, hay escogemos la opcion de todas excepto las de esta lista, aceptamos en todo y con eso tenemos nuestro server de correos.
Una vez que se tienen esos archivos en la ruta especificada pasamos a realizar este pequeño codigo.
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
public class Msgsend {
public static void main(String []args) throws Exception{
Properties p = new Properties();
p.setProperty("mail.smtp.host", "localhost");
p.setProperty("mail.smtp.starttls", "true");
p.setProperty("mail.smtp.port", "25");
//p.setProperty("mail.smtp.user", "alguien@dominio.com");
p.setProperty("mail.smtp.auth", "false");
Session session = Session.getDefaultInstance(p,null);
session.setDebug(false);
MimeMessage message = new MimeMessage(session);
// Quien envia el correo
message.setFrom(new InternetAddress("alguien@dominio.com.mx"));
// A quien va dirigido
message.addRecipient(Message.RecipientType.TO, new InternetAddress("quienresibe@dominio.com.mx"));
message.setSubject("prueba de correo");
message.setText("este es el contenido del mensaje");
Transport t = session.getTransport("smtp");
t.connect();
t.sendMessage(message,message.getAllRecipients());
t.close();
}
}
hay esta si no te sale pues buscale por otro lado.
Para crear una sumarizacion de una tabla cree este simple stored procedure.
drop procedure if exists prueba;
delimiter //
create procedure inserta(tabla varchar(20))
begin
declare aux varchar(20);
declare concatena varchar(25);
set concatena := concat('tt_',aux);
set aux := tabla;
#select concatena;
drop table if exists concatena;
create table concatena (cuenta int);
insert into concatena (cuenta) select count(*) from aux;
end
//
delimiter ;
call inserta('2008_06_06_10');
select * from concatena;
drop procedure if exists prueba;
delimiter //
create procedure inserta(tabla varchar(20))
begin
declare aux varchar(20);
declare concatena varchar(25);
set concatena := concat('tt_',aux);
set aux := tabla;
#select concatena;
drop table if exists concatena;
create table concatena (cuenta int);
insert into concatena (cuenta) select count(*) from aux;
end
//
delimiter ;
call inserta('2008_06_06_10');
select * from concatena;
Publicado por
Skuarch
sábado 7 de junio de 2008
Etiquetas:
MYSQL,
skuarch,
stored procedure,
tutorial
Suscribirse a:
Entradas (Atom)
