Bonjour Ryle.
Je viens de regarder ta proposition. et j'ai appliqué les modification que tu me suggère. Sans résultat. Le fait d'avoir plusieurs classes s'appelant les unes les autres n'est-il pas trop lourd ?
J'aimerai avoir un avis sur la façon dont mes classes sont organisées.
J'ai un fichier index.php qui contient :
<?php
include('../class/classes.php');
include(ROOT_URL.'Admin/liste_commune.php');
?>
un fichier classes.php qui contient :
<?
error_reporting(E_ALL);
require_once(dirname(__FILE__).'/../configbase.php');
require_once(dirname(__FILE__).'/class.databaseamr.php');
require_once(dirname(__FILE__).'/class.commune.php');
require_once(dirname(__FILE__).'/class.elu.php');
?>
un fichier databaseamr.php qui contient:
<?php
/**
* Classe Database - Classe de gestion de la base de données MySQL
* @package Database
*/
/**
* Classe Database - Classe de gestion de la base de données MySQL
* @package Database
*/
Class Database{
/**
* Lien de connexion à la base de données
* @access private
* @var midex
*/
var $_Link = null;
/**
* Nombre de requête sur la base de données
* @access private
* @var integer
*/
var $_Queries = 0;
/**
* Connexion à la base de données MySQL.
* On tente la connexion à la base de données MySQL en utilisant les constantes :
* DB_HOSTNAME pour l'adresse du serveur MySQL,
* DB_USERNAME pour le nom d'utilisateur de la base,
* DB_PASSWORD pour le mot de passe de connexion et
* DB_DATABASE pour le nom de la base de données
* @return object Database
*/
function Database(){
$this->_Link = mysql_connect(DB_HOSTNAME,DB_USERNAME,DB_PASSWORD)
or die(mysql_error());
mysql_select_db(DB_DATABASE,$this->_Link)
or die(mysql_error($this->_Link));
}
/**
* Retourne l'instance courante de connexion à la base de données'
* Evite la multiplication des connexions à la base de données
* @return object Database
*/
function &getInstance(){
global $_DB_Instance;
if(!isset($_DB_Instance))
$_DB_Instance = new Database();
return $_DB_Instance;
}
/**
* Effectue une requête SQL sur la base de données et retourne un pointeur de résultats
* @param string $query Requête SQL
* @param bool $buffer Spécifie si le serveur de base de données doit utiliser un tampon pour les résultats
* @return mixed Pointeur de résultats
*/
function Query($query,$buffer = true){
//echo '<small>'.$query.'</small><br />';
$this->_Queries++;
//$rs = $buffer?mysql_query($query,$this->_Link):mysql_unbuffered_query($query,$this->_Link);
$rs = mysql_query($query,$this->_Link);
/*if(!$rs)
trigger_error(mysql_error($this->_Link));*/
return $rs;
}
/**
* Retourne la ligne courante de résultats et avance le pointeur d'une ligne.
* La ligne de résultats est un tableau indexé par une valeur numérique qui correspond à l'ordre des champs
* dans la requête SQL.
* @return mixed Ligne de résultats
*/
function fetchRow(&$rs){
$row = mysql_fetch_row($rs);
if($row)
return $row;
@mysql_free_result($rs);
return false;
}
/**
* Retourne la ligne de résultats courantes et avance le pointeur d'une ligne.
* La ligne de résultats est un tableau indexé par une chaîne de caractères qui correspond aux noms des champs
* @return mixed Ligne de résultats
*/
function fetchArray(&$rs){
$value = mysql_fetch_assoc($rs);
if($value)
return $value;
@mysql_free_result($rs);
return false;
}
/**
* Retourne le nombre de lignes modifiées par la dernière requête SQL.
* @return integer Nombre de lignes modifiées
*/
function affectedRows(){
return mysql_affected_rows($this->_Link);
}
/**
* Retourne le nombre de lignes de la dernière requête SQL.
* @return integer Nombre de lignes.
*/
function affectedNumRows($rst){
return mysql_num_rows($rst);
}
/**
* Retourne la valeur de l'auto-incrément créé par la dernière requête.
* @return integer Auto-incrément
*/
function insertID(){
return mysql_insert_id($this->_Link);
}
/**
* Exécute la requête SQL et retourne la première ligne de résultats.
* La ligne de résultats est un tableau indexé par des valeurs numériques.
* @return mixed Première ligne de résultats
*/
function getOne($query){
$rs = $this->Query($query,false);
$row = $this->fetchRow($rs);
@mysql_free_result($rs);
return $row;
}
/**
* Exécute la requête SQL et retourne toutes les lignes de résultats.
* Les lignes de résultats sont un tableau indexé par des chaînes de caractères.
* @return mixed Tableau contenant toutes les lignes de résultatss
*/
function getAll($query){
$rs = $this->Query($query,false);
$array = array();
while($value = $this->fetchArray($rs))
$array[] = $value;
@mysql_free_result($rs);
return $array;
}
/**
* Retourne un nom de table en y ajoutant le préfix.
* DB_PREFIX est ajouté au nom de la table
* @return string Nom de la table
*/
function Prefix($table){
return DB_PREFIX.$table;
}
/**
* Prépare une chaîne de caractères pour être utilisée dans une requête SQL
* @return string Chaîne de caractères utilisable dans une requête
*/
function Quote($string){
return '\''.mysql_real_escape_string($string,$this->_Link).'\'';
}
/**
* Retourne le nombre de requêtes effectuées
* @return integer Nombre de requête effectuées
*/
function Queries(){
return $this->_Queries;
}
}
?>
un fichier classe.commune.php qui contient:
<?php
/**
* Classe de gestion de l'affichage des communes
*/
class commune
{
var $_insee = '';
var $_nomcommune = '';
var $_adresse = '';
var $_codepostal = '0';
var $_tel = '';
var $_fax = '';
var $_email = '';
var $_horaire = '';
var $_superficie = '0';
var $_population1 = '0';
var $_refannee = '0';
var $_circonscription = '';
var $_idcanton = '0';
var $_nomprefet = '';
var $_nomdepute = '';
var $_nomconseillergeneral = '';
var $_sallepoly = '0';
var $_nbassociation = '0';
var $_nbpersonne = '0';
var $_internetpoly = '0';
var $_nbpersonneresto = '0';
var $_internetresto = '0';
var $_photo = '';
function commune($value='')
{
if($value!='')
{
$this->_insee = isset($value['insee'])?trim($value['insee']):0;
$this->_nomcommune = isset($value['nom_commune'])?trim($value['nom_commune']):'';
$this->_adresse = isset($value['adresse'])?trim($value['adresse']):'';
$this->_codePostal = isset($value['code_postal'])?trim($value['code_postal']):0;
$this->_tel = isset($value['tel'])?intval($value['tel']):'';
$this->_fax = isset($value['fax'])?trim($value['fax']):'';
$this->_email = isset($value['email'])?trim($value['email']):'';
$this->_http = isset($value['http'])?trim($value['http']):'';
$this->_horaire = isset($value['horaire'])?trim($value['horaire']):'';
$this->_superficie = isset($value['superficie'])?intval($value['superficie']):0;
$this->_population1 = isset($value['population1'])?trim($value['population1']):0;
$this->_refannee = isset($value['ref_annee'])?trim($value['ref_annee']):0;
$this->_circonscription = isset($value['circonscription'])?trim($value['circonscription']):'';
$this->_idarrondissement = isset($value['id_arrondissement'])?trim($value['id_arrondissement']):0;
$this->_idcanton = isset($value['id_canton'])?trim($value['id_canton']):0;
$this->_nomprefet = isset($value['nom_prefet'])?trim($value['nom_prefet']):'';
$this->_nomdepute = isset($value['nom_depute'])?trim($value['nom_depute']):'';
$this->_nomconseillergeneral= isset($value['nom_conseiller_general'])?trim($value['nom_conseiller_general']):'';
$this->_sallepoly = isset($value['salle_polyvalente'])?trim($value['salle_polyvalente']):0;
$this->_nbassociation = isset($value['nb_association'])?trim($value['nb_association']):0;
$this->_nbpersonne = isset($value['nb_personne'])?trim($value['nb_personne']):0;
$this->_internetpoly = isset($value['internet'])?trim($value['internet']):'';
$this->_nbpersonneresto = isset($value['nb_personne_restauration'])?trim($value['nb_personne_restauration']):0;
$this->_internetresto = isset($value['internet_restauration'])?trim($value['internet_restauration']):'';
$this->_photo = isset($value['photo'])?trim($value['photo']):'';
}
}
function insertcommune($insee,$nomcommune,$adresse,$codepostal,$tel,$fax,$email,$http,$horaire,$superficie,$population1,$refannee,$circonscription,$arrondissement,$canton,$nomprefet,$nomdepute,$nomconseillergeneral,$nbassociation,$nbpersonne,$nbpersonneresto)
{
$db =& Database::getInstance(); //crée une connection à la db.
$sql = "INSERT INTO amr_commune
(insee,nom_commune,adresse,code_postal,tel,fax,email,http,horaire,superficie,population1,ref_annee,id_arrondissement,id_canton,circonscription,nom_prefet,nom_depute,nom_conseiller_general,salle_polyvalente,nb_association,nb_personne,internet,nb_personne_restauration,internet_restauration) VALUES ('$insee','$nomcommune','$adresse','$codepostal','$tel','$fax','$http','$email','$horaire','$superficie','$population1,'$refannee','$circonscription','$arrondissement','$canton','$nomprefet','$nomdepute','$nomconseillergeneral','$nbassociation','$nbpersonne','$nbpersonneresto')";
mysql_query($sql); //ecrit dans la base de donnée
print_r($sql);
}
//Retourne la liste des communes présentes dans la base
function get_communes(){
$db =& Database::getInstance(); //crée une connection à la db.
$req = "SELECT * FROM ".$db->Prefix('commune')." ORDER BY insee";
//print_r ($tb);
$tb = $db->GetAll($req);
return $tb;
//print_r ($tb) ;
}
//Retourne la communes présente dans la base
function get_une_commune($num){
$db =& Database::getInstance(); //crée une connection à la db.
$req = "SELECT * FROM ".$db->Prefix('commune')." WHERE insee = '".$idinsee." ORDER BY nom_commune'";
$tb = $db->GetAll($req);
return $tb;
}
//Retourne le canton
function get_un_canton($num){
$db =& Database::getInstance(); //crée une connection à la db.
$req = "SELECT * FROM ".$db->Prefix('canton')." WHERE id_canton='".$num."'";
$tb = $db->GetAll($req);
return $tb;
}
//Retourne la liste des cantons présentes dans la base
function get_cantons(){
$db =& Database::getInstance(); //crée une connection à la db.
$req = "SELECT * FROM ".$db->Prefix('canton');
$tb = $db->GetAll($req);
return $tb;
}
//Retourne l'arrondissement.
function get_un_arrondissement($num){
$db =& Database::getInstance(); //crée une connection à la db.
$req = "SELECT * FROM ".$db->Prefix('arrondissement')." WHERE id_arrondissement = '".$num."'";
$tb = $db->GetAll($req);
return $tb;
}
//Retourne la liste des arrondissements.
function get_arrondissements(){
$db =& Database::getInstance(); //crée une connection à la db.
$req = "SELECT * FROM ".$db->Prefix('arrondissement');
$tb = $db->GetAll($req);
return $tb;
}
}
?>
Mes répertoires de site sont organisé comme sur mon autre poste de travail.
tous les autres fichier.php ont un
<?php
include('../class/classes.php');
?>