Initial commit of newLISP.
[newlisp.git] / examples / sqlite3.cgi
blobedfe25397fde814f1a85a68ca8770b6b11edace7
1 #!/usr/bin/newlisp
3 ;; this is a quick and dirty script for talking to your SQLite3 database
4 ;; on your webserver
5 ;;
6 ;; sqlite3.cgi - version 1.0 - initial release
7 ;;
8 ;; requirements:
9 ;;
10 ;; (1) A 'libsqlite3.so' or 'sqlite3.dll' library for your server platform
11 ;; edit the file 'sqlite.lsp' for the correct location.
13 ;; (2) The files 'cgi.lsp' and 'sqlite3.lsp', edit the (load ...) statements
14 ;; below for the correct locations of these files.
18 (print "Content-type: text/html\n\n")
20 (load "cgi-bin/cgi.lsp")
21 (load "cgi-bin/sqlite3.lsp")
23 (set 'log-file "sqlite-log.txt") 
25 ;; log access, log is only written, if log-file exists
27 (set 'fle (open log-file "u"))
28 (if fle (begin
29     (seek fle -1)
30     (set 'ip-no (env "REMOTE_ADDR"))
31     (unless (starts-with ip-no "99")
32       (write-line (string 
33            (date (+ (apply date-value (now)) (* 7 60 60)))
34            " - " ip-no " - " (env "HTTP_USER_AGENT")) fle))
35     (close fle)))
38 (if (empty? CGI:params)
39     (set 'mode "input")
40     (set 'mode (CGI:get "mode")))
42 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
44 (define (display-table data)
45     (println {<table border=1>})
46     (dolist (line data)
47         (println {<tr>})
48         (dolist (cell line)
49             (println {<td>} cell {</td>}))
50         (println {</tr>}) )
51     (println {<table>}))
55 ;; get input sql ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
57 (if (= mode "input")
58     (begin
59        (println 
60 [text]
62 <br>
63 <center>
64 <form action="/sqlte.cgi" method="POST">
65 Enter Name of Database:&nbsp;&nbsp;<input type="text" name="database">
66 <br>
67 <p>Enter SQL</p>
68 <textarea name="sql-str" rows=10 cols=80></textarea>
69 <br>
70 <input type="submit" value="Go">
71 <input type="hidden" name="mode" value="sql">
72 </center>
74 [/text]
75 )))
77 (if (= mode "sql")
78     (begin
79         (println {<br>})
80         (set 'database (CGI:get "database"))
81         (set 'sql-str (CGI:get "sql-str"))
82         (sql3:open database)
83         (set 'data (sql3:sql sql-str))
84         (if (not data) 
85             (println (sql3:error) {<br>}) 
86             (if (list? data)
87                 (display-table data)
88                 (println data)))
90         (println {<br>Hit the [back] button on your browser to got back<br>})))
92 (exit)
94 ;; eof ;;