Mam ustawione names w sql na utf-8, pliki zapisane w utf-8, i po zapisaniu pliku zml w bazie i odczytaniu go i tworzeniu simplexml dostaje bledy:
JAK WYLACZE SET NAMES
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 7: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xC4 0x3F 0x3C 0x2F in /frea/assets/core/DataService.class.php on line 15
Warning: simplexml_load_string() [function.simplexml-load-string]: <item route="2">Kupi�?</item> in /frea/assets/core/DataService.class.php on line 15
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in /frea/assets/core/DataService.class.php on line 15
a jak wlacze gina znaki polskie, mam ? zamiast ogonkow:
KOD klasy DB:
<?php
class Db
{
private $connection;
public $db;
public $query;
private $qString;
private $qBuilder;
private $runBuilder = false;
private $lastResults;
private $dataContainer;
public function __construct($host,$user,$pass,$db)
{
if(!$this->connection)
Application::Exception();
$this->query("SET NAMES utf8");
}
public function Query($sql)
{
$sql?$this->qString=$sql:$sql;
{
return false;
}
return $this->query;
}
private function QueryBuilder($opt,$str)
{
$this->qBuilder[$opt] = $str;
}
private function BuildQuery()
{
if(!$this->qBuilder['FROM'])
{
return $this->query;
}
if(!$this->qBuilder['SELECT'])
$this->qBuilder['SELECT'] = "*";
$query= "SELECT ".$this->qBuilder['SELECT']." FROM ".$this->qBuilder['FROM'];
if($this->qBuilder['WHERE'])
$query.=" WHERE ".$this->qBuilder['WHERE'];
if($this->qBuilder['ORDER'])
$query =" ORDER BY ".$this->qBuilder['ORDER'];
if($this->qBuilder['LIMIT'])
$query.=" LIMIT ".$this->qBuilder['LIMIT'];
$this->qBuilder = "";
//echo $query;
return $this->Query($query);
}
public function Select()
{
//print_r($columns);
$select = "".implode(",",$columns).""; else
$select = "*";
$this->QueryBuilder("SELECT",$select);
return $this;
}
public function On($case)
{
$this->QueryBuilder("ON",$case);
return $this;
}
public function Join($table) {
$this->QueryBuilder("JOIN",$table);
return $this;
}
public function From($table)
{
$this->QueryBuilder("FROM",$table);
return $this;
}
public function Where($where)
{
$this->QueryBuilder("WHERE",$where);
return $this;
}
public function Order()
{
else
$order = "";
$this->QueryBuilder("ORDER",$order);
return $this;
}
public function Limit()
{
$limit = $limits[0].",".$limits[1];
else
$limit = $limits[0];
$this->QueryBuilder("LIMIT",$limit);
return $this;
}
public function NumResults($sql=null)
{
if(!$sql)
$this->BuildQuery();
else
$this->Query($sql);
}
public function GetResults($resultsType= A_ARRAY)
{
$this->BuildQuery();
switch($resultsType)
{
case A_ARRAY:
{
$results[] = $temp;
}
break;
case M_ARRAY:
{
$results[] = $temp;
}
break;
case _OBJECT:
{
$results[] = $temp;
}
break;
default:
{
$results[] = $temp;
}
break;
}
{
return $results[0];
}
$this->lastResults = $results;
return $results;
}
public function LastResult()
{
return $this->lastResults;
}
public function Delete()
{
if(!$this->qBuilder['FROM'])
{
$this->lastResults = false;
return false;
}
$sql = "DELETE FROM ".$this->qBuilder['FROM'];
if($this->qBuilder['WHERE'])
$sql.=" WHERE ".$this->qBuilder['WHERE'];
if($this->qBuilder['LIMIT'])
$sql.=" LIMIT ".$this->qBuilder['LIMIT'];
$this->qBuilder= "";
$this->Query($sql);
return $this->lastResult;
}
public function Data($data)
{
if(is_object($data) and get_class
($data)=="stdClass") {
$vars = get_object_vars($data);
}
{
$vars = $data;
}
//echo "<pre>";
//print_r($data);
foreach($vars as $key=>$value)
{
if($value=="NOW()")
$sets.=", `".$key."` = ".$value;
else
}
$this->dataContainer = $sets;
return $this;
}
public function Escape($str)
{
}
public function Update($data="")
{
if($data)
$this->Data($data);
if(!$this->qBuilder['FROM'] or !$this->dataContainer)
{
$this->lastResults = false;
return false;
}
$sql = "UPDATE `".$this->qBuilder['FROM']."` SET ".$this->dataContainer;
if($this->qBuilder['WHERE'])
$sql.= " WHERE ".$this->qBuilder['WHERE'];
$this->Query($sql);
$this->qBuilder = "";
return $this->lastResults;
}
public function Insert($data="")
{
if($data)
$this->Data($data);
if(!$this->qBuilder['FROM'] or !$this->dataContainer)
{
$this->lastResults = false;
return false;
}
$sql = "INSERT INTO ".$this->qBuilder['FROM']." SET ".$this->dataContainer;
$this->Query($sql);
$this->qBuilder = "";
return $this->lastResults;
}
public function GetQuery()
{
return $this->qString;
}
}
?>
kod klasy dataservice:
<?php
class DataService
{
private $Db;
public function __construct($db)
{
$this->Db = $db;
}
public function __get($name)
{
$this->Db->From("dataService")->Where("name LIKE('".$name."')");
$r = $this->Db->GetResults();
return simplexml_load_string($r['xmlData']);
}
}
?>
Kod pliku ktory zapisuje:
<?php
class Index extends Module
{
public function __preload()
{
}
public function __default()
{
$this->Db->From("dataService")->Insert(array("xmlData"=>'<?xml version="1.0" encoding="utf-8"?> <categories>
<item route="1">
Nieruchomości
<item route="1">Sprzedam</item>
<item route="2">Kupię</item>
<item route="3">Poszukuję do wynajęcia</item>
<item route="4">Mam do wynajęcia</item>
</item>
<item route="2">
Sprzęt elektroniczny
<item route="1">Sprzedam</item>
<item route="2">Kupię</item>
<item route="3">Zamienię</item>
<item route="4">Naprawa</item>
</item>
<item route="3">
Motoryzacja
<item route="1">Sprzedam</item>
<item route="2">Kupię</item>
<item route="3">Zamienię</item>
<item route="4">Części zamienne</item>
</item>
<item route="4">
Usługi
<item route="1">Poszukuję</item>
<item route="2">Oferuję</item>
</item>
<item route="5">
Praca
<item route="1">Poszukuję</item>
<item route="2">Zatrudnię</item>
</item>
<item route="6">Towarzyskie</item>
<item route="7">
Nauka
<item route="1">Korepetycje</item>
<item route="2">Języki obce</item>
<item route="3">Podręczniki i inne</item>
</item>
<item route="8">
Zdrowie i uroda
<item route="1">Usługi</item>
<item route="2">Inne</item>
</item>
<item route="9">
Różne
<item route="1">Sprzedam</item>
<item route="2">Kupię</item>
<item route="3">Zamienię</item>
<item route="4">Oddam</item>
<item route="5">Zwierzęta</item>
<item route="6">Inne</item>
<item route="7">Szukam</item>
</item>
</categories>
',"name"=>"categories"));
$this->Template->categories = $this->DataService->categories;
$this->Template->ApplyTemplate("tpl");
}
public function __denied($method)
{
}
public function Supervised()
{
return false;
}
public function __error($e)
{
}
public function register()
{
echo $_SERVER['REQUEST_URI']; }
}
?>