JeuWeb - Crée ton jeu par navigateur
sql.class => une aide pour ceux qui veulent commencer la POO sans se casser la tete. - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : sql.class => une aide pour ceux qui veulent commencer la POO sans se casser la tete. (/showthread.php?tid=3780)



sql.class => une aide pour ceux qui veulent commencer la POO sans se casser la tete. - galadie - 08-03-2009

pardonnez moi d'avance, j'essairait d'etre aussi clair que possible. J'ai crée cette classe parce que j'avais eu du mal avec la POO melangé au SQL. c'est peut-etre sévèrement trash. mais ça marche pas trop mal sur mon serveur et ça rends la vie beucoup plus facile.
ce code se montre particulièrement utile. surtout au niveau d'un admin souple et rapide à mettre en place . mais il ne vous degage pas d'un vrai travail de programmation.

Code PHP :
<?php 
//!\attention on demarre
class sql
{

le constructeur avec en param le nom de la table...
comme j'ai un peu de mal avec __construct( ) - sans doute le __ qui me gene - j'utilise la répétition du nom de classe
Code PHP :
<?php 
function sql($table )
{
$this->table = $table ;
$sql ="describe ".$this->table." ;" ;
$infos = mysql_query($sql) ;
while(
$donnees = mysql_fetch_array($infos))
$tab_donnees[] = $donnees;

foreach(
$tab_donnees as $data => $club)
{
//on recupere le nom et la valeur par deffaut

$titre = $club["Field"];
$value = $club["Default"];

// on crée la variable d'objet
$this->$titre = $value;
}
}

la methode get permet de recuperer l'objet specifique sur lequel on veut travailler...

Code PHP :
<?php 
public function get($id , $field="")
{
$donnees = array();

if(
$field=="") $field = "id";

$this->$field = $id;

$sql ="SELECT * FROM `".$this->table."` WHERE $field='$id'" ;

$infos = mysql_query($sql) ;
$donnees = mysql_fetch_array($infos);

if(!empty(
$donnees))
{
foreach(
$donnees as $name => $value)
{
if(!
is_numeric($name)) $this->$name = $value ;
}
return
true;
}
else return
false ;
}

le boucles dans les methodes insert et update permettent de former de requetes nettoyé de toutes erreurs de variabbles
Code PHP :
<?php 
public function insert()
{
foreach (
$this as $name => $value)
{
if(
$name != "table" )
{
$into .= ",`$name`" ;
$values .= ",'$value'";
}
}

$into = ltrim($into,",");
$values = ltrim($values,",");
// ltrim pour eliminer les virgules en trop.
$sql = "insert into ".$this->table." ($into) values ($values)";
$infos = mysql_query($sql);

return
mysql_insert_id();//LAST_INSERT_ID() ;
}

public function
update()
{
foreach (
$this as $name => $value)
{
if(
$name!="id" and $name != "table" )$set .= ",`$name` = '$value'" ;
}
$set = ltrim($set, ",");
// ltrim pour eliminer les virgules en trop.
$sql ="update `".$this->table."` set $set where `id` = '".$this->id."' ";
$infos = mysql_query($sql)or die( $sql."\n<br />\n impossible d'executer la reqete : \n<br />\n ".mysql_error() ) ;

//print "<p>$sql</p>";

return $this->id;
}

on doit aussi pouvoir effacer

Code PHP :
<?php 
public function delete($id="")
{
if(
$id=="")$id = $this->id ;

$sql ="delete from `".$this->table."` where `id` = '".$id."' ";
$infos = mysql_query($sql) ;
}

la methode select ne porte pas sur un enregistrement mais sur un ou plusieurs. vous fixer la condition, comme une requete normale et on vous retourne les enregistrement sous un array.

Code PHP :
<?php 
public function select($condition="")
{
$donnees = array();
$result = array();

$sql ="SELECT * FROM `".$this->table."` $condition " ;

//print "<p>$sql</p>";

$infos = mysql_query($sql) ;
while(
$donnees = mysql_fetch_array($infos))
{
$result[] = $donnees ;
}
return
$result ;
}

getChamps permet de controler l'existence d'un champs.
set permet de modifier sa valeur via l'objet si vous ne preferez pas le faire en dur dans le code.

Code PHP :
<?php 
public function getChamps($champs)
{
$retour = false;
foreach(
$this as $field => $val)
{
if(
$field == $champs ) $retour = true;
}
return
$retour ;
}

public function
set($champs, $value)
{
$this->$champs = $value ;
}

la fonction add retourne un tableau d'enregistrement. avec des champs de saisie formés selon le type des données.

Code PHP :
<?php 
public function add()
{
$array_edit = array();

$sql ="describe ".$this->table." ;" ;
$infos = mysql_query($sql);

$array_edit["form_init"] = '<form method="post" >';
$array_edit["table_init"] = '<table>';
$array_edit["caption"] = '<caption><h1>'.$this->table.'</h1></caption>';

while(
$donnees = mysql_fetch_array($infos))
{
if(
eregi('varchar',$donnees["Type"]))
$array_edit[$donnees["Field"]] .= '<tr>
<td>'
.$donnees["Field"].'</td>
<td><input type="text" name="'
.$donnees["Field"].'" /></td></tr>';

if(
eregi('int',$donnees["Type"]))
{
if(
$donnees["Field"]!="id")
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td><input type="text" size="2" name="'
.$donnees["Field"].'" /></td>
</tr>'
;
}

if(
eregi('decimal',$donnees["Type"]))
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td><input type="text" size="2" name="'
.$donnees["Field"].'" /></td>
</tr>'
;

if(
eregi('text',$donnees["Type"]))
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td><textarea name="'
.$donnees["Field"].'"></textarea></td>
</tr>'
;
}

$array_edit["submit"] = '<tr><td></td><td><input type="submit" name="add" /></td></tr>';

$array_edit["table_close"] = '</table>';
$array_edit["form_close"] = '</form>';

return
$array_edit;
}



la fonction edit retourne un tableau d'edition d'un enregistrement. avec des champs de saisie formés selon le type des données.

Code PHP :
<?php 
public function edit($id)
{
$array_edit = array();

$this->get($id);
$sql ="describe ".$this->table." ;" ;
$infos = mysql_query($sql) ;

$array_edit["form_init"] = '<form method="post" >';
$array_edit["table_init"] = '<table>';
$array_edit["caption"] = '<caption><h1>'.$this->table.'</h1></caption>';

while(
$donnees = mysql_fetch_array($infos))
{

if(
eregi('varchar',$donnees["Type"]))
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td><input type="text" name="'
.$donnees["Field"].'" value="'.$this->$donnees["Field"].'" /></td>
</tr>'
;

if(
eregi('int',$donnees["Type"]))
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td><input type="text" size="2" name="'
.$donnees["Field"].'" value="'.$this->$donnees["Field"].'" /></td>
</tr>'
;

if(
eregi('text',$donnees["Type"]))
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td><textarea name="'
.$donnees["Field"].'">'.$this->$donnees["Field"].'</textarea></td>
</tr>'
;

if(
eregi('decimal',$donnees["Type"]))
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td><input type="text" size="2" name="'
.$donnees["Field"].'" value="'.$this->$donnees["Field"].'" /></td>
</tr>'
;

}

$array_edit["submit"] = '<tr><td></td><td><input type="submit" name="mod" /></td></tr>';

$array_edit["table_close"] = '</table>';
$array_edit["form_close"] = '</form>';

return
$array_edit;
}

la fonction inspect fourni un tableau des enregistrement avec un lien vers une page d'ajout/edition ou un mode de suppressio

Code PHP :
<?php 
function inspect($condition="" , $url)
{
$table = $this->select($condition);

$array_edit["table_init"] = '<table>';
$array_edit["caption"] = '<caption><h1>'.$this->table.'</h1></caption>';

$array_edit["th"] .= "<tr>";
foreach (
$this as $name => $value)
{
if(
$name != "table" ) $array_edit["th"] .= "<th>$name</th>";
}
$array_edit["th"] .= "</tr>";

foreach(
$table as $ligne )
{
$array_edit[$ligne["id"]] .= "<tr>";
foreach (
$ligne as $i => $piks ){
// nettoyage des chaines...
$piks = ereg_replace("<[^>]*>", "", trim(strip_tags($piks)) ) ;
if(
strlen($piks)>=50)
$piks = substr($piks, 0, 50)."...";
if(!
is_numeric($i))
$array_edit[$ligne["id"]] .= "<td>".$piks."</td>";
}

$array_edit[$ligne["id"]] .= "<td>
<a href='"
.$url."ordre=edit&table=".$this->table."&id=".$ligne["id"]."' >
<img src='"
.$url."/images/edit.jpg' alt='".$ligne["id"]."' />
</a>
</td>"
;


$array_edit[$ligne["id"]] .= "<td>
<a href='"
.$url."ordre=delete&table=".$this->table."&id=".$ligne["id"]."' >
<img src='"
.$url."/images/delete.gif' alt='".$ligne["id"]."' />
</a>
</td>"
;


$array_edit[$ligne["id"]] .="</tr>";
}
$array_edit["nouveau"] = "<tr>
<td>nouveau</td>
<td>
<a href='"
.$url."ordre=edit&table=".$this->table."' >
<img src='"
.$url."/images/ajout.jpg' alt='".$ligne["id"]."' />
</a>
</td>
</tr>"
;

$array_edit["table_close"] = '</table>';

return
$array_edit;
}

voila ce que ça donne à l'utilisation

Code PHP :
<?php 
$data
= new sql($['nom_table']);

if(isset($[
'edit'])){
if(isset($[
'id'])) $ruch = $data->edit($['id']);
else
$ruch = $data->add();
}
else {
$condition ="";
$ruch = $data->inspect($condition , "www.monsite.fr/?page=admin&" );
}

foreach (
$ruch as $casque => $borderline)
{
print
$borderline ;
}

on peut alors facilement modifier la boucle d'affichage si un des champs de saisie automatique ne convient finalement pas à vos besoin

Code PHP :
<?php 
if($data->table=="joueur" and $casque=="password")
{
print
"<tr><td class='".$test->fieldError($casque,"fieldreq")."' >".$casque."</td><td>";
print
"<input readonly disabled name='".$casque."' value='".$data->password."' />"; //_r($val);
print "</td></tr>";
}
else print
$borderline ;

si vous avez des critiques ou des conseils pour ameliorer ce code( peut-etre au niveau securité, ou autre ...) je suis pret à tout entendre...


RE: sql.class => une aide pour ceux qui veulent commencer la POO sans se casser la tete. - z3d - 09-03-2009

Ne m'en veux pas mais c'est... illisible !
Je n'ai même pas eu envie de le lire le code et pourtant j'adore cela le code mais alors là c'est vraiment pas possible, dans la bataille j'ai failli perdre 1 oeil et trois dents Sad

Conventionne ton codage parce que celui qui doit passer après toi, bonjour ce qu'il doit vivre.


RE: sql.class => une aide pour ceux qui veulent commencer la POO sans se casser la tete. - keke - 09-03-2009

Et peut-être que tu pourrais proposer ton fichier complet (genre tu utilises le système de Upload de Jeuweb.org ^^)

Kéké


RE: sql.class => une aide pour ceux qui veulent commencer la POO sans se casser la tete. - galadie - 09-03-2009

(09-03-2009, 11:37 AM)z3d a écrit : Ne m'en veux pas mais c'est... illisible !
Je n'ai même pas eu envie de le lire le code et pourtant j'adore cela le code mais alors là c'est vraiment pas possible, dans la bataille j'ai failli perdre 1 oeil et trois dents Sad

Conventionne ton codage parce que celui qui doit passer après toi, bonjour ce qu'il doit vivre.

t'as raison, quand je l'ai posté, il etait 3 heures du mat, j'étais à la masse... :nonon:

ya pas mal de trucs inutile, de chose pas clairs et c'est trop tassé...

je corrige ça rapidement et on en reparle

ok ?


RE: sql.class => une aide pour ceux qui veulent commencer la POO sans se casser la tete. - Zamentur - 09-03-2009

Je croyais avoir répondu mais apparemment pas!

Donc dans cette réponse je disais que je trouvais que la sémantique de ta classe n'était pas génial.

En effet rien que le nom de la classe, "sql", laisse entendre un genre de classe d'abstraction sql qui permet de manier la bdd.
Ici c'est pas le cas c'est une classe qui créer des objets table auquel sont lié des méthodes d'édition graphique et d'édition de la bdd.

D'ailleurs je trouve que tu aurais du éviter de mélanger ces 2 type de méthode bien distinct, puisque l'un concerne l'affichage et l'autre l'accés au donnée.

Ensuite je te conseille d'utiliser des commentaire de documentation automatique.
Ça permet notamment d'éviter de devoir commenter chaque méthode quand tu poste un message...


RE: sql.class => une aide pour ceux qui veulent commencer la POO sans se casser la tete. - galadie - 09-03-2009

(09-03-2009, 02:51 PM)Zamentur a écrit : Donc dans cette réponse je disais que je trouvais que la sémantique de ta classe n'était pas génial.

En effet rien que le nom de la classe, "sql", laisse entendre un genre de classe d'abstraction sql qui permet de manier la bdd.
Ici c'est pas le cas c'est une classe qui créer des objets table auquel sont lié des méthodes d'édition graphique et d'édition de la bdd.

:heu: data.class :cogne: adjugé et vendu

Citation :Ensuite je te conseille d'utiliser des commentaire de documentation automatique.
Ça permet notamment d'éviter de devoir commenter chaque méthode quand tu poste un message...

je travaille avec NotePad++ je sais pas si j'ai ça...
en tout cas, voici une deuxieme version qui tiens compte de la plupart des remarques reçues...

Code PHP :
<?php

class data
{
var
$mysql ;
var
$db ;
var
$table;
var
$champs ;
/*
* le constructeur avec en param les valeurs de config...
*/
public function __construct($bdd, $host, $username, $password)
{
$this->mysql = mysql_connect($host, $username, $password);
$this->db = mysql_select_db($bdd) ;
}
/**
* le desctructeur ferme la connecion à la base de donnée
**/
public function __destruct()
{
mysql_close($this->mysql);
}


/**
* la method ListEnum genere pour les champs de type ENUM un boite dse selection avec les valeurs reponses enregistrées...
**/
function listEnum($nom_enum , $selected)
{

$donnees =array();
$requete = mysql_query("show columns from ".$this->table." like '$nom_enum' ") or die("show columns from ".$this->table." like '$nom_enum' ".mysql_error());

while(
$donnees = mysql_fetch_array($requete))
{
if(
preg_match('!enum(.+)!', $donnees['Type']))
{
$enum = preg_replace ('!^enum\((.+)\)$!', '$1', $donnees['Type']);

$enum = str_replace ("'", "", $enum);
$enum = explode (',', $enum);
$select .= '<select name="'. $nom_enum.'">';
foreach (
$enum as $valeur){

if(
$selected==$valeur) $select .= ' <option selected value="' . $valeur . '">' . $valeur . '</option>';
else
$select .= ' <option value="' . $valeur . '">' . $valeur . '</option>';
}
$select .= '</select>';
}
}

return
$select;

}

function
table($table )
{
$this->table = $table ;

$sql ="describe ".$this->table." ;" ;
$infos = mysql_query($sql)or die( $sql."\n<br />\n impossible d'executer la reqete : \n<br />\n ".mysql_error() ) ;
while(
$donnees = mysql_fetch_array($infos))
$tab_donnees[] = $donnees;

foreach(
$tab_donnees as $data => $club)
{
$titre = $club["Field"];
$value = $club["Default"];

$this->champs->$titre = $value;
}
}
/**
* la methode get permet de recuperer l'objet specifique sur lequel on veut travailler...
**/
public function get($id , $field="")
{
$donnees = array();

if(
$field=="") $field = "id";

$this->$field = $id;

$sql ="SELECT * FROM `".$this->table."` WHERE $field='$id'" ;

//print "<p>$sql</p>";

$infos = mysql_query($sql)or die( $sql."\n<br />\n impossible d'executer la reqete : \n<br />\n ".mysql_error() ) ;
$donnees = mysql_fetch_array($infos);

if(!empty(
$donnees))
{
foreach(
$donnees as $name => $value)
{
if(!
is_numeric($name)) $this->champs->$name = $value ;
}
return
true;
}
else return
false ;
}

public function
insert()
{
foreach (
$this->champs as $name => $value)
{
if(
$name!="id" )
{
$into .= ",`$name`" ;
$values .= ",'$value'";
}
}

$into = ltrim($into,",");
$values = ltrim($values,",");
//on supprime les virgules en trop...
$sql = "insert into ".$this->table." ($into) values ($values)";
$infos = mysql_query($sql)or die( $sql."\n<br />\n impossible d'executer la reqete : \n<br />\n ".mysql_error() ) ;
print
"<p>$sql</p>";
return
mysql_insert_id();//LAST_INSERT_ID() ;
}

public function
update()
{
foreach (
$this->champs as $name => $value)
{
if(
$name!="id")$set .= ",`$name` = '$value'" ;
}
$set = ltrim($set, ",");
//on supprime les virgules en trop...
$sql ="update `".$this->table."` set $set where `id` = '".$this->id."' ";
$infos = mysql_query($sql)or die( $sql."\n<br />\n impossible d'executer la reqete : \n<br />\n ".mysql_error() ) ;

return
$this->id;
}
/**
* on doit aussi pouvoir effacer
**/
public function delete($id="")
{
if(
$id=="")$id = $this->id ;

$sql ="delete from `".$this->table."` where `id` = '".$id."' ";
$infos = mysql_query($sql)or die( $sql."\n<br />\n impossible d'executer la reqete : \n<br />\n ".mysql_error() ) ;
}
/**
* la methode select ne porte pas sur un enregistrement mais sur un ou plusieurs.
* vous fixer la condition, comme une requete normale et on vous retourne les enregistrement sous un array.
**/
public function select($where="" , $order = '')
{
$donnees = array();
$result = array();

if(
$where != '')
$where = ' WHERE '.$where;

if(
$order != '')
$order = ' ORDER BY '.$order;

$sql ="SELECT * FROM `".$this->table."` $where $order " ;

//print "<p>$sql</p>";

$infos = mysql_query($sql)or die( $sql."\n<br />\n impossible d'executer la reqete : \n<br />\n ".mysql_error() ) ;
while(
$donnees = mysql_fetch_array($infos))
{
//is_numeric
$result[] = $donnees ;
}
return
$result ;
}
/**
*getChamps permet de controler l'existence d'un champs.
**/
public function getChamps($champs)
{
$retour = false;
foreach(
$this->champs as $field => $val)
{
if(
$field == $champs ) $retour = true;
}
return
$retour ;
}
/**
* set permet de modifier sa valeur via l'objet si vous ne preferez pas le faire en dur dans le code.
**/
public function set($champs, $value)
{
$this->champs->$champs = $value ;
}
}


class
DataEdit extends data
{
var
$table;
var
$champs ;

function
DataEdit($bdd, $host, $username, $password , $table )
{
parent::__construct($bdd, $host, $username, $password);
$this->table($table );
}
/****
* la fonction add retourne un tableau d'enregistrement. avec des champs de saisie formés selon le type des données.
* en param, le tableau $_POST pour l'insertion des valeur
****/
public function add( $post=null )
{
if(isset(
$post['add']))
{
foreach(
$post as $champs => $val )
{
if(
getChamps($champs))$this->set($champs, $val);
}
$this->insert();
}

$array_edit = array();

$sql ="describe ".$this->table." ;" ;
$infos = mysql_query($sql)or die( $sql."\n<br />\n impossible d'executer la reqete : \n<br />\n ".mysql_error() ) ;

$array_edit["form_init"] = '<form method="post" >';
$array_edit["table_init"] = '<table>';
$array_edit["caption"] = '<caption><h1>'.$this->table.'</h1></caption>';

while(
$donnees = mysql_fetch_array($infos))
{
if(
eregi('varchar',$donnees["Type"]))
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td><input type="text" name="'
.$donnees["Field"].'" /></td>
</tr>'
;

if(
eregi('int',$donnees["Type"]))
{
if(
$donnees["Field"]!="id")
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td><input type="text" size="2" name="'
.$donnees["Field"].'" /></td>
</tr>'
;
}

if(
eregi('decimal',$donnees["Type"]))
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td><input type="text" size="2" name="'
.$donnees["Field"].'" /></td>
</tr>'
;

if(
eregi('text',$donnees["Type"]))
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td><textarea name="'
.$donnees["Field"].'"></textarea></td>
</tr>'
;

if(
eregi('enum',$donnees["Type"]))
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td>'
.$this->listEnum( $donnees['Field'] , '' ).'</td>
</tr>'
;
}

$array_edit["submit"] = '<tr><td></td><td><input type="submit" name="add" /></td></tr>';

$array_edit["table_close"] = '</table>';
$array_edit["form_close"] = '</form>';

return
$array_edit;
}

/**
* la fonction edit retourne un tableau d'edition d'un enregistrement. avec des champs de saisie formés selon le type des données.
* en param, le tableau $_POST pour la modification des valeur
**/
public function edit($id, $post=null )
{
if(isset(
$post['mod']))
{
foreach(
$post as $champs => $val )
{
if(
getChamps($champs))$this->set($champs, $val);
}
$this->update();
}

$array_edit = array();

$this->get($id);
$sql ="describe ".$this->table." ;" ;
$infos = mysql_query($sql)or die( $sql."\n<br />\n impossible d'executer la reqete : \n<br />\n ".mysql_error() ) ;

$array_edit["form_init"] = '<form method="post" >';
$array_edit["table_init"] = '<table>';
$array_edit["caption"] = '<caption><h1>'.$this->table.'</h1></caption>';

while(
$donnees = mysql_fetch_array($infos))
{
if(
eregi('varchar',$donnees["Type"]))
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td><input type="text" name="'
.$donnees["Field"].'" value="'.$this->champs->$donnees["Field"].'" /></td>
</tr>'
;

if(
eregi('int',$donnees["Type"]))
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td><input type="text" size="2" name="'
.$donnees["Field"].'" value="'.$this->champs->$donnees["Field"].'" /></td>
</tr>'
;

if(
eregi('text',$donnees["Type"]))
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td><td><textarea name="'.$donnees["Field"].'">'.$this->champs->$donnees["Field"].'</textarea></td>
</tr>'
;

if(
eregi('enum',$donnees["Type"]))
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td>'
.$this->listEnum( $donnees['Field'] , $this->champs->$donnees["Field"] ).'</td>
</tr>'
;

if(
eregi('decimal',$donnees["Type"]))
$array_edit[$donnees["Field"]] = '<tr>
<td>'
.$donnees["Field"].'</td>
<td><input type="text" size="2" name="'
.$donnees["Field"].'" value="'.$this->champs->$donnees["Field"].'" /></td>
</tr>'
;
}

$array_edit["submit"] = '<tr><td></td><td><input type="submit" name="mod" /></td></tr>';

$array_edit["table_close"] = '</table>';
$array_edit["form_close"] = '</form>';

return
$array_edit;
}

/**
* la fonction inspect fourni un tableau des enregistrement avec un lien vers une page d'ajout/edition ou un mode de suppression
**/
function inspect($condition="" , $url)
{
$table = $this->select($condition);

$array_edit["table_init"] = '<table>';
$array_edit["caption"] = '<caption><h1>'.$this->table.'</h1></caption>';

$array_edit["th"] .= "<tr>";
foreach (
$this->champs as $name => $value) $array_edit["th"] .= "<th>$name</th>";
$array_edit["th"] .= "</tr>";

foreach(
$table as $ligne )
{
$array_edit[$ligne["id"]] .= "<tr>";

foreach (
$ligne as $i => $piks )
{
// on limite la taille des enregistrements et on y supprime les balise HTML...
$piks = ereg_replace("<[^>]*>", "", trim(strip_tags($piks)) ) ;
if(
strlen($piks)>=50) $piks = substr($piks, 0, 50)."...";

if(!
is_numeric($i)) // on enleve les doublons en clé numerique
$array_edit[$ligne["id"]] .= "<td>".$piks."</td>";
}

$array_edit[$ligne["id"]] .= "<td>
<a href='"
.$url."&ordre=edit&table=".$this->table."&id=".$ligne["id"]."' >
<img src='"
.$url."/images/admin/data/edit.jpg' alt='".$ligne["id"]."' />
</a>
</td>"
;

$array_edit[$ligne["id"]] .= "<td>
<a href='"
.$url."&ordre=delete&table=".$this->table."&id=".$ligne["id"]."' >
<img src='"
.$url."/images/admin/data/delete.gif' alt='".$ligne["id"]."' />
</a>
</td>"
;

$array_edit[$ligne["id"]] .="</tr>";
}
$array_edit["nouveau"] = "<tr><td>nouveau</td><td><a href='".$url."&ordre=edit&table=".$this->table."' ><img src='".$url."/images/admin/data/ajout.jpg' alt='".$ligne["id"]."' /></a></td></tr>";
$array_edit["table_close"] = '</table>';

return
$array_edit;
}
}
?>