You are on page 1of 33

Manejo de las bases de datos

Temas:
Conexin del servidor PostgreSQL
Creacin y mantenimiento de bases de datos desde PHP
Manipulacin de bases de datos y actualizaciones de
registros
Listado de funciones de PHP para trabajar con
PostgreSQL

Conexin 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 Conexin
pg_close($dbconn);
?>

Configuracin del PHP.ini


1.- Modificamos el PHP.ini para agregar la extensin 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
lnea:
extension=php_pgsql.dll
3- Todo esto con el fin de preparar la conexin. 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>
Regin: ".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


Clusula INSERT INTO
Ejercicio_3.php
- Agregar una Regin a la Tabla tbl_region

Consultas a la Base de Datos


Clusula 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


Clusula INSERT INTO
pg_query($conexion,$sql) or die("El proceso de actualizacin 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 Regin
- Colocar un link a la misma pgina que contenga el cdigo de
la regin
- Eliminar la regin seleccionada

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 actualizacin 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>Descripcin</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 actualizacin fall: " .
pg_last_error() );

Consultas a la Base de Datos


// Se hace un loop a travs 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 />

Consultas a la Base de Datos


Ejercicio_5.php
-Crear un combo haciendo uso de una funcin 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 actualizacin fall: " .
pg_last_error() );

Consultas a la Base de Datos


// Se hace un loop a travs 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 Funcin
?>

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 regin y el segundo las
ciudades que guardan relacin con la regin seleccionada
- Ver Archivo Ejercicio_6.php

Consultas a la Base de Datos


Ejercicio 7
- Crear un archivo de nombre librera.php
- Crear funciones genericas de conexin a base de datos,
colocarlas en el archivo librera.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 paginacin de
registros.

Consultas a la Base de Datos

Ejercicio 9
- Realizar una pgina que incorpore las funciones bsicas
(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 pgina que incorpore las funciones bsicas
(Consultar, Agregar, Modificar, y Eliminar) sobre la tabla
tbl_productos.
- En la medida de lo posible, hacer uso de los cdigos
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 transaccin es que empaqueta
mltiples pasos dentro de una operacin 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 transaccin se complete, en definitiva, ninguno
de los pasos afectan a la base de datos.

Transacciones
BEGIN: comienza una transaccin en modo encadenado
ROLLBACK
Transaccin es abortada
Posibles cambios ignorados
COMMIT: Realiza la transaccin actual.
Los datos son modificados fsicamente en el Sistema de
Almacenamiento
LOCK: Explcitamente bloquea una tabla dentro de una
transaccin

Ejemplo manejo de Transacciones


if (!(pg_Exec($link,"BEGIN WORK"))){
echo("Error al iniciar transaccin 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 insercin <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 transaccin en la base de datos<br>");
exit();
}else{
echo "Inicio de Transaccin <br>";
}
$exito= pg_exec($conexion,$sql);// or die("El proceso de actualizacin fall: " .
pg_last_error() );
if (!$exito){
pg_exec($conexion,"ROLLBACK WORK");
echo "No se pudo realizar la insercin <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

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

Conexin 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 bsicas sobre la tabla
vendedores

You might also like