fileSQL 1.1beta3




Download:

>>> Download fileSQL <<<
Support This Project

¿Qué es?

Todos sabemos lo aburrido que es manejar archivos de texto para guardar informacion: ( Usuarios online, contadores de visitas...)
Y más aún si tenemos que insertar, extraer, actualizar o manipular de cualquier forma dicha información.

FileSQL es un grupo de funciones que nos permitirán trabajar con archivos de texto mediante queries similares a los que haríamos a una base de datos como por ejemplo mySQL. De esta forma podremos aplicar cláusulas INSERT para insertar datos, UPDATE para actualizar, DELETE para borrar o SELECT para seleccionar determinados datos de nuestros archivos de texto.

La idea es muy simple: Un directorio sería pues una base de datos. Cada archivo de ese directorio sería una tabla, y en ese archivo habría datos separados por ":" cada uno de ellos sería un campo.

Sobre estos archivos podremos ejecutar los queries y manejar los resultados con las funciones equivalentes a mysql_*. Es decir: mysql_fetch_array seria file_fetch_array. Aparte tenemos file_query, file_num_rows, file_fetch_row, file_connect, file_fetch_assoc file_close; y una funcion especial importSQL para importar los archivos .sql de phpmyadmin directamente al sistema fileSQL.

¿Cómo funciona?

Para hacer funcionar fileSQL solo has de incluir el archivo fileSQL.php en tu script, y ya podrás empezar a manejar los datos de tus archivos.
Debes crear un directorio nuevo con todos los permisos (su nombre sería el nombre de la bd). Dentro de él puedes crear los archivos de texto que quieras. Sin embargo para que fileSQL funcione ha de haber un archivo especial en cada directorio que él maneje llamado "fields.fql" donde se encuentra la definicion de los campos:

Se ve mejor con un ejemplo:

Contenido de fields.fql:



# Archivo de campos de fileSQL
#         Formato: 
#                archivo:campo1:campo2:campo3...
#         
#        Ejemplo:
#                login.txt:nick:password:fecha
#
usuarios.txt:nombre:password:funcion
productos.txt:nombre:precio:cantidad
agenda.txt:*id:nombre:calle:telefono
#
# Los campos precedidos por un * como en el ejemplo anterior, 
# son campos AUTO_INCREMENT





En este archivo se dice que tenemos 2 archivos de texto, noticias.txt y usuarios.txt con los campos que se dicen a continuacion separados por ":". El contenido de usuarios.txt podria ser el siguiente:



thessoro:mipassword:admin
aeoris:n0spoon:usuario
{Arias}:s3cr3ta:moderador
spezial:f44veg3my9:usuario





Ejemplo de uso:





<?php

include ("fileSQL.php");

// el directorio ha de tener permisos de escritura y lectura

$conexion file_connect("./files");

/*
    Ejemplos de querys que se pueden hacer en fileSQL
    
$query = "INSERT INTO archivo.txt (campo1,campo2,campo3) VALUES ('valor1','valor2','valor3')";
$query = "INSERT INTO archivo.txt VALUES ('valor1','valor2','valor3','valor4')";
$query = "DELETE FROM archivo.txt WHERE campo1 = 'valor' AND campo2 = 'valor2'";
$query = "UPDATE archivo.txt set campo1='valor1', campo2='valor2', campo3='valor3' WHERE campo1 LIKE 'A%' AND campo2 <= 35";
$query = "SELECT campo1,campo2 from archivo.txt WHERE (campo1 LIKE '%valor%' OR (campo2 < '3' AND campo2 = 'valor2) ORDER BY RAND() LIMIT 10";
$query = "SELECT campo3 FROM archivo.txt ORDER BY campo1 DESC limit 2,3";


    //  querys especiales

$query = "SELECT * from archivo.txt ORDER BY RAND()";

    // querys con NOT LIKE, IN y NOT IN
    
$query = "DELETE FROM archivo.txt WHERE campo1 NOT LIKE 't%' AND colores IN ('rojo','verde',azul')";
$query = "DELETE FROM archivo.txt WHERE paises NOT IN ('españa','francia','alemania')";

    // querys validos a partir de fileSQL 1.1beta
    
$query = "SELECT AVG(precio),MAX(precio) from archivo.txt ";
$query = "SELECT MIN(fecha) FROM archivo.txt WHERE id > 4 AND campo2 LIKE 'p%'";
$query = "SELECT COUNT(*),SUM(cantidad) FROM archivo.txt";
$query = "SHOW TABLES";
$query = "SHOW COLUMNS FROM archivo.txt"; // lista los campos

*/



$query "SELECT * from prueba.txt";

// equivalente a mysql_query, devuelve un identificador de resultado.

$result_id file_query($query,$conexion);

echo 
"Numero de resultados : ".file_num_rows($result_id); // devuelve el numero de resultados


/*
    Ejemplo de recuperacion de resultados con fileSQL
    bucle para mostrar todos los resultados. file_fetch_array o file_fetch_row (sin claves asociativas)
    
*/
echo '<table>';

while (
$datos file_fetch_row($result_id)) {

    echo 
'<tr><td>'.$datos[0].'</td><td>'.$datos[1].'</td></tr>';
}

echo 
'</table>';


/*
     Otro ejemplo
     
*/

$query "SELECT COUNT(*) FROM archivo.txt WHERE fecha > 1210054467";
$res_id file_query($query,$conexion);

$num_resultados file_result($res_id0);


// Cierre de la conexion
file_close($conexion);

?>




Limitaciones de fileSQL:

Obviamente muchas, fileSQL no pretende sustituir a una base de datos compleja como mySQL (por ejemplo).

Créditos

Se ha querido dar bastante flexibilidad en la sintaxis de los queries (espacios, sin espacios, con o sin comillas, cláusulas no sensibles a mayúsculas o minúsculas) y el número de queries que se pueden realizar en este momento es infinito. Por ello las tareas de debug fueron de vital importancia para detectar fallos y problemas (que seguirá habiendo, es inevitable. Por favor, reportadlos) en los queries.


EOF



fileSQL 2004,2005 © thessoro

Bugs por favor a thessoro@gmail.com