Vous êtes sur la page 1sur 11

Esta es una forma de utilizar ajax en realidad Todas son bastante parecidas Los parmetro son la url o el Path

o la direccin donde se encuentra el archivo PHP ej: Provincias/guardarProv.php y los parmetros q vas a guardar en un array lo q sea Ejem: Array(Chimborazo,Region Sierra); entonces estos parmetros son enviados con esta funcin y en el archivo PHP al q llama debe aber un echo 1 o 0 por ejemplo indicando si el proceso fue correcto o NO esa respuesta se captura y segn eso se imprime un resultado al usuario final y ya esta pelado el pollo

function GuardarAsincronamente(url, parametros) { var opciones = { //Forma en la que viajan los datos puede ser tambien GET pero no aconsejable porq los datos viajan por el URL casi simpre debe ser POST para q los datos viajen en la cabecera de la peticion method: 'POST' //los parametros que viajan y ate dije los datos q necesitas guarder o consultar o lo tu necesites enviar al servidor para q el te de una respuesta. ,parameters: parametros // el format de la cabecera que viaja al servidor ,contentType:'application/x-www-form-urlencoded' //el formato en el cual se va a convertir los datos para ser enviados al servidor ,encoding:'UTF-8' //Funcion que se ejecuta si no hubo problema con la respuesta q el servidor emite ,onSuccess: function(t) {if (t==1) alert(Almacenamiento correcto) else alert(Hubo un problema y no se almaceno el registro)} //funcin q se ejecuta SI el URL que se senvio no existe ,on404: function(t) { alert('Error 404: Pagina no encontrada');} //function q se ejecuta si hubo algun problema desconocido con la respuesta del servidor.

,onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText);} } var peticion = new Ajax.Request(url, opciones); }

Aqui un ejemplo de connexion Utiliza clases trata de ver porq hago cada paso aqui no te voy a comentar nada por q esto si lo conoces y quiero que me expliques tu cuando llegues Trata de entender porq llamo a tal funcin?? Y Q pasa si no la llamo?? TIPOS DE CONEXION /////////////////////////////////////////////////ESTA es directa /////////////////////////////////////////////////////////////// $conectID = mssql_connect('sqlserver2005.educacion.gov.ec\SQL0503','AdmTRANS2','123jkl'); if (!$conectID) echo 'error de conexion'; mssql_select_db("BD_TRANSACCIONAL",$conectID); $result=mssql_query("select * from HCL_evolucion"); //mssql_fetch_row($result) while ($row=mssql_fetch_array($result)) { $counter++; $c1=$row["EVO_codigo"]; $c2=$row["EVO_motivoCon"]; echo ("$counter Cod1: $c1 Cod2: $c2 \n"); } ////////////////////////////////////////////////ESTA es con ODBC Fijate lo que cambia///////////////////////////////////////////////////////////////7 <?php $conectID = odbc_connect("BD_TRANS","AdmTRANS2","123jkl"); $result=odbc_exec($conectID,"select * from HCL_evolucion"); while(odbc_fetch_row($result)) { $counter++; $c1=$row["EVO_codigo"]; $c2=$row["EVO_motivoCon"];

echo ("$counter Cod1: $c1 Cod2: $c2\n"); } odbc_close($conectID); ?> ////////////////////////////////////////////////////Aqu ya esta en clases hay un archivo para conexin y el otro q solamente lo consume/////////////////////////////////////////////////////////////////7 CLASES CONEXIN //ARCHIVO conexion.php es el archivo q devuelve la conexion <?php class clsConexion { public function fnConexion() { $conectID = mssql_connect('sqlserver2005.educacion.gov.ec\SQL0503', 'AdmTRANS2', '123jkl'); if (!$conectID) echo 'error de conexion'; mssql_select_db("BD_TRANSACCIONAL", $conectID); return $conectID; } } ?> ///////////////////////////////////////////////Aqu es muy importante q veas como referencio al otro archivo y como ocupo la conexin //////////////////////////////////////////////////////////////7 Como concadenas en PHP?? //ARCHIVO pagina.php es el archivo q consume la conexin <?php require_once("conexion.php"); $sql = "select * from HCL_evolucion"; $objConexion = new clsConexion(); $objConexion->fnConexion(); $query = "select EVO_codigo from HCL_evolucion"; $result = mssql_query($query); while ($row = mssql_fetch_array($result)) { echo ($row["EVO_codigo"]. \n"); } unset($objConexion); es muy importante esta lnea X q???? ?>

MANUAL DE ODBC PARA PHP (by darknight)


Esta es una forma de utilizar ajax en realidad Todas son bastante parecidas.........................1 function GuardarAsincronamente(url, parametros)................................................................1 {...............................................................................................................................................1 var opciones = {....................................................................................................................1 method: 'POST'....................................................................................................................1 ,parameters: parametros.......................................................................................................1 ,contentType:'application/x-www-form-urlencoded'...........................................................1 ,encoding:'UTF-8'.................................................................................................................1 ,onSuccess: function(t) {if (t==1) alert(Almacenamiento correcto) else alert(Hubo un problema y no se almaceno el registro)}...............................................................................1 ,on404: function(t) { alert('Error 404: Pagina no encontrada');}.........................................1 ,onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText);}..............................2 }.............................................................................................................................................2 var peticion = new Ajax.Request(url, opciones);...................................................................2 }...............................................................................................................................................2 MANUAL DE ODBC PARA PHP (by darknight).................................................................4 INTRODUCCIN..................................................................................................................5 Cmo, Cundo y por qu usar ODBC?.................................................................................5 Conexin a Bases de Datos.....................................................................................................5 Realizar una consulta..............................................................................................................6 Obtener los datos de una consulta...........................................................................................7 Nmero de filas y nmero de campos de una consulta...........................................................8 Relacin entre nombre de campo y nmero de columna........................................................8 Otras funciones interesantes....................................................................................................8 Ejemplos prcticos..................................................................................................................9 Insertar un registro en la Base de Datos..............................................................................9 Actualizar un registro de la Base de Datos.......................................................................10 Eliminar un registro de la Base de Datos..........................................................................10 Conclusiones Finales.............................................................................................................11

INTRODUCCIN.
Este es un breve manual dnde intentar explicar como usar ODBC en PHP, intentar no divagar demasiado e ir directamente a los casos prcticos. Espero que os sea de ayuda. En este manual al referirme a ODBC, me refiero a las instrucciones con que PHP permite manejar un DSN de sistema que acceda a una base de datos de cualquier tipo, se da por supuesto que este DSN de sistema est correctamente configurado, apuntando a la base de datos deseada y con el controlador correcto para esta BD. Las instrucciones ODBC que se pueden utilizar con PHP, son muchas y muy sencillas, permitindonos de esta manera hacer todas las operaciones bsicas necesarias para manejar una BD.

Cmo, Cundo y por qu usar ODBC?


Para empezar tres preguntas en una. Intentemos dar una explicacin breve y global que intente responder a las tres a la vez, eso si, sin ponernos demasiado puristas, y aceptando cualquier otra opinin mejor formada. Usaremos ODBC cuando tengamos que atacar una base de datos que no sea ninguna de las que PHP maneja cmodamente, mediante instrucciones creadas especficamente para dichas BD, es decir, PostgresSQL, MySQL, y Oracle 8, principalmente. Aunque PHP tambin tenga instrucciones para otras BD. PHP tiene un repertorio de instrucciones para manejar ODBC, que por su sencillez hace, que una vez hemos aprendido a manejarlas correctamente nos resulte ms sencillo trabajar siempre con ests instrucciones que no con otras de PHP para una BD concreta, ejemplo: INTERBASE. Si ya hemos aprendido a manejar una vez las instrucciones para ODBC, al manejar una BD ACCESS, en vez de buscar las instrucciones para INTERBASE, ver sus particularidades, el orden de los parmetros, el nmero de estos, etc., etc., pues podemos definir un DSN de sistema para acceder a la BD de INTERBASE, y atacar esta con las mismas instrucciones que ya conocemos. Por supuesto, esto tiene sus ventajas y sus inconvenientes, as que debe ser el diseador el que tome la ltima decisin. Para terminar con este apartado, decir que para mi ODBC, no es una manera mejor, ni peor de acceder a una BD en concreto, es simplemente una opcin ms de la que disponemos.

Conexin a Bases de Datos

Para conectarnos a una base de datos, en general, necesitaremos la siguiente informacin: Equipo que alberga la base de datos Usuario de la base de datos Clave de la base de datos Nombre de la base de datos Puerto de la conexin

Como resultado de estos datos debemos obtener un identificador de conexin que se utilizar posteriormente para realizar las distintas operaciones sobre la BD. Ahora veremos como se lleva a cabo la operacin de conexin con la BD. (Los parmetros entre corchetes son opcionales) $conexion = odbc_connect($dsn, $usuario, $clave[,int tipo_cursor]); $conexion: Variable que utilizaremos para hacer referencia a la conexin establecida. $dsn: Variable que contendr el nombre del DSN. Tambin podemos utilizar directamente el nombre asignado a nuestro DSN entre comillas dobles. Ej: GESTION $usuario y $clave: Cmo sus nombres indican contendrn el nombre del usuario de la BD y la clave de la BD de dicho usuario. Tambin es posible utilizar estos directamente encerrados entre comillas dobles. Ej: $conexion = odbc_connect("GESTION","usuario","clave") or die ("No se pudo conectar con Gestin"); Una conexin persistente con ODBC se realizara con: $conexion = odbc_pconnect($dsn, $usuario, $clave[,int tipo_cursor]); Con ODBC, al contrario que ocurre con MySQL, no es necesaria una segunda instruccin para elegir la BD con la que vamos a trabajar ya que con el DSN, esta queda perfectamente identificada.

Realizar una consulta


Usando la expresin, $res = odbc_exec($conexion, $consulta);

obtenemos un descriptor de los resultados de la consulta. Un ejemplo ms detallado de como utilizar odbc_exec, con todos los pasos a seguir sera: //En esta lnea construimos la consulta SQL $sqlcodfamilia = "select CODFAMILIA FROM FAMILIA WHERE DESCRIPCIO = '$familia' "; //Realizamos la consulta $rescodfamilia = odbc_exec($conexion, $sqlcodfamilia) or die ("no se ha podido realizar la consulta"); //Obtenemos el dato del campo deseado de la BD $codfamilia = odbc_result($rescodfamilia, "CODFAMILIA"); //Liberamos el espacio de memoria ocupado odbc_free_result($rescodfamilia); Todas ests instrucciones las veremos en profundidad a lo largo de este manual.

Obtener los datos de una consulta


La instruccin para obtener una determinada fila de una consulta sera: $fila = odbc_fetch_row($res[,$num_fila]); Si omitimos $num_fila recupera la siguiente fila de la consulta. Si lo ponemos recuperar ese nmero de fila. Un ejemplo prctico: //Construimos la consulta y la ejecutamos $sqltipo="SELECT TIPODOC FROM DOCUMENTOS ORDER BY TIPODOC"; $restipo=odbc_exec($basedoc,$sqltipo);

//Este bucle recorre la consulta fila a fila, comprueba la condicin e introduce los //resultados de la consulta en un desplegable. Como podemos observar si la consulta no tiene //resultados nunca entrara en el bucle.

while(odbc_fetch_row($restipo)) { $tipo=odbc_result($restipo, "TIPODOC"); if($tipodoc==$tipo) { echo "<option selected>$tipo</option>"; } else { echo "<option>$tipo</option>"; } } echo "</select>; //Liberamos el espacio de memoria ocupado por la consulta odbc_free_result ($restipo);

Nmero de filas y nmero de campos de una consulta


$num = odbc_num_rows($res); Obtiene el nmero de filas obtenidas en una determinada consulta. $num = odbc_num_fields($res); Obtiene el nmero de campos obtenidos en una determinada consulta.

Relacin entre nombre de campo y nmero de columna


El argumento $res de la funcin que se describe a continuacin se supone que es un descriptor de los resultados de una consulta, vlido obtenido mediante una consulta previa. $nombre_campo = odbc_field_name($res, $num_campo); Devuelve en $nombre_campo, el nombre del campo de la BD, que est en el nmero de columna indicada en $num_campo en el resultado de una consulta.

Otras funciones interesantes


Como hemos visto en un ejemplo anterior para obtener el valor de un campo de una consulta, bastar con esta instruccin:

odbc_result($res, $campo); $campo, deber contener el nombre del campo de la consulta cuyo valor se desea obtener. Se puede utilizar directamente el nombre del campo, encerrado entre comillas dobles. Para liberar el espacio de memoria ocupado por una consulta utilizaremos: odbc_free_result($res); Para cerrar la conexin con una base de datos utilizaremos: odbc_close($conexion); Es muy importante distinguir entre el descriptor de la consulta y el descriptor de la conexin, ya que son cosas totalmente distintas. Nos evitaremos muchos problemas si ponemos nombres significativos a nuestras variables.

Ejemplos prcticos
Insertar un registro en la Base de Datos.
<? //Establece una conexin con la BD y lanza un mensaje de error en el caso de que esta no se haya realizado con xito $conexion = ODBC_CONNECT("GESTION","USUARIO","jr4582") or die ("No se pudo conectar con Gestin"); //Inserta un registro en nuestra BD, en los campos indicados, con los valores que contengan las variables indicadas en la clusula VALUES $sqlinsert ="INSERT INTO DOCUMENTOSFICHA (INDICE, DESCRIPCION, USUARIOALTA, FECHAALTA, USUARIOMOD, FECHAMOD, REF, AMPDESCRI, EMPRESA, RUTAACCESO, TIPODOC) VALUES ($indice, '$descripcion', '$cusuario', DATE(), '$cusuario', DATE(), '$referencia', '$observaciones', '$cempresa', '$ficherogz', '$tipo')"; odbc_exec($conexion, $sqlinsert); //Cierra la conexin con la BD y despus de esto nos lleva a la pgina indicada en la instruccin header();

odbc_close($conexion); header("Location:principal.php"); ?>

Actualizar un registro de la Base de Datos.


<? //Establece una conexin con la base de datos y arroja un error, si esta no se ha realizado //con xito $conexion = ODBC_CONNECT("GESTION","usuario","clave) or die ("No se pudo conectar con Gestin"); //Actualiza una fila de nuestra Base de Datos tal y como se indica en la instruccin SQL $sqlUpd="UPDATE FICHADOC SET DESCRIFICHA='$descripcion', REF='$referencia', TIPODOC='$tdoc', AMPDESCRI='$observaciones' WHERE INDICE=$indice"; $res=odbc_exec($conexion, $sqlUpd) or die ("La actualizacin ha fallado"); //Despus de ejecutar la instruccin volvemos a una pgina determina por el desarrollador header("Location:principal.php");

Eliminar un registro de la Base de Datos.


<? // Establece una conexin con nuestra BD, arroja un error si esta no se ha realizado //correctamente, y la instruccin SQL borra el registro de la base de datos que coincida con //el valor de la variable $indice en la tabla FICHADOC $conexion = ODBC_CONNECT("GESTION","USUARIO","CLAVE") or die ("No se pudo conectar con Gestin"); $sql="DELETE FROM FICHADOC WHERE INDICE=$indice"; odbc_exec($conexion,$sql);

//Despus de ejecutar la instruccin volvemos a una pgina determina por el desarrollador header("Location:principal.php"); ?>

Conclusiones Finales
Casi siempre podremos utilizar ODBC, para comunicarnos con una Base de Datos de cualquier tipo, as que estas instrucciones, se puede decir, que son las ms genricas para la interaccin con una BD y por lo tanto nos permiten obviar el tipo de la Base de Datos, con la que estemos trabajando, as como sus particularidades, lo cual en algunos momentos, sin duda, es una gran ventaja, y quiz nuestra mejor opcin. Para intentar sacar el mximo partido a este breve manual, es recomendable que si an no tenemos suficientes conocimientos de SQL busquemos un buen manual de SQL, que al fin y al cabo es el lenguaje que nos permitir comunicarnos con la BD. Este manual es un primer acercamiento al manejo de BD mediante ODBC, y aunque como siempre la mejor manera de aprender es practicando, quiz estos pequeos ejemplos os ahorren mucho tiempo y trabajo, al menos esa es la intencin. Perdonad los posibles errores.