webmaster@0
|
1 <?php |
webmaster@0
|
2 class DataAccess { |
webmaster@0
|
3 var $host; |
webmaster@0
|
4 var $user; |
webmaster@0
|
5 var $pass; |
webmaster@0
|
6 var $db; |
webmaster@0
|
7 var $arResult; |
webmaster@0
|
8 var $query; |
webmaster@0
|
9 var $connOpen; |
webmaster@0
|
10 var $_nbQueries; |
webmaster@0
|
11 |
webmaster@0
|
12 var $infos; // Cache contenant les informations sur le visiteur |
webmaster@0
|
13 |
webmaster@7
|
14 function DataAccess($host=DB_HOST, $user=DB_USER, $pass=DB_PASSWORD) { |
webmaster@0
|
15 $this->host=$host; |
webmaster@0
|
16 $this->user=$user; |
webmaster@0
|
17 $this->pass=$pass; |
webmaster@0
|
18 $this->_nbQueries = 0; |
webmaster@0
|
19 $this->Connect(); |
webmaster@0
|
20 } |
webmaster@0
|
21 |
webmaster@0
|
22 function Connect($db=DB_NAME) { |
webmaster@0
|
23 if($this->connOpen == 1) return; |
webmaster@0
|
24 $this->db=$db; |
webmaster@0
|
25 $this->connOpen=1; |
webmaster@0
|
26 mysql_connect($this->host, $this->user, $this->pass); |
webmaster@0
|
27 mysql_select_db($this->db); |
webmaster@0
|
28 } |
webmaster@0
|
29 |
webmaster@0
|
30 function Query($query, $id=0) { |
webmaster@0
|
31 $this->query=$query; |
webmaster@0
|
32 if($this->connOpen != 1) $this->Connect(); |
webmaster@0
|
33 $this->arResult[$id]=mysql_query($this->query); |
webmaster@0
|
34 if($this->connOpen != 1) $this->Close(); |
webmaster@0
|
35 if(@$num_rows=mysql_num_rows($this->arResult[$id])) |
webmaster@0
|
36 return $num_rows; |
webmaster@0
|
37 else |
webmaster@0
|
38 return 0; |
webmaster@0
|
39 } |
webmaster@0
|
40 |
webmaster@0
|
41 function debugQuery($query, $id=0) { |
webmaster@0
|
42 $rv = $this->Query($query, $id); |
webmaster@0
|
43 if(mysql_errno() !== 0) |
webmaster@0
|
44 echo("<span class='menu'>\n Query : {$query}<br />\n MySQL Answer : " . mysql_error() . "</span>"); |
webmaster@0
|
45 return $rv; |
webmaster@0
|
46 } |
webmaster@0
|
47 |
webmaster@0
|
48 function GetRow($id=0) { |
webmaster@0
|
49 if(@$row=mysql_fetch_assoc($this->arResult[$id])) { |
webmaster@0
|
50 foreach($row as $key => $value) |
webmaster@0
|
51 $row_utf[$key]=$this->utf8_ensure($value); |
webmaster@0
|
52 return $row_utf; |
webmaster@0
|
53 } |
webmaster@0
|
54 return 0; |
webmaster@0
|
55 } |
webmaster@0
|
56 |
webmaster@0
|
57 function GetRawRow($id=0) { |
webmaster@0
|
58 if(@$row=mysql_fetch_array($this->arResult[$id])) { |
webmaster@0
|
59 return $row; |
webmaster@0
|
60 } |
webmaster@0
|
61 return 0; |
webmaster@0
|
62 } |
webmaster@0
|
63 |
webmaster@0
|
64 function Close() { |
webmaster@0
|
65 $this->connOpen=0; |
webmaster@0
|
66 mysql_close(); |
webmaster@0
|
67 } |
webmaster@0
|
68 |
webmaster@0
|
69 function getNbQueries() { |
webmaster@0
|
70 return $this->_nbQueries; |
webmaster@0
|
71 } |
webmaster@0
|
72 |
webmaster@0
|
73 function formatDate($timestamp, $decallage=2, $pattern='d/m/Y H:i:s') { |
webmaster@0
|
74 return gmdate($pattern, $timestamp + $decallage * 3600); |
webmaster@0
|
75 } |
webmaster@0
|
76 |
webmaster@0
|
77 function seems_utf8($Str) { |
webmaster@0
|
78 for ($i=0; $i<strlen($Str)/10 || $i < 100; $i++) { |
webmaster@0
|
79 if (ord($Str[$i]) < 0x80) continue; # 0bbbbbbb |
webmaster@0
|
80 elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb |
webmaster@0
|
81 elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n=2; # 1110bbbb |
webmaster@0
|
82 elseif ((ord($Str[$i]) & 0xF8) == 0xF0) $n=3; # 11110bbb |
webmaster@0
|
83 elseif ((ord($Str[$i]) & 0xFC) == 0xF8) $n=4; # 111110bb |
webmaster@0
|
84 elseif ((ord($Str[$i]) & 0xFE) == 0xFC) $n=5; # 1111110b |
webmaster@0
|
85 else return false; # Does not match any model |
webmaster@0
|
86 for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ? |
webmaster@0
|
87 if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80)) |
webmaster@0
|
88 return false; |
webmaster@0
|
89 } |
webmaster@0
|
90 } |
webmaster@0
|
91 return true; |
webmaster@0
|
92 } |
webmaster@0
|
93 |
webmaster@0
|
94 function utf8_ensure($Str) { |
webmaster@0
|
95 return $this->seems_utf8($Str)?$Str:utf8_encode($Str); |
webmaster@0
|
96 } |
webmaster@0
|
97 |
webmaster@0
|
98 } |
webmaster@0
|
99 ?> |