bon ba je vais mettre mon code ca pourra exlaicir pas mal de point et donner peut etre des idées a d'autre
classe Mysql
class sql<?php
class Mysqldb implements Interface_DAO
{
private $res;
private $conn;
private $login;
private $pass;
private $serveur;
private $base;
public function __construct($serveur,$db,$login=null,$pass=null)
{
$this->res==array();
$this->conn=false;
$this->login=$login;
$this->serveur=$serveur;
$this->pass=$pass;
$this->db=$db;
}
/**
* mutator login et mot de pass
*
* @param string $login
* @param string $pass
*/
public function setGroupe(Groupe $data)
{
$tab=$data->getGroupe();
$this->login=$tab['groupname'];
$this->pass=$tab['mdpData'];
}
/**
* connexion a la base de données
*
*/
public function connect()
{
if(false===($this->conn=@mysql_connect($this->serveur,$this->login,$this->pass)))
throw new MyException('Connexion au serveur MySQL impossible-<br/>serveur : '.$this->serveur.'<br/>login : '.$this->login.'<br/>pass : '.$this->pass.'<br/>base : '.$this->db);
else
{
if(FALSE===mysql_select_db($this->db,$this->conn))
throw new MyException('Base introuvable sur le serveur MySQL '.$this->db);
}
}
/**
* execute une requete
*
* @param requete $sql
*/
public function execute($sql)
{
if(FALSE==($this->res=mysql_query($sql,$this->conn)))
{
throw new MyException($this->res.' n'est pas un resultat
valide<br />'.$sql.'<br/>'.mysql_error($this->conn));
return false;
}else
return true;
}
#retour une ligne sous forme de resultat
/**
* test si un reultat a ete trouver
*
* @return numeric
*/
public function rows()
{
if(mysql_num_rows($this->res)>0)
return mysql_fetch_row($this->res);
else
throw new MyException('pas de resultat trouver pour :'.$this->res);
}
#retourne un nombre de ligne
/**
* retourne le nombre de resultat
*
* @return int
*/
public function num_rows()
{
return mysql_num_rows($this->res);
}
#retourne un tableau numerique
/**
* renvoi les resultat de la requete sous forme de tableau indicé
*
* @return array
*/
public function GetArray()
{
return mysql_fetch_row($this->res);
}
# requete ne fonctionnant pas
/**
* renvoi les resultat de la requete sous forme de tableau associatif
*
* @return array
*/
public function GetArrayAssoc()
{
return mysql_fetch_assoc($this->res);
}
/**
* fonction retournant un resultat
*
* @param string $field
* @return string or false if there are no result
*/
public function SimpleResult($field)
{
if($this->num_rows()>0)
return mysql_result($this->res,0,$field);
else
return false;
}
#recupere le dernier id inserer
/**
* renvoie le dernier indice creer par insert
*
* @return numeric
*/
public function last_id()
{
return mysql_insert_id($this->conn);
}
/**
* retourne le nombre d'enregistrement modifié
*
* @return int
*/
public function change_rows()
{
if(mysql_affected_rows($this->conn)==-1)
$flag=false;
else
$flag=true;
return $flag;
}
public function escape_string($param)
{
foreach ($param as $cle=>&$val)
{
$val=mysql_escape_string($val);
}
}
public function __destruct()
{
//mysql_free_result($this->conn);
@mysql_close($this->conn);
//echo 'class :'.__CLASS__.'method'.__METHOD__.'<br/>';
}
/**
*Methode pour documentation
*/
public static function GetInstance() {
if (empty(self::$Instance)) {
$class = __CLASS__;
self::$Instance = new $class;
}
return self::$Instance;
}
}
?>et une ebuache de l'interface
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93 <?php class Sql implements IteratorAggregate,ArrayAccess { private $db; private $resultat=array(); public function __construct($db) { $this->db=$db; $this->db->connect(); } public function getIterator() { $iterator= new Iterators($this->resultat); return $iterator; } public function GetArrayAssoc() { $this->resultat=$this->db->GetArrayAssoc(); return $this->resultat; } public function GetArray() { $this->resultat=$this->GetArray(); return $this->resultat; } /* *ArrayAccess * */ public function offsetExists($index){ return isset($this->resultat[$index]); } public function &offsetGet($index){ return $this->resultat[$index]; } public function offsetSet($index,$valeur){ return $this->resultat[$index]=$valeur; } public function offsetUnset($index){ unset($this->resultat[$index]); } #requete select normal qui renvoi en tableau numerique public function Select($param=null,$chaine=null) { if(array_key_exists('table',$param) && array_key_exists('champs',$param)) { $table=$param['table']; $champs=$param['champs']; } else return false; $req='SELECT '.join(",",$champs); $req.=' FROM '.join(",",$table); if(array_key_exists('param',$param)) { $param=$param['param']; $req.=' WHERE ('.join(') AND (',$param).') '; } else $req.=' WHERE 1'; $req.=' ORDER BY '.$champs[0].' ASC '; if($chaine!=null) $req.=$chaine; return $this->db->execute($req); } public function Insert_auto($valeur,$chaine=null) { $req='INSERT INTO '.$this->Atable; $erq.=' ('.join(",",$this->Achamp); $req.=' VALUES ('.join(",",$valeur).')'; if($chaine!=null) $req.=$chaine; $this->db->execute($req); return $this->db->last_id(); } } ?>et bien sur l'utilisation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?php interface interface_DAO { public function GetArrayAssoc(); public function GetArray(); public function execute(); public function connect(); } ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 $mysql=new Mysqldb(SERVEUR,BASE,LOGIN,PASS); $dao=new Sql($mysql); $param['table']=array('menu'); $param['champs']=array('nom'); $tab['table']=array('menu'); $tab['champs']=array('id_page'); try{ if($dao->Select($param)) { /*$dao->GetArrayAssoc(); foreach ($dao as $val) { print_r($val); }*/ //echo var_dump($dao); while($val=$dao->GetArrayAssoc()) { print_r($val); } } } catch (Exception $e) { echo $e->getMessage(); }
Partager