D.G.I.T.

Instituto Tecnológico de Celaya :: © 2006 Todos los derechos reservados

Ejemplos y Comentarios


Esta sección tiene la finalidad de aportar una serie de ejemplos escritos en PHP para su análisis y comprensión. El código fuente es proporcionado así como los vínculos necesarios para su comprobación en el navegador. Observe detenidamente cada uno de los ejemplos y despeje todas las dudas que le surjan.


Ejemplo 1

Este ejemplo escrito en HTML y PHP muestra cómo acceder a el manejador de bases de datos MySQL a través de la programación. Es importante notar que en este ejemplo se utiliza el lenguaje estructurado de datos SQL para realizar diversas operaciones sobre la base de datos.

El ejemplo comienza con la inserción de un script <?php ... ?> en PHP dentro de una página HTML.

Este script contiene las siguientes operaciones :

Archivo :  php_mysql_1.php

<html>
<head>
<title>PHP utilizando MySQL Ejemplo 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>

<?php

  
// Intenta la conexión con MySQL
   $link = mysql_connect () or die ("No se logro la conexión ...");

  
// Borra la base de datos ETN
   $strqry =  'DROP DATABASE `etn`';
   $qry = mysql_query ($strqry);

  
// Vuelve a crear la base de datos
   $strqry = 'CREATE DATABASE `etn`';
   $qry = mysql_query ($strqry);

  
// Selecciona la base de datos
   $strqry = 'USE `etn`';
   $qry = mysql_query ($strqry);

   // Crea la tabla Proveedores en la base de datos ETN
   $strqry =  'CREATE TABLE `proveedores` ( `id_prov` VARCHAR( 5 ) NOT NULL ,';
   $strqry .= ' `nomb_prov` VARCHAR( 30 ) NOT NULL ,';
   $strqry .= ' `saldo_prov` DECIMAL( 6,2 ) NOT NULL );';
   $qry = mysql_query ($strqry);

   // Inserta dos registros
   $strqry = 'INSERT INTO `proveedores` ( `id_prov` , `nomb_prov` , `saldo_prov` ) ';
   $strqry .= 'VALUES ( \'A25\', \'Servicios Alimenticios S.A. de C.V\', \'3200.00\' );';
   $qry = mysql_query ($strqry);
   $strqry = 'INSERT INTO `proveedores` ( `id_prov` , `nomb_prov` , `saldo_prov` ) ';
   $strqry .= 'VALUES ( \'C4\', \'Tecnología Gastronómica\', \'4370.50\' );';
   $qry = mysql_query ($strqry);

   // Cierra la conexión con MySQL
   mysql_close ($link);

?>

<font color="#006699" size="4" face="Verdana, Arial, Helvetica, sans-serif">
<strong>Ejemplo 1. &nbsp;&nbsp;PHP utilizando MySQL</strong></font><br><br>
<em><font color="#006699" size="5" face="Verdana, Arial, Helvetica, sans-serif">
<strong>E.T.N. Enlaces Terrestres Nacionales</strong></font></em><br>
<font color="#999999" size="4" face="Verdana, Arial, Helvetica, sans-serif">
<strong>Aviso : Base de Datos Generada</strong><br><br>
</font>

<font color="#006699" size="2" face="Verdana, Arial, Helvetica, sans-serif">
Verifique los resultados usando <a href="http://localhost/phpMyAdmin/">phpMyAdmin</a>
</font>

</body>
</html>

 

Al terminar la ejecución de este ejemplo se habrá creado una base de datos llamada ETN con una tabla de nombre Proveedores y dos registros insertados.


Ejemplo 2

Este ejemplo complementa al anterior y muestra la forma en la cual se consulta la información de la tabla Proveedores para integrarla en una página de resultados.

Este script realiza las siguientes operaciones :

Archivo :  php_mysql_2.php

<html>
<head>
<title>PHP utilizando MySQL Ejemplo 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<font color="#006699" size="4" face="Verdana, Arial, Helvetica, sans-serif">
<strong>Ejemplo 2. &nbsp;&nbsp;PHP utilizando MySQL</strong><br><br>
</font>
<em><font color="#006699" size="5" face="Verdana, Arial, Helvetica, sans-serif">
<strong>E.T.N. Enlaces Terrestres Nacionales</strong></font></em><br>
<font color="#999999" size="4" face="Verdana, Arial, Helvetica, sans-serif">
<strong>Consulta</strong><br><br>
</font>

<?php

   // Intenta la conexión con MySQL
   $link = mysql_connect () or die ("No se logro la conexión ...");

   // Selecciona la base de datos
   $db = mysql_select_db ("etn");

   // Realiza la consulta de todos los proveedores
   $strqry = "SELECT * FROM proveedores ORDER BY id_prov;";

   $qry = mysql_query ($strqry);
   $i = mysql_num_rows ($qry);

  
// Despliega el contenido de la tabla

   $row = 0;
   $r = 0;

   // Tabla para las cabeceras...

   print '<table height="30px" width="65%" border="0" bordercolor="#ffffff" bgcolor="#006699">';
   print '<tr>';
   print '    <td width="10%"><font color="#ffffff" size="2" face="Verdana, Arial, Helvetica,
                  sans-serif">ID.</font></td>';
   print '    <td width="30%"><font color="#ffffff" size="2" face="Verdana, Arial, Helvetica,
                  sans-serif">Nombre</font></td>';
   print '    <td width="15%"><font color="#ffffff" size="2" face="Verdana, Arial, Helvetica,
                  sans-serif">Saldo</font></td>';
   print '</tr>';
   print '</table>';

   // Ciclo para recuperar los registros y generar código HTML

   while ($r < $i){

         mysql_data_seek ($qry, $r);
         $row = mysql_fetch_object ($qry);
         $r++;

?>
         <!--Código HTML para definir una tabla por cada registro obtenido en la consulta-->
         <table width="65%" border="0" bordercolor="#006600" bgcolor="#ffffff">

         <tr>
            <td width="10%"><font color="#006699" size="2" face="Verdana, Arial, Helvetica,
                sans-serif">
<?php print $row->id_prov; ?></font></td>
            <td width="30%"><font color="#006699" size="2" face="Verdana, Arial, Helvetica,
                sans-serif">
<?php print $row->nomb_prov; ?></font></td>
            <td width="15%"><font color="#006699" size="2" face="Verdana, Arial, Helvetica,
                sans-serif">
<?php print $row->saldo_prov; ?></font></td>
         </tr>
         </table>

<?php

   } // Fin del while

?>

   <!-- Tabla informativa -->
   <table width="65%" border="0" bgcolor="#ffffff">
   <tr>
      <br>
         <td width="13%">
            <font color="#ff0000" size="2" face="Verdana, Arial, Helvetica, sans-serif">
            <?php print('&nbsp;&nbsp;'.$i.' Proveedor(es) extraido(s)'); ?></font>
      </td>
   </tr>
   </table><br><br>

<?php

   // Cierra la conexión con MySQL
   mysql_close ($link);

?>

</body>
</html>

Vea trabajar el
Ejemplo 2


Ejemplo 3

Este ejemplo también complementa a los dos anteriores y muestra la forma en la cual se actualiza información de la tabla Proveedores. Este ejemplo consta de dos páginas, la primera esta escrita enteramente en  HTML y se encarga de desplegar un formulario para la captura de los datos del proveedor a modificar : identificador, nombre y saldo. La segunda página es dinámica y se encargará de recibir los datos y actualizar el registro cuyo identificador sea igual al capturado en la primer página.

La primer página realiza las siguientes operaciones :

La segunda página realiza las siguientes operaciones :

Archivo :  php_mysql_3.php

<html>
<header>
<title>PHP utilizando MySQL Ejemplo 3</title>
</header>
<body>

<font color="#006699" size="4" face="Verdana, Arial, Helvetica, sans-serif">
<strong>Ejemplo 3. &nbsp;&nbsp;PHP utilizando MySQL</strong><br><br>
</font>

<div align="left">

  <em><font color="#006699" size="5" face="Verdana, Arial, Helvetica, sans-serif">
  <strong>E.T.N. Enlaces Terrestres Nacionales</strong></font></em>
  <font color="#999999" size="4" face="Arial, Helvetica, sans-serif"><br>
  Servicios de Autotransporte en Primera Clase</font><br><br><hr><br>
  <font color="#FF0000" size="4" face="Arial, Helvetica, sans-serif">
  Actualizaci&oacute;n de Proveedores</font>

</div>

<font color="#006699" size="3" face="Arial, Helvetica, sans-serif">
<form action="php_mysql_3a.php" method="post">

   Identificador &nbsp;
   <input name="idProv" type="text" id="idProv" size="10" maxlength="5">
   <font size="2">( Escriba el ID de un proveedor existente )</font><br>
   Nombre &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   <input name="nombProv" type="text" id="nombProv" size="30" maxlength="30">
   <font size="2">( Escriba el nuevo nombre por asignar )</font> <br>
   Saldo &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   <input name="sldoProv" type="text" id="sldoProv" size="10" maxlength="7">
   <font size="2">( Escriba el nuevo saldo por asignar )</font><br><br>
   <input type="submit" value=" Actualizar "><br><br>
   <input type="reset" value="    Limpiar   "><br>

</form>
</font>
</body>
</html>

Archivo :  php_mysql_3a.php

<html>
<head>
<title>PHP utilizando MySQL Ejemplo 3a</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<font color="#006699" size="4" face="Verdana, Arial, Helvetica, sans-serif">
<strong>Ejemplo 3a. &nbsp;&nbsp;PHP utilizando MySQL</strong><br><br>
</font>
<em><font color="#006699" size="5" face="Verdana, Arial, Helvetica, sans-serif">
<strong>E.T.N. Enlaces Terrestres Nacionales</strong></font></em><br>

<?php

   // Recupera ID del proveedor
   $id = strtoupper($_REQUEST["idProv"]);
   $nomb = $_REQUEST["nombProv"];
   $sldo = $_REQUEST["sldoProv"];

   // Intenta la conexión con MySQL
   $link = mysql_connect () or die ("No se logro la conexión ...");

   // Selecciona la base de datos
   $db = mysql_select_db ("etn");

   // Realiza la actualización del proveedor indicado
   $strqry = 'UPDATE `proveedores` SET `saldo_prov` = \''.$sldo.'\', `id_prov` = \''.$id.'\',
               `nomb_prov` = \''.$nomb.'\' WHERE id_prov = \''.$id.'\' ;';

   $qry = mysql_query ($strqry);

   if (!$qry || (mysql_affected_rows()==0))
      print ('<font color="#ff0000" size="4" face="Verdana, Arial, Helvetica, sans-serif">
              <strong>Error : Actualización Fallida.</strong></font>');
   else{
      print ('<font color="#999999" size="4" face="Verdana, Arial, Helvetica, sans-serif">
              <strong>Aviso : Proveedor actualizado exitosamente.</strong></font>
              <font color="#006699" size="2" face="Verdana, Arial, Helvetica, sans-serif">
              <br><br>Verifique las modificaciones
              <a href="http://localhost/ITC-DISCLI/Ejemplos/php_mysql_2.php">
                 utilizando el Ejemplo 2</a>
              </font> ');
   }

   // Cierra la conexión con MySQL
   mysql_close ($link);

?>

</body>
</html>

Vea trabajar el
Ejemplo 3

Funciones MySQL soportadas por PHP

Las funciones para el manejo de MySQL que utilizan estos tres ejemplos se muestran a continuación como un apoyo de consulta.

Nota : Esta tabla NO contiene todas las funciones soportadas por PHP para MySQL solo es un referencia de las aquellas utilizadas en los ejemplos anteriores.

Función

Descripción

mysql_affected_rows

Devuelve el número de filas afectadas de la última operación MySQL

mysql_close

Cierra el enlace con MySQL

mysql_connect

Abre una conexión a un servidor MySQL

mysql_data_seek

Mueve el puntero interno

mysql_fetch_object

Extrae una fila de resultado como un objeto

mysql_num_rows

Devuelve el número de filas de un resultado

mysql_query

Envía una sentencia SQL a MySQL

mysql_select_db 

Selecciona un base de datos MySQL. Establece la base activa que estará asociada con el identificador de enlace especificado

 

Introducción al uso de ADODB

¿Qué es ADODB?.

Es una librería de PHP para trabajar con multitud de Bases de Datos ( MySQL, Oracle, Microsoft SQL Server, Sybase, Sybase SQL Anywhere, Informix, PostgreSQL, FrontBase, SQLite, Interbase (versiones de Firebird y Borland), Foxpro, Access, ADO, DB2, SAP DB and ODBC) .
ADODB es un conjunto de archivos en PHP que permite esta conectividad, esta basado en el mismo concepto de Microsoft ActiveX Data Objects.
Como se mencionó anteriormente esta librería funciona como intermediario entre el programador y el manejador de base de datos.

¿ Por qué utilizar un objeto ADODB para conexión a una base de datos en MS-SQL Server ?

Por seguridad, si no utilizamos la tecnología ADODB y nos conectamos a la base de datos en la forma común de programación, nuestro sistema se vuelve un 90 % vulnerable a cualquier intromisión de algún usuario malicioso.
Se debe tener en cuenta que si se programa directamente una conexión a MS-SQL Server en nuestra aplicación PHP, ésta no funcionará de inmediato debido a que el manejador de base de datos por defecto es MySQL. Deberá ser necesario reconfigurar el servidor Apache.
Por otro lado, si utilizamos programación para lograr una conexión a otro manejador de base de datos, la aplicación de PHP podrá lograr la conexión solo después de hacer ajustes en la configuración del servidor Apache. La desventaja es que la aplicación de PHP será vulnerable a las siguientes situaciones :

· Caídas constantes del servicio de conexión a base de datos
· Inconsistencia de datos en la base de datos
· Vulnerabilidad en los scripts
· Bugs en el sistema
· Fácil acceso a la base de datos por medio de troyanos o virus.

¿ Cómo funciona un ADODB ?

Por medio de scripts que determinan qué tipo de manejador de base de datos se va a utilizar.
Lo que estos scripts hacen es conmutar al tipo de manejador de base de datos que se desea usar y realizan las operaciones necesarias de conexión dependiendo de los parámetros asignados.

Para información detallada así como el software necesario, descargue aquí.

 

Ejemplo 4

El siguiente ejemplo muestra el uso de la tecnología ADOdb. El usuario puede llenar un formulario de encuesta y decidir en que servidor de base de datos registrar su información ( Microsoft SQL Server / MySQL Server ). El script aprovecha esta tecnología para usar el mismo código fuente en el registro de información tan solo al cambiar un valor.



Vea trabajar el
Ejemplo
4

 


I.S.C. Ricardo González González