<?php
if
(!defined(
'ACCESS'
))
die
(
"restricted access"
);
class
GenericDao {
protected
$connexion
;
var
$tableName
;
protected
$idColumn
;
public
function
__construct(
$cnx
,
$tableName
,
$idColumn
) {
if
(
$cnx
== null){
require_once
(dirname(
__FILE__
).
'/Connexion.class.php'
);
$this
->connexion = Connexion::getInstance();
}
else
{
$this
->connexion =
$cnx
;
}
$this
->tableName =
$tableName
;
$this
->idColumn =
$idColumn
;
}
public
function
findAll() {
$sql
=
"SELECT * FROM "
.
$this
->tableName;
$requete
=
$this
->connexion->prepare(
$sql
);
if
(
$requete
->execute())
{
if
(
$donnees
=
$requete
->fetchAll())
return
$donnees
;
}
else
{
return
null;
}
}
public
function
findAllAdvanced(
$sortingExpr
,
$from
,
$to
) {
$sql
=
"SELECT * FROM "
.
$this
->tableName;
if
(
$sortingExpr
!= null){
$sql
.=
" ORDER BY "
.
$sortingExpr
;
}
if
(
$from
!=null &&
$to
!= null){
$sql
.=
" LIMIT "
.
$from
.
","
.
$to
;
}
$requete
=
$this
->connexion->prepare(
$sql
);
if
(
$requete
->execute()){
if
(
$donnees
=
$requete
->fetch())
return
$donnees
;
}
else
{
return
null;
}
}
public
function
findById(
$pkVal
){
$sql
=
"SELECT * FROM "
.
$this
->tableName.
" WHERE "
.
$this
->idColumn.
" = :myVal"
;
$requete
=
$this
->connexion->prepare(
$sql
);
$requete
->bindValue(
':myVal'
,
$pkVal
);
if
(
$requete
->execute()){
if
(
$donnees
=
$requete
->fetch())
return
$donnees
;
}
else
{
return
null;
}
}
public
function
deleteById(
$pkVal
){
$sql
=
"DELETE FROM "
.
$this
->tableName.
" WHERE "
.
$this
->idColumn.
" = :myVal"
;
$requete
=
$this
->connexion->prepare(
$sql
);
$requete
->bindValue(
':myVal'
,
$pkVal
);
if
(
$requete
->execute()){
return
true;
}
else
{
return
false;
}
}
public
function
updateColumns(
$colNames
,
$newVals
,
$pkVal
){
$sql
=
"Update "
.
$this
->tableName.
" SET "
;
for
(
$i
=0;
$i
<
count
(
$colNames
);
$i
++){
$sql
.=
$colNames
[
$i
].
" = :v"
.
$i
;
if
(
$i
<
count
(
$colNames
)-1){
$sql
.=
","
;
}
}
$sql
.=
" where "
.
$this
->idColumn .
" = :myVal"
;
$requete
=
$this
->connexion->prepare(
$sql
);
for
(
$i
=0;
$i
<
count
(
$colNames
);
$i
++){
$requete
->bindValue(
':v'
.
$i
,
$newVals
[
$i
]);
}
$requete
->bindValue(
':myVal'
,
$pkVal
);
if
(
$requete
->execute()){
return
true;
}
else
{
return
false;
}
}
}
?>