Foros del Web » Programando para Internet » PHP »

ODBC a host remoto

Estas en el tema de ODBC a host remoto en el foro de PHP en Foros del Web. Hola. He visto varios artículos sobre las conexiones a BBDDs de access en la web. Pero todos ellos asumen que tienes la base de datos ...
  #1 (permalink)  
Antiguo 05/01/2003, 04:42
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 22 años, 4 meses
Puntos: 0
ODBC a host remoto

Hola.

He visto varios artículos sobre las conexiones a BBDDs de access en la web. Pero todos ellos asumen que tienes la base de datos en el mismo host que la aplicación web PHP.

El problema es que este no es mi caso, yo tengo mi aplicación web en un servidor Linux y en la misma intranet está el NT al que quiero conectar (ya tiene el DSN creado).

La función para conectar en PHP a BBDDs mediante ODBC no tiene en ningún sitio para especificarle el host del DSN. Entonces... ¿qué tengo que hacer? ¿Instalar algún software ODBC en la máquina Linux que me "conecte" con el DSN del NT?

Gracias por vuestro tiempo.


Un saludo,
__________________
lical-> Usuario registrado de Linux #254225

ZonaSiete.ORG - GNU/Linux eminentemente práctico
  #2 (permalink)  
Antiguo 05/01/2003, 05:30
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 22 años, 4 meses
Puntos: 0
Aunque para MS SQL hay alguna solución más (http://www.phpbuilder.com/columns/alberto20000919.php3 ), para Access en mi caso la única solución posible es http://www.easysoft.com/products/oob/main.phtml que vale un dinero increíble (y que por supuesto no me compensa para lo que iba a usarla).


Es que no sé para qué se creó Access (bueno, miento, sí que lo sé, para que cuatro personas se forrasen haciendo aplicaciones simples en VBasic y luego complicarnos la existencia a los que nos toca integrar los datos con cosas más serias).


Un saludo,
__________________
lical-> Usuario registrado de Linux #254225

ZonaSiete.ORG - GNU/Linux eminentemente práctico
  #3 (permalink)  
Antiguo 05/01/2003, 06:02
Avatar de Ferdy
Colaborador
 
Fecha de Ingreso: junio-2001
Ubicación: España
Mensajes: 1.430
Antigüedad: 22 años, 10 meses
Puntos: 0
Se me ocurre una cosa..........

Instala un apache y PHP en el servidor NT. Allí colocas un script que haga "toda la magia", es decir conectar a la Base de datos de Access y conectar remotamente a la PostgreSQL/MySQL donde quieras pasar los datos.

En tu server (el Linux) haces un cron que con lynx haga una petición web al script del server NT. Por supuesto, el Apache del server NT solo permitirá el acceso a ese script desde el server Linux.

No sé, por ahora y como "parche" es lo único que se me ocurre.

Salu2.Ferdy
__________________
Born to be free
Por una sociedad del conocimiento libre
  #4 (permalink)  
Antiguo 05/01/2003, 06:28
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 22 años, 4 meses
Puntos: 0
Me has dado una buena idea, a ver si la podemos perfeccionar.

Creo que la salida de ese script podría ser un XML a parsear con Expat en el Linux:

Código PHP:
<?php
echo "<?xml version='1.0' ?>\n";

echo 
"<dbtable>\n";
// para cada fila del resultado de la
// consulta a la BBDD de access:

echo "<row>\n";
echo 
"<field1>".$row['campo1']."</field1>\n";
echo 
"<field2>".$row['campo2']."</field2>\n";
// y así con todos los campos
echo "</row>\n";

echo 
"</dbtable>";
?>
Sólo le falta un header("Content ..."); ¿qué hay que poner para que lo interprete como texto plano?

De este modo podría luego en la aplicación web de la máquina linux hacer algo como:

fopen ("http://IPDELNT/script.php", "r");

para parsearlo posteriormente con Expat.

¿Sería esto posible?


Un saludo,
__________________
lical-> Usuario registrado de Linux #254225

ZonaSiete.ORG - GNU/Linux eminentemente práctico
  #5 (permalink)  
Antiguo 05/01/2003, 06:41
Avatar de Ferdy
Colaborador
 
Fecha de Ingreso: junio-2001
Ubicación: España
Mensajes: 1.430
Antigüedad: 22 años, 10 meses
Puntos: 0
Eso con un pequeño cambio en el diseño del XML estaría mejor, mira esta DTD:
Código:
<!ELEMENT dbtable (row+)>
    <!ELEMENT row (field+)>
        <!ATTLIST row name CDATA #REQUIRED>
    <!ELEMENT field #PCDATA>
De forma que no tengas que interpretar field1,field2,field3,field4....fieldX

Cómo lo ves ?

Salu2.Ferdy
__________________
Born to be free
Por una sociedad del conocimiento libre
  #6 (permalink)  
Antiguo 05/01/2003, 06:58
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 22 años, 4 meses
Puntos: 0
Me parece bien, si mis pocos conocimientos en XML no me engañan, eso da lugar a un fichero como:

Código:
<dbtable>
    <row>
       <field>valorcampo1</field>
       <field>valorcampo2</field>
       <field>valorcampo3</fiedl>
       ...
    </row>
    ...
</dbtable>
¿eso es así, no?

Es que estoy pensando que como el uso que tengo que hacer de esos datos es simplemente de sólo lectura igual no me merece la pena copiarlos en una tabla cada X tiempo, sino pedir al NT este fichero XML y parsearlo cada vez que un cliente necesite estos datos.

De este modo la información de la que se dispone es la actual de la base de datos de access (si se añade o quita algo aparecería reflejado inmediatamente), pero el problema es que no me fío de Access nada nada para pedirle los datos cada vez que un cliente los necesite...

Ya sé, voy a hacer unas pruebas primero en la intranet pidiendo muchas veces seguidas (desde varios puestos) los datos a ver si la cosa se atasca. Si se atasca, genero un fichero xml caché cada 2 minutos

Cuando lo haya probado te cuento.

Por cierto, para generar texto era "Content-type: text/plain".


Un saludo,
__________________
lical-> Usuario registrado de Linux #254225

ZonaSiete.ORG - GNU/Linux eminentemente práctico
  #7 (permalink)  
Antiguo 05/01/2003, 07:07
Avatar de Ferdy
Colaborador
 
Fecha de Ingreso: junio-2001
Ubicación: España
Mensajes: 1.430
Antigüedad: 22 años, 10 meses
Puntos: 0
uhm...... podrías hacer una cache XML, pero también puedes hacer directamente una cache HTML con una hoja de estilo XSLT de forma que el cliente no tenga que esperar al XML, y a la transformación de Expat.....

no se, tu mismo ;)

Salu2.Ferdy
__________________
Born to be free
Por una sociedad del conocimiento libre
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:35.