Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ^Tifa^

#631
Suele pasar  :D

La desesperacion es parte del fracaso jejejejejje  :-*   :-*
#632
Esto deberia ir en el Subforo de Base de Datos.....

Asi como he visto varios temas regados en distintas areas referentes a Base de Datos deberian estar en el subforo de Base de Datos.

Aparentemente, muchos usuarios aun desconocen la existencia de este Subforo.
#633
Es posible, pero en el CPanel tienes que crear o configurar un usuario existente dentro del motor de Base de Datos. Y asegurarte que el 'host' de este usuario, es o la IP publica de tu maquina (Si solo eres tu que siempre vas a conectarte) o decirle al MySQL remoto que de acceso global (cualquier PC desde cualquier parte) cambiandole el host a ese usuario creado o existente, Ejemplos:

Usuario donde solo tu IP publica puede conectarse remotamente a MYSQL:

'usuario'@'200.23.45.10'

Donde 200.23.45.10 = Tu IP publica (Recuerda si el host de ese usuario es tu IP publica solo podras conectarte remoto desde tu misma red, no podras ir a un cyber o similar y conectarte remoto a dicho usuario, ya que solo la IP anterior tiene acceso a conectarse remotamente a MySQL con ese usuario).

Usuario donde cualquier IP puede conectarse a MySQL remotamente:

'usuario'@'%'

Donde % = Cualquier IP desde cualquier ubicacion.

Recuerda, todo lo que va despues del arroba(@) es el 'host' del usuario remoto. Yo se asignar o actualizar el 'host' de un usuario mediante shell por MySQL con el usuario Admin del motor, se que se hace en CPanel de manera mas amistosa y grafica, pero ciertamente no recuerdo para guiarte.

Otro asunto, ten pendiente que si tu aplicacion al ser basada en .NET usara algun ODBC por lo cual las conexiones dependiendo la banda ancha disponible, seran un pelin mas lentas a responder sobretodo porque estaras trabajando en base a un motor de DB remoto y no local.
#634
Bases de Datos / Re: Bloqueo de tablas
3 Diciembre 2009, 03:20 AM
Bueno DickJunior, segun lo expresado por ti finalmente, el ejemplo expresado por mi (realizar 3 peticiones en 1 sola consulta) no aplicaria para tu caso. No se como vaya en PHP (Si por cada consulta SQL realize conexión a la DB, preparar consulta, aplicar consulta y salir) porque si en PHP funciona de esta manera, aun lograras la manera de validar la sección de usuario y enviar un lock table, al finalizar la consulta se eliminaria de la cache de memoria y las tablas quedarian en unlock. La unica via de poder aplicar un lock table y que permanezca funcional como esperas que hagas, seria mantener una sección conectada en el motor DB sin deslogearse, poder llenar un formulario mientras tanto para finalmente, enviar 1 sola consulta:

Código (sql) [Seleccionar]
INSERT INTO TABLA VALUES('algo'); UNLOCK TABLES;

Lamentablemente yo no se como PHP maneja las conexiones al motor de base de datos o como hacer una especie de memlock de PHP en el motor que permita que identifiques un usuario con una DB y se mantenga ahi en sección logeado hasta que llenes tu formulario y pulses enviar.

Espero de antemano, que en la sección PHP te clarifiquen si es posible esto dentro de PHP como tal, autentificar una consulta SQL y permanecer anclado al motor hasta que ocurra un evento en PHP.
#635
.NET (C#, VB.NET, ASP) / Re: consulta sql access
3 Diciembre 2009, 03:04 AM
No te vale con BETWEEN???

SELECT * FROM tabla WHERE fecha BETWEEN '2009/10/23' AND '2008/11/20'

Por ejemplo.
#636
Bases de Datos / Re: Bloqueo de tablas
3 Diciembre 2009, 02:51 AM
Si efectivamente eso es correcto. (aunque no se nada sobre PHP).

Recuerda  ❶ que en el CPU como tal nada (aunque digan que es multitarea y corre 2 procesos a la vez) nada, realmente ejecuta 2 procesos a la vez (Por eso se ha creado semaforos, memoria compartida, colas, etc, etc), asi  mismo ocurre en el motor de base de datos, la diferencia de ejecucion de una consulta u otra se diferenciaran por fraciones de milisegundos (nanosegundos en este caso, estan en cache de memoria).

Pero yo particularmente, no recomendaria esto por la masivas lockeos y deslockeos en fraciones de nanosegundos por una consulta generada por usuarios, como ya habia expuesto.

PD: He supuesto que la conexión mediante el script no se hara siempre con el mismo usuario, ya que no tendria mucha logica lockear una tabla si se usa un unico usuario, el lockeo no aplicaria para este solo si es de lectura, esto sin contar que el mismo ha afirmado que lo prueba por shell y phpadmin y funciona, entonces supongo que no se refiere a un unico usuario.
#637
Aunque no entiendo del todo tu peticion. Lo que he entendido es, que tienes dos tablas una de Usuarios (Amigos) y otra donde llegaran los Mensajes:

Código (sql) [Seleccionar]


mysql> describe Mensajes;
+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| id_mensajes | tinyint(4)   | YES  |     | NULL    |       |
| id_amigo    | tinyint(4)   | YES  | MUL | NULL    |       |
| mensaje     | varchar(100) | YES  |     | NULL    |       |
+-------------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)


mysql> describe Usuarios;
+----------+------------+------+-----+---------+----------------+
| Field    | Type       | Null | Key | Default | Extra          |
+----------+------------+------+-----+---------+----------------+
| id_amigo | tinyint(4) | NO   | PRI | NULL    | auto_increment |
| amigo    | char(20)   | YES  |     | NULL    |                |
+----------+------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)



Lo anterior es solo un ejemplo, 1 usuario (1 amigo) puede enviarle 1 mensaje a un amigo, y 1 amigo puede tener varios mensajes. (En el ejemplo que voy a exponerte)

La tabla Usuarios tiene los siguientes registros:

Código (sql) [Seleccionar]


mysql> select * from Usuarios;
+----------+----------+
| id_amigo | amigo    |
+----------+----------+
|        1 | Fernando |
|        2 | Mario    |
|        3 | Maritza  |
|        4 | Juan     |
|        5 | Juana    |
+----------+----------+
5 rows in set (0.00 sec)



Y puedes se le envia por ejemplo algunos mensajes a Fernando y Maritza:

Código (sql) [Seleccionar]

mysql> insert into Mensajes values(1,1,'Hola Fernando solamente pasaba a saludarte'), (1,1,'Hola Fer!, como vas');

mysql> insert into Mensajes values(3,3,'Maritza no te olvides de sacar la basura'), (3,3,'Hola Maritza nos vemos manana'), (3,3,'Maritz Llamame pronto!!..Carlos');


Ahora la tabla Mensajes tendria:

Código (sql) [Seleccionar]

mysql> select * from Mensajes;
+-------------+----------+--------------------------------------------+
| id_mensajes | id_amigo | mensaje                                    |
+-------------+----------+--------------------------------------------+
|           1 |        1 | Hola Fernando solamente pasaba a saludarte |
|           1 |        1 | Hola Fer!, como vas                        |
|           3 |        3 | Maritza no te olvides de sacar la basura   |
|           3 |        3 | Hola Maritza nos vemos manana              |
|           3 |        3 | Maritz Llamame pronto!!..Carlos            |
+-------------+----------+--------------------------------------------+
5 rows in set (0.00 sec)



Donde id_amigo corresponde al id_amigo de la tabla Usuarios. Ahora para que Fernando y Maritza lean sus mensajes:

Código (sql) [Seleccionar]

mysql> select Usuarios.amigo, Mensajes.mensaje from Usuarios natural join Mensajes;
+----------+--------------------------------------------+
| amigo    | mensaje                                    |
+----------+--------------------------------------------+
| Fernando | Hola Fernando solamente pasaba a saludarte |
| Fernando | Hola Fer!, como vas                        |
| Maritza  | Maritza no te olvides de sacar la basura   |
| Maritza  | Hola Maritza nos vemos manana              |
| Maritza  | Maritz Llamame pronto!!..Carlos            |
+----------+--------------------------------------------+



O para que solo Fernando vea sus mensajes:

Código (sql) [Seleccionar]

mysql> select Usuarios.amigo, Mensajes.mensaje from Usuarios inner join Mensajes where Usuarios.id_amigo = 1 and Mensajes.id_amigo = Usuarios.id_amigo;
+----------+--------------------------------------------+
| amigo    | mensaje                                    |
+----------+--------------------------------------------+
| Fernando | Hola Fernando solamente pasaba a saludarte |
| Fernando | Hola Fer!, como vas                        |
+----------+--------------------------------------------+
2 rows in set (0.00 sec)

#638
Bases de Datos / Re: Bloqueo de tablas
3 Diciembre 2009, 02:24 AM
Supongo que te refieres a si es funcional en PHP puesto que cuando preparas una consulta con el API de MySQL en PHP haces 1 sola peticion....

No hagas en el codigo PHP consultas divididas, puedes incluir todo lo que quieres en 1 sola consulta, mas o menos asi:

Código (sql) [Seleccionar]
LOCK TABLE tabla WRITE; INSERT INTO tabla VALUES('algo'); UNLOCK TABLES;

Asi se lanzarian en 1 sola consulta 3 juntas. (Puedes probarlo via shell para que veas como funciona) pero ten la constancia que esto solo lockeara la tabla en fracion de milisegundos, (solamente hasta que se inserte o actualize o se cumpla la consulta que va en el medio de lock tables y unlock tables) seguido termine la consulta se desbloqueara la tabla, esto aunque funcione yo no te lo recomendaria, ya que haria constantes lockeos y desbloqueos de tablas en el motor muchas veces por fraciones de milisegundos. Solamente si estas seguro que es un area que no sera muy concurrente en modificaciones, podrias aplicar la peticion de la manera anterior o podrias (Aunque no se si existe en PHP) aplicar un HERE DOCUMENT dentro de tu codigo.

Pero de poderse se puede tu peticion.
#639
Bases de Datos / Re: Bloqueo de tablas
3 Diciembre 2009, 01:32 AM
Hola.

Puedes activar dicho mandamiento con :

LOCK TABLE nombre_tabla  WRITE;

dicho mandamiento permite que el usuario que Lockeo la tabla en escritura sea el unico que en su sección tenga capacidad de escritura/lectura en la tabla en cuestion, hasta que ese usuario libere el lockeo de la tabla con UNLOCK TABLES;

Si otro usuario inicia sesion y intenta actualizar/modificar/etc la misma tabla mientras esta lockeada por otro usuario en su session, la consulta se quedara en espera hasta que sea liberado el lock por el usuario que lo genero inicialmente, ya liberado la consulta en espera sera realizada.



#640
Bueno para los gustos  :-*   :-*   :-*

A la larga todo es relativo, si yo conozco mas o menos la extension exacta del dato a introducir en un campo y que este dato sea caracter (nombres, apellidos, direccion, etc) entonces suelo utilizar CHAR, si son datos de una longitud muy variable (como mensajes en un foro, libro de visitas, formularios, etc) pues ahi si me inclino por VARCHAR.

En caso de como dices carnes, numeros de serie que incluyan caracteres y numeros... depende del motor de DB del que estemos hablando, si es Oracle aprovecho NCHAR (maneja caracteres y numeros) pero si es MySQL como este tipo de dato no existe, pues BINARY  :rolleyes:

Creo que es cuestion de gustos y de experiencias personales los que a la larga te hacen inclinarte por una cosa o la otra por variadas razones.

:-*   :-*   :-*