Foros del Web » Programando para Internet » PHP »

fileSQL

Estas en el tema de fileSQL en el foro de PHP en Foros del Web. Me gustaria si alguien tiene un tutorial o haga uno pequeñito en este tema es que es una Opcion bastante buena cuando no se tiene ...
  #1 (permalink)  
Antiguo 12/09/2004, 12:23
 
Fecha de Ingreso: septiembre-2004
Mensajes: 55
Antigüedad: 13 años, 3 meses
Puntos: 0
fileSQL

Me gustaria si alguien tiene un tutorial o haga uno pequeñito en este tema es que es una Opcion bastante buena cuando no se tiene Mysql, ademas me gustaria aprender a usarlo.

Ojala no sea el manual de Php Hispano.

Muchas Gracias.
__________________
Proximamente Rincon Ota on line.
  #2 (permalink)  
Antiguo 12/09/2004, 12:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm fileSQL?

Te refieres a SQLite?
Funciones desde PHP (5 en adelante)
http://www.php.net/sqlite
Manual oficial:
http://sqlite.org/

Que tiene de malo ese tutorial que no quieres? .. lo has probado y tienes algún problema? .. Creo que si ya te has documentado al respecto (vistes su manual oficial?) .. si tienes algún problema concreto deberías hacer la pregunta más centrada (ya sea del código que pruebes o bien de algún "concepto")

Un saludo,
  #3 (permalink)  
Antiguo 12/09/2004, 21:15
 
Fecha de Ingreso: septiembre-2004
Mensajes: 55
Antigüedad: 13 años, 3 meses
Puntos: 0
Mria noe s que sea malo es ue ya lo e leido trae un ejemplo y habla ques es muy similar a Mysql y no es SQlita es fileSQL

Aqui el manual

¿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_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 ellos 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:nick:password:timestamp
noticias.txt:autor:titulo:texto:fecha




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:

Zerberus:Ax5visi0n:1087423944
thessoro:s3cr3t0:1084582347
Aeoris:mipassword:1073452348
spezial:n0sp00n:1086227216


Al igual, tendría que existir otro archivo llamado noticias.txt con el orden de campos declarado previamente en fields.fql
Ejemplo de uso:

Código:
<?php

include ("fileSQL.php");

// conectamos al directorio (notad el / final)
// el directorio ha de tener permisos de escritura y lectura

$conexion = file_connect("./files/");

//$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";

//file_query($query,$conexion);

//$query = "SELECT * from archivo.txt";
//$query = "SELECT * from archivo.txt ORDER BY RAND()";
//$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";

// 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


// bucle para mostrar todos los resultados. file_fetch_array o file_fetch_row (sin claves asociativas)
echo '<table>';

while ($datos = file_fetch_array($result_id)) {

    echo '<tr><td>'.$datos['campo1'].'</td><td>'.$datos['campo2'].'</td></tr>';
}

echo '</table>';

file_close($conexion);

?>


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

No se puede ordenar por más de un campo a la vez: ORDER BY campo1 ASC, campo2 DESC <- No funcionará

Nada de seleccionar en múltiples tablas: SELECT * from tabla1,tabla2 <- No funcionará

La única función propia de MySQL que funciona es RAND() -> ORDER BY RAND()
Otras como COUNT(*), MAX(campo), DATE_FORMAT... <- no funcionarán, para contar resultados podeis usar file_num_rows

Las condiciones son bastante flexibles y pueden ser lo complejas que se quiera
WHERE (campo1 ='valor' OR (campo1 like '%valor%' AND (campo3 != 'pepe' OR campo3 != 'luis))) ORDER... LIMIT...
Sin embargo:
El único comodín que funciona en la cláusula LIKE es '%'
LIKE '%a%' LIKE '%a' LIKE 'a%' (o LIKE 'a' simplemente)


La sentencia CREATE está por terminar, hasta ese momento, importSQL sólo funciona con un .sql con datos, y no con la estructura de las tablas (La tabla ha de estar previamente definida)

OJO. FileSQL es case-insensitive por defecto: WHERE campo1='pepe' no coincidirá con PEPE (MySQL si). Usa WHERE campo1 LIKE 'pepe' en su lugar

Operaciones matemáticas directamente sobre los campos no funcionan de momento (lo hará). UPDATE tabla set campo=campo+1 <- No funcionará

Más limitaciones que no se me ocurren en este momento xD

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.
Debug: spezial. (Gracias por su debug exhaustivo)

Debug: Aeoris ¬¬' bueno, algo hizo

Idea y programación: thessoro


Lo que queria ene ste post era saber si alguien tenia alguna nocion y nos pudiera explicar un pokito como funciona.
__________________
Proximamente Rincon Ota on line.
  #4 (permalink)  
Antiguo 12/09/2004, 21:28
Avatar de sir_notos  
Fecha de Ingreso: noviembre-2001
Ubicación: Mexicali
Mensajes: 709
Antigüedad: 16 años
Puntos: 1
Creo qde lo que estas hablando es una clase si nos pones de donde la bajaste tal vez te podamos ayudar :)

Cita:
include ("fileSQL.php");
__________________
Usuario Registrado de linux #374849
  #5 (permalink)  
Antiguo 12/09/2004, 21:52
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Cita:
Iniciado por Kurapica_chan
Lo que queria ene ste post era saber si alguien tenia alguna nocion y nos pudiera explicar un pokito como funciona.
La verdad yo lo veo bastante bien explicado...
Además hoy en día prácticamente todos los servicios de hosting que soportan PHP, también te dan una base de datos (generalmente mysql)... así que no veo para qué complicarse tanto con el tema... a menos que sea por cuestiones didácticas.

Saludos
  #6 (permalink)  
Antiguo 13/09/2004, 09:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Justamente SQLite es una versión "más completa" de ese tal "fileSQL" que muestras: trabaja con archivos planos pero accediendo con lenguaje SQL. (PHP 5 por ejemplo lo trae por defecto).

Un saludo,
  #7 (permalink)  
Antiguo 13/09/2004, 15:25
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
De aqui la saco

http://www.php-hispano.net/archivos/Scripts/175

:)
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:43.