"> ">

La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Manejo de las bases de datos

Presentaciones similares


Presentación del tema: "Manejo de las bases de datos"— Transcripción de la presentación:

1 Manejo de las bases de datos
Temas: • Conexión del servidor PostgreSQL • Creación y mantenimiento de bases de datos desde PHP • Manipulación de bases de datos y actualizaciones de registros • Listado de funciones de PHP para trabajar con PostgreSQL

2 Conexión del servidor <?php//Ejercicio_1.php
// Connecting, selecting database if (!$dbconn=pg_connect("host=localhost port=5432 user =postgres password=postgres dbname=ventasdb ")) { echo "Error Conectando al servidor de la Base de Datos: " . pg_last_error(); }else echo "Conexion Establecida"; //Cerrando Conexión pg_close($dbconn); ?>

3 Configuración del PHP.ini
1.- Modificamos el PHP.ini para agregar la extensión de pgsql. En ambiente Windows basta con teclear en menú ejecutar php.ini para abrirlo y modificarlo. En linux deberas de localizarlo en la carpeta de Apache Dentro de este archivo, en el caso de windows bastara con descomentar la siguiente línea: extension=php_pgsql.dll 3- Todo esto con el fin de preparar la conexión. Es importante reiniciar el servidor Apache una vez guardados los campos.

4 Consultas a la Base de Datos
<HTML> <HEAD> <TITLE>Pagina index de prueba</TITLE> </HEAD> <BODY> <?php //Ejercicio_2.php /* ********************* */ /* Conexion a PostgreSQL */ /* Conexion a la base de datos */ $conexion = pg_connect("host=localhost port=5432 user =postgres password=postgres dbname=ventasdb "); if (!$conexion) { echo "<CENTER> Problemas de conexion con la base de datos. </CENTER>"; exit; } //Continua

5 Consultas a la Base de Datos
$sql="SELECT * FROM tbl_region ORDER BY id_region;"; /* Ejecuta y almacena el resultado de la orden SQL en $resultado_set */ $resultado_set = pg_Exec ($conexion, $sql); $filas = pg_NumRows($resultado_set); /* Presenta la informacion almacenada en $resultado_set */ for ($j=0; $j < $filas; $j++) { echo "Id: ".pg_result($resultado_set, $j, 0)." <BR> Región: ".pg_result($resultado_set, $j, 1)." <P>"; } /* Cierra la conexion con la base de datos */ pg_close($conexion); ?> </BODY> </HTML>

6 Consultas a la Base de Datos
Cláusula INSERT INTO Ejercicio_3.php - Agregar una Región a la Tabla tbl_region

7 Consultas a la Base de Datos
Cláusula INSERT INTO <?php $action=$_REQUEST['action']; if ( $action == "agregar" ) { $descripcion=$_POST['descripcion']; $sql="INSERT INTO tbl_region (id_region, descripcion) VALUES (NEXTVAL('sq_region_id'), '$descripcion')"; $conexion = pg_connect("host=localhost port=5432 user =postgres password=postgres dbname=ventasdb "); if (!$conexion) { echo "<CENTER> Problemas de conexion con la base de datos. </CENTER>"; exit; } //Continua

8 Consultas a la Base de Datos
Cláusula INSERT INTO pg_query($conexion,$sql) or die("El proceso de actualización falló: " . pg_last_error() ); pg_close($conexion); echo " <SCRIPT language='JavaScript'> <!-- alert('¡Region agregada!'); document.location.href = 'ejercicio_3.php'; --> </script> "; } ?>

9 Consultas a la Base de Datos
<form id="form1" name="form1" method="post" action="ejercicio_3.php"> <input type="hidden" name="action" value="agregar" /> <table width="303" border="1" align="center"> <tr> <td colspan="2"><div align="center"><strong>Regiones</strong></div></td> </tr> <td>Descripción:</td> <td><label> <input name="descripcion" type="text" id="descripcion" /> </label></td> <td colspan="2"><label> <input type="submit" name="Submit" value="Agregar" /> </table> </form>

10 Consultas a la Base de Datos
Ejercicio_4.php Listar el contenido de la tabla Región Colocar un link a la misma página que contenga el código de la región Eliminar la región seleccionada

11 Consultas a la Base de Datos
if ( $action == "borrar" ) { $id=$_GET['id']; $sql="DELETE FROM tbl_region WHERE id_region=$id;"; $conexion = pg_connect("host=localhost port=5432 user =postgres password=postgres dbname=ventasdb "); if (!$conexion) { echo "<CENTER> Problemas de conexion con la base de datos. </CENTER>"; exit; } pg_query($conexion,$sql) or die("El proceso de actualización falló: " . pg_last_error() ); echo "<SCRIPT language='JavaScript'> <!-- alert('¡Registro borrado!'); document.location.href = 'ejercicio_4.php'; --> </script> "; ?>

12 Consultas a la Base de Datos
<?php echo '<h2 align="center">PHP y PostgreSQL</h2>'; echo '<h3 align="center">Lista de Regiones</h3>'; echo '<table align="center" border="1" width="50%">'; echo '<tr><td><b>Descripción</b></td><td> </td></tr>'; $sql="SELECT * FROM tbl_region"; //Query $conexion = pg_connect("host=localhost port=5432 user =postgres password=postgres dbname=ventasdb "); if (!$conexion) { echo "<CENTER> Problemas de conexion con la base de datos. </CENTER>"; exit; } $result=pg_query($conexion,$sql) or die("El proceso de actualización falló: " . pg_last_error() );

13 Consultas a la Base de Datos
// Se hace un loop a través del result $filas = pg_numrows($result); for ($i=0; $i < $filas; $i++){ $estaFila = pg_fetch_row ($result,$i); $id = $estaFila[0]; $descripcion = $estaFila[1]; ?> <tr><td><?= $descripcion ?></td><td><a href="ejercicio_4.php?action=borrar&id=<?= $id ?>">Borrar</a></td></tr> <? } //Fin del loop pg_close($conexion); </table> <br /><br />

14 Consultas a la Base de Datos
Ejercicio_5.php Crear un combo haciendo uso de una función PHP

15 Consultas a la Base de Datos
function crear_combo ($nombre_combo,$codigo_actual,$size_combo,$evento_java_script_form="",$operacion=1){ $conexion = pg_connect("host=localhost port=5432 user =postgres password=postgres dbname=ventasdb "); if (!$conexion) { echo "<CENTER> Problemas de conexion con la base de datos. </CENTER>"; exit; } $sql="SELECT * FROM tbl_region"; $result=pg_query($conexion,$sql) or die("El proceso de actualización falló: " . pg_last_error() );

16 Consultas a la Base de Datos
// Se hace un loop a través del result $filas = pg_numrows($result); echo "<select name='". $nombre_combo . "' size='". $size_combo ."' " . "onChange=\"this.form.operacion.value='". $operacion . "';". $evento_java_script_form ."\">\n"; if ($filas > 0) { for ($i=0; $i < $filas; $i++){ $estaFila = pg_fetch_row ($result,$i); $codigo = $estaFila[0]; $descripcion = $estaFila[1]; if (strlen(trim($descripcion)) > 70) //Largo a mostrar en el combo $titulo=substr(trim($descripcion),0,70); else $titulo=trim($descripcion); if ($codigo_actual == trim($codigo)) echo "<option selected value=" . trim($codigo) . ">" . $titulo . "</option>\n"; else echo "<option value=" . trim($codigo) . ">" . $titulo . "</option>\n"; } //Fin del loop

17 Consultas a la Base de Datos
}else { echo "<option selected value=-1>No hay Datos</option>\n"; } echo "</select>\n"; pg_close($conexion); //Fin de la Función ?>

18 Consultas a la Base de Datos
<body> <?php $codigo_actual = $_POST['cmb_region']; ?> <form id="form1" name="form1" method="post" action=""> <table width="200" border="1"> <tr> <td colspan="2">Regiones</td> </tr> <td>Región:</td> <td><?php crear_combo('cmb_region',$codigo_actual,1);?></td> </table> <input type="hidden" name="operacion" /> </form> </body> </html>

19 Consultas a la Base de Datos
Ejercicio_6.php Trabajar con Combos anidados EL primer combo debe seleccionar la región y el segundo las ciudades que guardan relación con la región seleccionada Ver Archivo Ejercicio_6.php

20 Consultas a la Base de Datos
Ejercicio 7 Crear un archivo de nombre librería.php Crear funciones genericas de conexión a base de datos, colocarlas en el archivo librería.php Hacer pruebas invocando a las funciones realizadas.

21 Consultas a la Base de Datos
Ejercicio 8 Listar el contenido de la tabla tbl_productos, mostrando dos registros por pagina, es decir realice una paginación de registros.

22 Consultas a la Base de Datos
Ejercicio 9 Realizar una página que incorpore las funciones básicas (Consultar, Agregar, Modificar, y Eliminar) sobre la tabla tbl_clientes

23 Consultas a la Base de Datos
Ejercicio 10 Visualizar el contenido de la tabla clientes haciendo uso de las funciones php suministradas por el facilitador (visualizar_ext.php)

24 Consultas a la Base de Datos
Ejercicio 11 Realizar una página que incorpore las funciones básicas (Consultar, Agregar, Modificar, y Eliminar) sobre la tabla tbl_productos. En la medida de lo posible, hacer uso de los códigos suministrados, tales como, visualizar una tabla (visualizar_ext.php), Paginear una tabla, otros que considere.

25 Transacciones Las transacciones son un concepto fundamental de todos los sistemas de bases de datos. El punto esencial de una transacción es que empaqueta múltiples pasos dentro de una operación única, todo o nada. Los estados intermedios entre cada paso no son visibles a otras transacciones concurrentes,y si ocurre alguna falla que previene que la transacción se complete, en definitiva, ninguno de los pasos afectan a la base de datos.

26 Transacciones BEGIN: comienza una transacción en modo encadenado
ROLLBACK Transacción es abortada Posibles cambios ignorados COMMIT: Realiza la transacción actual. Los datos son modificados físicamente en el Sistema de Almacenamiento LOCK:  Explícitamente bloquea una tabla dentro de una transacción

27 Ejemplo manejo de Transacciones
if (!(pg_Exec($link,"BEGIN WORK"))){ echo("Error al iniciar transacción en la base de datos<br>"); //exit(); si estamos en una funcion } $exito= pg_exec($conexion,$sql); if ($ exito){ pg_Exec($link,"COMMIT WORK"); } else { pg_Exec($link,"ROLLBACK WORK"); echo "No se pudo realizar la inserción <br>"; }

28 Transacciones Ejercicio Modificar las funciones del ejercicio 9 para poder trabajar con transacciones.

29 Transacciones if (!(pg_exec($conexion,"BEGIN WORK"))){
echo("Error al iniciar transacción en la base de datos<br>"); exit(); }else{ echo "Inicio de Transacción <br>"; } $exito= pg_exec($conexion,$sql);// or die("El proceso de actualización falló: " . pg_last_error() ); if (!$exito){ pg_exec($conexion,"ROLLBACK WORK"); echo "No se pudo realizar la inserción <br>"; pg_exec($conexion,"COMMIT WORK"); echo " <SCRIPT language='JavaScript'> <!-- alert('¡Registro agregado!'); document.location.href = 'ejercicio_12.php'; --> </script> "; pg_close($conexion);

30 Transacciones Ejercicio_13:
- Hacer uso de la funciones Adodb conection

31 Conexión con ADODB <?php include('adodb5/adodb.inc.php');
$DB = NewADOConnection('postgres'); $server='localhost'; $user='postgres'; $pwd='postgres'; $db='ventasdb'; $DB->Connect($server, $user, $pwd, $db); # M'soft style data retrieval with binds $rs = $DB->Execute("select * from tbl_clientes where rut_cliente=3"); //$rs = $DB->Execute("select * from tbl_clientes where rut_cliente=?",array($key)); while (!$rs->EOF) { print_r($rs->fields); $rs->MoveNext(); }

32 Conexión con ADODB # PEAR style data retrieval
$rs = $DB->Execute("select * from tbl_productos where id_productos=1"); while ($array = $rs->FetchRow()) { print_r($array); } # Alternative URI connection syntax: //$DB = # No need for Connect or PConnect when using URI syntax $ok = $DB->Execute("update tbl_productos set nombre = 'Lapiz Mongol'"); if (!$ok) mylogerr($DB->ErrorMsg()); ?>

33 Transacciones Ejercicio_14:
Hacer uso de la funciones Adodb conection, e implementar una pagina php para realizar las funciones básicas sobre la tabla vendedores


Descargar ppt "Manejo de las bases de datos"

Presentaciones similares


Anuncios Google