www/mysql.php (connector a mysql)
este documento se encarga de connectar php con mysql (con mysqli)
Código PHP:
<?php
/* conecta con la base de datos
*/
$mysqli = new mysqli('localhost', 'user', 'pass', 'database');
/* comprueba si hay errores
*/
if($mysqli->connect_errno > 0)
{
echo 'error de conexion:'.self::$mysqli->connect_errno;
}
/* cambia el conjunto de caracteres a UTF-8 (opcional)
*/
if(!$mysqli->set_charset("utf8"))
{
echo 'error al cambiar names #'.self::$mysqli->errno.', msg:'.self::$mysqli->error;
}
?>
www/ejemplo_input.php (documento de almacenado js -> php -> mysql )
este documento simplemente se encargara de recibir la variable 'usuario' y 'otra_variable' para comprobarla e incluirla en la base de datos, cuando retorna un array codificado con serialize() a exepcion cuando todo a sido exitoso, en ese caso retorna un 'completo'
Código PHP:
<?php
// comprobaciones
switch(true)
{
// comprobar variable $_POST['usuario']
case !isset($_POST['usuario']):
// $_POST['usuario'] no esta definido
echo serialize(array
(
'type' => 'php',
'nro' => 0,
'msg' => 'variable usuario no definida'
));
break;
// comprobar longitud de la cadena
case mb_strlen($_POST['usuario'], 'UTF-8') < 4:
// nombre demaciado corto
echo serialize(array
(
'type' => 'php',
'nro' => 1,
'msg' => 'nombre demaciado corto'
));
break;
// comprobar longitud de la cadena
case mb_strlen($_POST['usuario'], 'UTF-8') > 64:
// nombre demaciado largo
echo serialize(array
(
'type' => 'php',
'nro' => 2,
'msg' => 'nombre muy largo'
));
break;
// los datos ingresados son correctos se procede a ingresar los datos en la base de datos
default:
// se incluye el documento de conexion, este es accesible desde $mysqli
include 'mysql.php';
// se limpian los datos que vienen desde javascript, seguridad minima
$_POST['usuario'] = $mysqli->real_escape_string($_POST['usuario']);
$_POST['otra_variable'] = $mysqli->real_escape_string($_POST['otra_variable']);
// se intenta incluir los datos en la base de datos
if(!$mysqli->query("INSERT INTO `names` (`usuario`, `example`) VALUES ('{$_POST['usuario']}', '{$_POST['otra_variable']}')"))
{
// error al insertar, retornamos los datos del mysql
echo serialize(array
(
'type' => 'mysql',
'nro' => $mysqli->errno,
'msg' => $mysqli->error
));
}
else
{
echo 'completo';
}
}
?>
www/ejemplo_datos.php (listado de datos php -> mysql -> php -> js)
se encarga de recibir la pagina (offset) a listar y retorna sus respectivos datos en un array codificado con serialize()
Código PHP:
// comprobaciones
switch(true)
{
// variable pagina no disponible
case !isset($_POST['pagina']):
// la variable $_POST['pagina'] no esta definida
echo serialize(array
(
'type' => 'php',
'nro' => 3,
'msg' => 'variable pagina no definida'
));
break;
// comprobar
case (int)$_POST['pagina'] < 1:
// offset incorrecto
echo serialize(array
(
'type' => 'php',
'nro' => 4,
'msg' => 'offset incorrecto, debe ser mayor a cero'
));
break;
// datos correctos, trabajar con mysql
default:
// incluir conexion
include 'mysql.php';
// definir la cantidad de resultados por pagina
$resultados_por_pagina = 25;
// calculo del offset
$offset = ((int)$_POST['pagina'] - 1) * $resultados_por_pagina;
// intentamos obtener todos los datos de la tabla names ordenadas por nombre de usuario
if(!$query = $mysqli->query("SELECT * FROM `names` ORDER BY `usuario` ASC LIMIT {$offset}, {$resultados_por_pagina}"))
{
// error al insertar, retornamos los datos de error de mysql
echo serialize(array
(
'type' => 'mysql',
'nro' => $mysqli->errno,
'msg' => $mysqli->error
));
}
// buffer de datos
$buffer = array();
// cargamos datos en el buffer
while($resultado = $query->fetch_assoc())
{
$buffer[] = $resultado;
}
// enviamos los datos de buffer
echo serialize(array
(
'type' => 'data',
'data' => $buffer
));
}