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

Post on 24-Apr-2015

26 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

?>

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.

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

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>

Consultas a la Base de Datos

Cláusula INSERT INTO

Ejercicio_3.php

- Agregar una Región a la Tabla tbl_region

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

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

}?>

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>

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

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

}?>

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

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

Consultas a la Base de Datos

Ejercicio_5.php

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

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

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

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

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>

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

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.

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.

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

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)

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.

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.

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

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

Transacciones

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

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

Transacciones

Ejercicio_13:

- Hacer uso de la funciones Adodb conection

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

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

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

top related