Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/12/2013, 21:38
nksn
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: introduccion sistemas dinamicos ( php + ajax )

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