annotate includes/class.dataaccess.php @ 38:33d1c5a13acd

On va dire: oooops. Il manquait bien evidement des parenthèses.
author Franck Deroche <webmaster@defr.org>
date Mon, 05 Nov 2007 10:48:33 +0100
parents e4e880f786d4
children ec0c926a78a6
rev   line source
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 ?>