Buscador


En todo Internet
En Uterra.Com

Contenidos


El código que vamos a presentar a continuación viene a cubrir dos objetivos fundamentales. Por un lado, vamos a ver como podemos crear diferentes registros con los datos enviados a través de un campo textarea. Por otro lado, vamos a ver un caso que nos exigirá hacer lo antedicho, como es el caso de realizar cálculos estadísticos, y veremos el gran potencial de MySQL.

Como ya vimos en este artículo, podemos calcular la media aritmética de un conjunto de datos fácilmente, si los datos los pasamos por un array. No obstante esto tiene algunas limitaciones, siendo la fundamental, que los datos con los que operamos no los podemos guardar para utilizarlos en otro momento. Otras limitaciones podrían ser los tipos de cálculos que podemos realizar.

Antes de continuar, haré un inciso. Este código va a ser utilizado para un caso muy concreto y especifico, como es el cálculo estadístico, cosa que para algunos puede resultar poco útil. Pero en esencia, puedes utilizar este mismo código para guardar, por ejemplo, los títulos de tus películas favoritas, eso si, tendrías que cambiar el tipo de campo de la base de datos, de “double” a “varchar”, “text”, etc. Por supuesto, también eliminar la parte de cálculo estadístico, ya que si no hay valores numéricos, podría dar error, o sencillamente no habría respuesta.

Dicho esto, vamos a comentar un poco en que consiste el código.

1) Lo primero que necesitamos es un formulario, nos vale perfectamente el formulario del artículo antedicho.

2) Al igual que en el caso mencionado, enviaremos los valores numéricos separados por saltos de línea. Precisamente los saltos de línea, los usuaremos para separar los diferentes valores numéricos unos de otros.

3) Una vez tenemos los valores en un array, podemos ya guardar estos datos en nuestra base de datos.

4) Una vez los valores están en la base de datos, mediante MySQL vamos a calcular algunos datos estadísticos, como la media, desviación típica, tamaño de la muestra, etc.

5) Mostraremos la tabla de resultados estadísticos.

6) Mostramos el conjunto de datos que hemos analizado.

7) Último, y muy importante para el caso que nos ataña. Eliminar los datos guardados en la base de datos, para que los cálculos que realicemos sean únicamente de los datos que introducimos, y no se acumulen datos de otros cálculos en la base de datos.

Dicho esto, también quiero añadir, ya que hemos tratado el tema de la estadística, algunos operadores de MySQL que serán de gran interés para el desarrollo de cálculos estadísticos de tipo paramétrico, estos son:

AVG ---------- media aritmética.
SUM ---------- sumatorio o suma.
COUNT ---------- tamaño de la muestra.
MAX ---------- valor máximo.
MIN ---------- valor mínimo.
VAR_POP ---------- varianza población.
STDDEV_POP ---------- desviación típica o estándar de la población.
VAR_SAMP ---------- varianza muestra.
STDDEV_SAMP ---------- desviación típica o estándar de la muestra.

Por ultimo, podréis ver el código SQL de la tabla para importarla a vuestra base de datos.

El código es el siguiente:

----------- form.php
<html>

<head>
<title>Cálculos estadísticos con PHP y MySQL.</title>
<meta name="robots" content="noindex, nofollow" />
</head>

<body>
<p>Introduce valores numéricos separándolos en diferentes líneas pulsando INTRO.</p>

<form method="POST" action="procesa_valores.php">

    <p><textarea rows="20" name="valores" cols="40"></textarea></p>
    
    <p><input type="reset" value="Restablecer" name="B2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="submit" value="Enviar" name="B1"></p>
</form>

</body>

</html>

----------- procesa_valores.php

<?php
error_reporting
(-1);
ini_set("display_errors"1);


$valor $_POST["valores"];        // Recibimos valores de textarea 

$valore chop($valor);    // Elimina saltos de linea y espacio, pero solo al final de la cadena 

$valores nl2br($valore);         // Agregamos los saltos de linea <br /> 

// Creamos array con los datos recibidos usando como separador el salto de linea

$array_datos explode("<br />"$valores);


    foreach (
$array_datos as $valor)         // Creamos un bucle foreach
    


    include(
"abre_conexion.php");     // Guardamos los datos en una base de datos

    
$_GRABAR_SQL "INSERT INTO $tabla (valores) VALUES ('".$valor."')"
    
mysql_query($_GRABAR_SQL);

    } 

?>
<html>

<head>
<title>Cálculos estadísticos con PHP y MySQL.</title>
<meta name="robots" content="noindex, nofollow" />
</head>

<body>

<?php
// Realizamos algunos calculos estadisticos que pueden ser de interes
// ---------------------------------------------------------------- 
// Operacion con columna: SUMA

$suma_columna mysql_query("SELECT SUM(valores) FROM $tabla,$conexion_db); 

while (
$registro_suma mysql_fetch_row($suma_columna)){ 

       foreach(
$registro_suma as $calcular_suma){ 

      
// echo "Suma = $calcular_suma<br>"; 
 


// ----------------------------------------------------------------
// Operacion con columna: MEDIA ARITMETICA

$media_columna mysql_query("SELECT AVG(valores) FROM $tabla,$conexion_db); 

while (
$registro_media mysql_fetch_row($media_columna)){ 

       foreach(
$registro_media as $calcular_media){ 

      
// echo "Media = $calcular_media<br>"; 
 


// ---------------------------------------------------------------- 
// Operacion con columna: DESVIACIÓN TÍPICA MUESTRAL

$d_tipica_m mysql_query("SELECT STDDEV_SAMP(valores) FROM $tabla,$conexion_db); 

while (
$registro_d_tipica_m mysql_fetch_row($d_tipica_m)){ 

       foreach(
$registro_d_tipica_m as $calcular_d_tipica_m){ 

      
// echo "D. típica = $calcular_d_tipica_m<br>"; 
 


// ---------------------------------------------------------------- 
// Operacion con columna: NUMERO DE CASOS

$casos_columna mysql_query("SELECT COUNT(valores) FROM $tabla,$conexion_db); 

while (
$registro_casos mysql_fetch_row($casos_columna)){ 

       foreach(
$registro_casos as $calcular_casos){ 

      
// echo "N. de casos = $calcular_casos<br>"; 
 


// ---------------------------------------------------------------- 
// Calculamos la varianza muestral
$calcular_vari_m pow($calcular_d_tipica_m2);

?>
</table>

<?php
    
// Mostramos los resultados estadisticos en una tabla
echo "
<table border=\"1\" width=\"600\" style=\"font-family: Verdana; font-size: 10pt\" id=\"table1\">
    <tr>
        <td colspan=\"2\">
        <p align=\"center\"><b>CÁLCULOS ESTADÍSTICOS</b></td>
    </tr>
    <tr>
        <td width=\"254\">Media: </td>
        <td>
$calcular_media</td>
    </tr>
    <tr>
        <td width=\"254\">Varianza muestral: </td>
        <td>
$calcular_vari_m</td>
    </tr>
    <tr>
        <td width=\"254\">Desviación típica muestral: </td>
        <td>
$calcular_d_tipica_m</td>
    </tr>
    <tr>
        <td width=\"254\">Tamaño muestral: </td>
        <td>
$calcular_casos</td>
    </tr>
    <tr>
        <td width=\"254\">Suma muestra: </td>
        <td>
$calcular_suma</td>
    </tr>
</table>
"
;
?>

<!-- Mostramos los datos sobre los que vamos a realizar los cálculos estadísticos -->  

<table border="1" width="600" id="table1">
    <tr>
        <td>ID</td>
        <td>MUESTRA</td>
    </tr>

<?php
// Mostramos los datos duardados en base de datos, es decir, los valores sobre los que realizamos los calculos

    
$_CONSULTA_SQL "SELECT * FROM $tabla ORDER BY id ASC";
    
$_RESULT mysql_query($_CONSULTA_SQL);

while (
$registro mysql_fetch_array($_RESULT)){

echo 
"
    <tr>
        <td>"
.$registro['id']."</td>
        <td>"
.$registro['valores']."</td>
    </tr>
        
"
;
}
echo 
"</table>";


// Vaciamos la tabla de la base de datos una vez realizados los calculos

$query "TRUNCATE TABLE $tabla"
$result mysql_query($query); 

include(
"cierra_conexion.php");
?>

</body>

</html>

----------- Tabla base de datos

CREATE TABLE IF NOT EXISTS `nombre_tabla` (
  `id` int(9) NOT NULL AUTO_INCREMENT,
  `valores` double NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;