Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> txtSQL czyli tekstowa baza SQL, jak by takową napisać
Neotion
post
Post #1





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 13.09.2004

Ostrzeżenie: (0%)
-----


Nurtuje mnie ostatnio fakt że wiele serwerów nie oferuje baz SQL, i wiele osób nie ma do takich baz dostępu. I w mojej niezmierzonej chęci pisania (programów a nie opowiadań) wpadłem na pomysł żeby stworzyć tekstową bazę obsługującą język SQL. Moje pierwotne założenia są takie:

Struktura bazy:

|-Baza (jako katalog) : w nim plik opisujący tabele
```|-Tabela1 (jako katalog): w niej plik opisujący pola i ich właściwości (auto_increment, INT, itd...), pliki rekordów
``````|-Rekord1 (jako plik): zawartość pól opisanych w pliku właściwości tabeli \
``````|-Rekord2 (jako plik): jak wyżej tylko nazwany inaczej / każdy rekord musiałby mieć inną nazwe (ID)
```````...
```|-Tabela2 (jako osobny katalog): i jak wyżej
```...
|-Baza2


i tak dalej...

Co wy na to?

Ten post edytował Neotion 11.10.2004, 17:07:03
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tiraeth
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Kenio szybki jesteś (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Bodajże 4 post od góry...

Co do parsowania zapytań.... czy nie mozna zrobić czegoś takiego:
  1. <?php
  2. // Poniższa zmienna przetrzymuje nazwę bazy
  3. $database_name = 'baza';
  4. $query = &#092;"SELECT * FROM table LIMIT 0, 1\";
  5.  
  6. if(eregi('SELECT', $query))
  7. {
  8. if(eregi('LIMIT', $query))
  9. {
  10. $str = explode('LIMIT', $query);
  11. $limit = $str[1];
  12. $limit = str_replace(' ', '', $limit);
  13. $help = explode(',', $limit);
  14. $start = $help[0];
  15. $howmany = $help[1];
  16. }
  17. else
  18. {
  19. $start = 0;
  20. $howmany = -1;
  21. }
  22.  
  23. $a = str_replace('LIMIT', 'FROM', $query);
  24. $a = explode('FROM', $a);
  25. $a[1] = str_replace(' ', '', $a[1]);
  26. $table_name = $a[1];
  27.  
  28. // Zmienna $query_type przetrzymuje typ zapytania (select, insert, update, drop etc.)
  29. $query_type = &#092;"Selecting data from base\";
  30. preg_match(&#092;"/SELECT (.*) FROM/\", $query, $sel);
  31. $select = $sel[0][0];
  32. $records = (eregi('*', $select)) ? read_all_records($table_name) : explode(',', $select);
  33.  
  34. // Utworzona tablica $records przetrzymuje wszystkie nazwy pól, z których pobierze
  35. y recordy
  36.  
  37. foreach($records as $key => $record_title)
  38. {
  39. $handle = file($database_name.'/'.$table_name.'/'.$record_title);
  40. $end = ($howmany == -1) ? count($handle) : $howmany;
  41. for($i=$start; $i<$end; $i++)
  42. {
  43. $selected[$record_title][] = $handle[$i];
  44. }
  45. }
  46. }
  47.  
  48. // Wywalamy przykładowe dane
  49. for($i=0; $i<count($selected); $i++)
  50. {
  51. echo $selected['tutaj_sobie_jakies_pole_z_bazy'][$i].'<br />';
  52. }
  53. ?>

?

Taki sobie przykładowe zapytanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Narazie obsługuje tylko SELECT i LIMIT (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Można przerobić aby były to funkcje, czy też klasy ale to już zależy od Ciebie... myślę, że fajnie rozwiązane (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Tiraeth 5.12.2004, 17:34:37
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 18:17