# Connection procedure for server init, store handle in global var 'db'
proc mysql:connectdb {} {
global sql db
set db [logexec "mysqlconnect -host $sql(host) -user $sql(user) -password $sql(pass) -db $sql(db) -port $sql(port) -socket /var/run/mysqld/mysqld.sock" 0 "Connecting to mysql-server"]
}
# Database ping to prevent timeout
proc mysql:ping {} {global db; mysql::ping $db}
# Date and Time processing
proc mysql:sqldate2timestamp {sqldate} {
set date [string range $sqldate 5 6]/[string range $sqldate 8 9]/[string range $sqldate 0 3]
if [catch "clock scan $date" timestamp] {return -1} {return $timestamp}
}
proc mysql:timestamp2sqldate {timestamp} {
return [clock format $timestamp -format "%Y-%m-%d"]
}
proc mysql:date2sqldate {date} {
if [scan $date "%02d.%02d.%04d" d m y]==3 {return $y-$m-$d} {return "0000-00-00"}
}
proc mysql:htmltable {module name table fields descr fieldstyle conversion length control} {
global db
upvar cgi cgi
mysql::ping $db
set htmlout ""
if [info exists cgi($name)] {set control $cgi($name)}
set orderby [lindex $fields [expr [string range $control 0 1]]]
set order [lindex "ASC DESC" [string index $control 2]]
set page [expr [string range $control 3 5]]
htmlout {
}
htmlout {}
set x 0
foreach row [lrange [set rows [mysql::sel $db "SELECT [join $fields ,] from $table ORDER BY $orderby $order" -list]] [expr $page*$length] [expr ($page+1)*$length-1]] {
incr x; set even [lindex "even odd" [expr $x%2]]
htmlout " | "
for {set y 0} {$y<[llength $row]} {incr y} {
set field [lindex $row $y]
catch [lindex $conversion $y]
htmlout "$field | | "
}
htmlout " "
}
htmlout " |
| Seite "
for {set x 0} {$x<[expr ([llength $rows]/$length)+1]} {incr x} {
set control [string replace $control 3 5 [format "%03d" $x]]
htmlout "[expr $x+1]"
}
htmlout " |
"
return $htmlout
}