Conexión ODBC

¿Cómo estás? Tengo el siguiente problema, tratare de ser lo más detallada posible.
Estoy trabajando con dos servidores uno con windows xp y el otro con windows server 2008.
El servidor que tiene windows xp tiene alojada la página web hecha en php y en el windows server tengo un sistema hecho en visual fox pro donde registro la información de clientes.
Necesito de mi página web ver los datos almacenados en las tablas(archivos dbf) que se encuentran en otro servidor. Me explico: tengo un formulario creado en php que me pide un código del cliente, ese código del cliente debe estar registrado en mi sistema que está en el otro servidor, si el código existe me carga los datos del cliente en la página como nombre, dirección y teléfono.
Me dijeron que eso lo podría hacer mediante ODBC, pero la verdad no tengo ni idea como hacerlo.
Por favor, espero que me ayudes ya que tienes muchos años de experiencia trabajando con php y necesito urgente la solución ya que es para un proyecto.

2 respuestas

Respuesta
1
En efecto, lo puedes hacer mediante ODBC. Para ello deberás declarar un origen de datos en el servidor XP que es el que ejecuta las páginas PHP.
El origen de datos lo tendrás que hacer sobre una unidad que apunte al servidor 2008.
Hazlo desde Panel de Control, Herramientas Administrativas, Origen de Datos ODBC.
Después accedes con las funciones de PHP al respecto.
¿Gracias David no me podrías mandar algún código que me sirva de guía?...
Lo que pasa es que no conozco mucho de php...
Disculpa las molestias...
En el manual tienes algunos ejemplos:
http://es2.php.net/manual/es/function.odbc-connect.php
Bien muchas gracias, pero si no es mucha molestia podrías ayudarme un poco más. Ya que estoy bien desorientada con esto...
Por favor y gracias...
Puedes empezar a hacerlo y me dices dónde te atascas y te voy indicando. Lo que no hago son códigos gratuitos por encargo.
Yo os ayudo con el problema gratuitamente en mi tiempo libre, pero el trabajo lo tenéis que hacer vosotros. Parece justo, ¿no?
Ok. David comenzare a programar y cualquier duda te consulto para que me orientes
Hola David primero hice lo que me dijiste: declare el origen de datos ODBC apuntando a los datos en el servidor 2008... Lo hice en DSN de sistema... Agregue "Driver para o Microsoft Visual FoxPro", luego seleccione tablas libres (porque así las tengo) y en el path coloque la ruta donde está la tablas, por ultimo le coloque como nombre "prueba"
Hice un archivo conexiondbf.php que tiene el siguiente código:
if($conn_dbf=odbc_connect("prueba","","")){
    echo "Conectado correctamente";
    $sql="select * from cliente";
    if($rs_dbf=odbc_exec($conn_dbf,$sql)){
        echo "la sentencia se ejecutó correctamente";
    }else{
        echo "Error al ejecutar la sentencia sql";
    }
}else{
    echo "Error en la conexión con la base de datos";
}
Y me arroja el siguiente resultado:
Conectado correctamente
Warning: odbc_exec() [function. Odbc-exec]: SQL error: [Microsoft][ODBC Visual FoxPro Driver]File 'cliente.dbf' does not exist. , SQL state S0002 in SQLExecDirect in C:\xampp\htdocs\sistema\conexiondbf.php on line 6
Error al ejecutar la sentencia sql
Al parecer no me encuentra la tabla, pero verifique que la ruta que estaba colocando en el path cuando fui a declarar el origen de datos fuera la correcta y así es...
¿Podría ayudarme?
Pues evidentemente parece que no has creado el origen de datos correctamente, o quizás en ese momento no se podía acceder al servidor.
Prueba a hacer primero la prueba en local. Con los ficheros en el mismo ordenador, para ver si es un problema de comunicación.
Hola David, gracias por responder... Bueno ya probé local y si me funciona, incluso probé para que me mostrara los datos de la tabla y los mostró...
Por lo tanto creo que he creado correctamente el origen de datos, el problema está es cuando voy a acceder a los datos del servidor, que me sigue dando ese error que te mostré anteriormente...
La verdad no se que pueda ser, ya que al darme ese error trate de acceder al servidor para ver si era que en ese momento no se podía accesar como me dijiste, pero si pude acceder normalmente.
Ya estoy preocupada...
Te recomendaría que probases dos métodos diferentes en el momento de asignar el origen de datos:
1. Mediante una unidad de red asignada a un recurso del servidor (por ejemplo G: )
2. mediante la expresión de localización del recurso del servidor (por ejemplo: \\Servidor\Recurso )
También puede ser que ODBC tenga una limitación al respecto.
Hola David, gracias por tu sugerencia... Probé de ambas formas y No me funciono..
No tengo idea de cual sea el problema, ya que he probado de todas las formas posibles y no me funciona.
Si se te ocurre otra cosa, te lo agradecería muchísimo.
Disculpa tantas molestias...
Quizás el driver ODBC no acepta conexiones remotas.
Tendrías que explorar otras soluciones. ¿No podrías ejecutar el código en el servidor donde están las bases de datos? ¿Por qué debes hacerlo en dos servidores distintos?
Respuesta
1
La verdad con visualfox no te puedo ayudar mucho, ¿has revisado si la ruta de la conexión odbc es correcta? Es posible que el error tenga que ver con permisos en las tablas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas