12.176 cursos gratis
8.742.087 alumnos
Facebook Twitter YouTube
Busca cursos gratis:

Curso de MySQL con PHP

Autor: Ariel Alejandro Wagner
Curso:
9/10 (2 opiniones) |1754 alumnos|Fecha publicaciýn: 10/01/2011
Envýa un mensaje al autor

Capýtulo 10:

 Acceso a las Bases de Datos de MySQL Mediante Páginas Web Dinámicas

En la clase pasada vimos el método de acceder a una librería virtual a través de una página que se utilizaba para consultar una base de datos. Este tipo de consultas se realiza de forma estática por sobre la base de datos debido a que no existen alteraciones en los datos y estos mismos son objetos de exhibición. Sin embargo, quizá en algunas ocasiones, resulte necesario actualizar o cambiar datos en la base de datos. Este tipo de acciones implica que los datos se alteren de algún modo en la base de dato y, por ende, el proceso pase a calificarse como dinámico. Durante esta clase veremos el código utilizado para realizar actualizaciones, anexado y eliminación de datos utilizando el lenguaje PHP y el lenguaje embebido SQL.

Anexar Datos a una Tabla para una Base de Datos

Para anexar datos en una tabla para una base de datos utilizamos algunos comandos específicos del lenguaje SQL más unas funciones específicas del lenguaje PHP. Estos operan en conjunto y nos permiten manipular los procesos de forma conveniente. A continuación, dejo un trozo de código para analizar.

// Conectarse a la base de datos...

@ $db = mysql_pconnect("localhost", "root", "contraseña");

if (!$db) {

echo "";

... mensaje de errores ...

exit;

}

// Cargar la base de datos...

mysql_select_db("libreria");

// Sección para el anexado de datos

$query = "insert into libros values ('".$isbn."', '".$autor."', '".$titulo."', '".$precio."')";

$result = mysql_query($query);

// Resumen final del proceso de anexado...

if ($result){

   echo  mysql_affected_rows()." libro introducido en la base de datos.";

}

Este trozo de código es muy sencillo. En partes se repite para la mayoría de los tipos de consultas, tanto en la conexión de base de datos, en establecer la tabla y la función para pasar la consulta dada. La función mysql_query() permite ser utilizada tanto para consultas estáticas como para consultas dinámicas. La pieza clave en este proceso, se encuentra en cómo es ensamblada la estructura de la consulta según muestra el trozo de código ejemplo. En estos casos, es necesario señalar algunas recomendaciones para obtener el mejor aprovechamiento de esta técnica.

Si observa el código, notará que todos las variables pasadas como datos o valores para cada uno de los campos de la tabla, están rodeados de apostrofes. Esto denota que los campos a insertar son de tipo texto. Sin embargo, podríamos tener inconvenientes si insertamos caracteres que entran en conflicto con la estructura interna del código, como por ejemplo, el apellido O’ Bryan o D’ Volio por citar algunos ejemplos. Para evitar esto, en la clase pasada, he comentado acerca del uso de las funciones addslashes() y streapslashes() para tratar estos problemas. Por tanto, téngase en cuenta estos detalles.

Los valores numéricos no requieren ser encerrados entre apóstrofes. Sin embargo, tendrá que observar el uso del punto como carácter flotante y no la coma. Ello es debido a que SQL solo entiende el formato americano dado que se basa en el estándar ANSI ’94.

Para el caso de fechas, deberá encerrar los valores entre signos numerales. Otra observación con respecto a las fechas, es la posición correcta entre el valor del día y el valor del mes expresado en números enteros. Si Ud., coloca al revés estos campos, puede que tenga inconvenientes. Por ejemplo, para la fecha 12/1/2005 el sistema ANSI ’94 se hace mención del mes de diciembre del día uno del corriente año mes. Si lo leemos con el formato argentino, la fecha haría mención a día doce de enero de 2010. Esto es un grave problema y debe ser cuidadosamente controlado.

Las fechas que maneja MySQL por defecto, utiliza un orden de año, mes y día. Por tanto, si queremos presentar la fecha 12/01/2005, para MySQL la fecha se compondría como 2005/01/12. Aquí tenemos otro tipo de dificultades a la hora de manipular fechas entre PHP y MySQL. Por tanto, se puede acudir al uso o construcción de funciones que permitan crear una adaptación de formatos adecuada. Analicemos la siguiente función que incluye una función nueva llamada ereg().

function convertFecha($fecha){

    ereg( "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})", $fecha, $miFecha);

    //Porbar si el día es adecuado...

    if($miFecha[3] > 31 || $miFecha[3] < 0) {

       $msj="Error de Fecha - Día incorrecto";

       return $msj;

       exit;       

    }

    //Probar si el Mes es adecuado...

    if($miFecha[2] > 12 || $miFecha[2] < 0) {

       $msj="Error de Fecha - Mes incorrecto";

       return $msj;

       exit;

    }

    $laFecha=$miFecha[3]."/".$miFecha[2]."/".$miFecha[1];

    return $laFecha;

}

Esta función toma la fecha ingresada a través del parámetro formal $fecha que es ingresada con el formato de MySQL, por ejemplo 2008-10-05 y la convierte en la fecha 05/10/2005. Lo que hace es simplemente rotar la posición del año por el día y el día por el año respectivamente. La función ereg() se trata de un evaluador de expresiones regulares.

La función verifica los valores que son ingresados y los compara mediante un patrón. Si los valores ingresados coinciden con el patrón, estos valores son aceptados por la función y posteriormente procesados. En cambio, si los valores no coinciden con el patrón, estos mismos, son rechazados e ignorados por la función, lo que significa, que no son procesados. El evaluador junto con el patrón, tan solo acepta el ingreso de caracteres numéricos más el guión que es utilizado para separar los términos que componen la fecha. De esta manera, Ud., puede controlar que el ingreso de los valores se realice de forma adecuada y, en cierto modo, liberar al sistema de potenciales errores de integridad.

El patrón es representado como la cadena "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})" . El patrón evalúa que las fechas ingresadas sean valores numéricos y que dichos valores estén comprendidos dentro de un rango adecuado. Por ejemplo, en el caso del mes sabemos que existen 12 meses y por tanto, colocar valores mayores a doce o menores a cero, sería un error. El patrón mediante la sección ([0-9]{1,2}), permite establecer el ingreso de número de dos dígitos. El resto de los procesos dentro de la función evalúan estos límites de rangos mediante el uso de condicionales básicos.

Eliminar Datos a una Tabla para una Base de Datos

Para eliminar datos de una tabla en una base de datos utilizaremos el siguiente código que se muestra a continuación.

// Conectarse a la base de datos...

@ $db = mysql_pconnect("localhost", "root", "contraseña");

if (!$db) {

echo "";

... mensaje de errores ...

exit;

}

// Cargar la base de datos...

mysql_select_db("libreria");

// Sección para eliminar datos…

$query = "delete libros where autor = '".$autor."'";

$result = mysql_query($query);

// Resumen final del proceso de anexado...

if ($result){

   echo  "Dato eliminado correctamente.";

}

Para eliminar registros, siempre resulta conveniente analizar qué tipo de eliminación requerimos. El comando eliminar puede tener un comportamiento muy distinto al utilizarlo de una u otra manera. Por ejemplo, si Ud., borra utilizando como búsqueda o referencia un campo indexado con clave única, el registro seleccionado será eliminado de forma correcta y será el único al que estará afectado a esta operación. Ahora bien, si Ud., opta por un tipo de campo no indexado y que no posee clave principal, la eliminación de los registros pueden ser más de uno. Ello es debido a que los registros que coincidan con el valor introducido en el parámetro de búsqueda, será afectadas por esta directiva. Por favor, téngase en cuenta estos conceptos.

Actualizar o Modificar Datos a una Tabla para una Base de Datos

Para actualizar datos de una tabla en una base de datos utilizaremos el siguiente código que se muestra a continuación.

// Conectarse a la base de datos...

@ $db = mysql_pconnect("localhost", "root", "contraseña");

if (!$db) {

echo "";

... mensaje de errores ...

exit;

}

// Cargar la base de datos...

mysql_select_db("libreria");

// Sección para actualizar o modificar datos…

$query = "update libros set isbn = '".$isbn."', autor = '".$autor."', titulo = '".$titulo."', precio = '".$precio."' where autor = '".$autor."'";

$result = mysql_query($query);

// Resumen final del proceso de anexado...

if ($result){

   echo  "Dato actualizado correctamente.";

}

La modificación o actualización de datos sufre un efecto casi parecido con el que comenté en eliminar datos respecto a los datos que serán afectados. Si se elije un dato por clave principal la actualización se hará sobre ese exclusivo registro. No obstante, si se hace sobre un campo donde no existe indexación o unicidad de datos, los cambios se verán reflejados sobre este y otros tipos de registros cuyos datos coincidan con el criterio inicial de referencia para el cambio.

Nuestras novedades en tu e-mail

Escribe tu e-mail:



MailxMail tratarý tus datos para realizar acciones promocionales (výa email y/o telýfono).
En la polýtica de privacidad conocerýs tu derechos y gestionarýs la baja.

Cursos similares a Curso de MySQL con PHP



  • Výdeo
  • Alumnos
  • Valoraciýn
  • Cursos
1. Windows. Instalación de Apache, MySQL y PHP
El proceso para instalar Apache en Windows es muy sencillo.  Con este video te... [12/10/10]
1.759
Curso con video
2. PHP y MySQL. Aplicaciones Web: PHP y base de datos MySQL (décima parte)
Programación de aplicaciones Web con PHP y MySQL. Ahora te enseñaremos a conectar a... [02/12/08]
3.751  
3. PHP y MySQL. Aplicaciones Web: base de datos MySQL I (séptima parte)
Programación de aplicaciones Web con PHP y MySQL Ahora estudiaremos la Base de... [02/12/08]
3.225  

ýQuý es mailxmail.com?|ISSN: 1699-4914|Ayuda
Publicidad|Condiciones legales de mailxmail