manejo de las bases de datos temas: conexión del servidor postgresql creación y mantenimiento de...

33
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

Upload: alicia-murguia

Post on 24-Apr-2015

26 views

Category:

Documents


0 download

TRANSCRIPT

Page 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

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

Page 2: 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

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);

?>

Page 3: 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

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.

2.- 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.

Page 4: 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

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

Page 5: 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

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>

Page 6: 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

Consultas a la Base de Datos

Cláusula INSERT INTO

Ejercicio_3.php

- Agregar una Región a la Tabla tbl_region

Page 7: 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

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

Page 8: 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

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>";

}?>

Page 9: 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

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> <tr> <td>Descripci&oacute;n:</td> <td><label> <input name="descripcion" type="text" id="descripcion" /> </label></td> </tr> <tr> <td colspan="2"><label> <input type="submit" name="Submit" value="Agregar" /> </label></td> </tr> </table></form>

Page 10: 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

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

Page 11: 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

Consultas a la Base de Datosif ( $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> ";

}?>

Page 12: 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

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() );

Page 13: 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

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 looppg_close($conexion);?>

</table><br /><br />

Page 14: 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

Consultas a la Base de Datos

Ejercicio_5.php

-Crear un combo haciendo uso de una función PHP

Page 15: 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

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() );

Page 16: 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

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

Page 17: 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

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?>

Page 18: 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

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> <tr> <td>Regi&oacute;n:</td> <td><?php crear_combo('cmb_region',$codigo_actual,1);?></td> </tr> </table> <input type="hidden" name="operacion" /></form></body></html>

Page 19: 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

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

Page 20: 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

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.

Page 21: 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

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.

Page 22: 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

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

Page 23: 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

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)

Page 24: 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

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.

Page 25: 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

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.

Page 26: 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

Transacciones

BEGIN: comienza una transacción en modo encadenado

ROLLBACK

Transacción es abortadaPosibles 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

Page 27: 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

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>";}

Page 28: 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

Transacciones

Ejercicio 12.- Modificar las funciones del ejercicio 9 para poder trabajar con transacciones.

Page 29: 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

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>";}else{

pg_exec($conexion,"COMMIT WORK");echo "<SCRIPT language='JavaScript'><!--alert('¡Registro agregado!');document.location.href = 'ejercicio_12.php';--> </script>";

}pg_close($conexion);

Page 30: 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

Transacciones

Ejercicio_13:

- Hacer uso de la funciones Adodb conection

Page 31: 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

Conexión con ADODB

<?phpinclude('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();}

Page 32: 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

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 = NewADOConnection("mysql://$user:$pwd@$server/$db?persist");

# 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());?>

Page 33: 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

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