Effectuer des requêtes à partir de classes
Posté : 18 nov. 2007, 23:53
Bonsoir à tous,
depuis peu je me suis mis à la POO et je découvre la richesse de cette méthode de programmation. Toujours en quête d'optimisation, mais aussi, comme tout bon fainéant qui se respecte, je cherche à m'épargner de la réécriture de code. Etant donné qu'en programmation PHP il est souvent fait usage de requêtes SQL, je me suis dit qu'il pourrait être intéressant d'avoir une classe d'objet permettant de les automatiser.
Voici donc une classe que j'ai définie et parfaitement fonctionnelle :
Si oui, j'écrirai d'autres classes pour effectuer les requêtes revenant le plus souvent (UPDATE, INSERT, DELETE, etc...).
Si non, pourquoi ?
Par ailleurs, si cela à un quelconque intérêt, quelles suggestions me feriez-vous pour rendre ce code plus complet ?
Voici en complément la table utilisée pour l'exemple :
Merci de vos réponses ! 
depuis peu je me suis mis à la POO et je découvre la richesse de cette méthode de programmation. Toujours en quête d'optimisation, mais aussi, comme tout bon fainéant qui se respecte, je cherche à m'épargner de la réécriture de code. Etant donné qu'en programmation PHP il est souvent fait usage de requêtes SQL, je me suis dit qu'il pourrait être intéressant d'avoir une classe d'objet permettant de les automatiser.
Voici donc une classe que j'ai définie et parfaitement fonctionnelle :
<?php
class select_query {
// On recupère le fichier contenant les informations de connexion à la base de données
function select_database($cnx_data_file) {
require_once ($cnx_data_file);
$connexion = mysql_connect($dbhost, $utilisateur, $mdp) or die(mysql_error());
mysql_select_db($nombdd, $connexion) or die(mysql_error());
}
// On effectue une requête de type SELECT à partir des informations passées en argument
function select_table($select_param, $from_param, $where_param, $order_param, $limit_param) {
$query = "SELECT ".$select_param." FROM ".$from_param;
// On intègre les clauses optionnelles dans la requête si nécessaire
$query .= (isset($where_param) && !empty($where_param)) ? " WHERE ".$where_param : "";
$query .= (isset($order_param) && !empty($order_param)) ? " ORDER BY ".$order_param : "";
$query .= (isset($limit_param) && !empty($limit_param)) ? " LIMIT ".$limit_param : "";
// On execute la requête
$exec = mysql_query($query) or die (mysql_error());
// On affiche les données contenues dans la table sélectionnée
while ($result = mysql_fetch_array($exec)) {
echo $result['question'].'<br />';
}
}
}
?>
Puis le script appelant :<?php
include ("class_select_query.php");
$cnx_file = "configbdd.php";
$select = "*";
$from = "wowfaith_questions";
$exec_query = new select_query();
$exec_query->select_database($cnx_file);
$exec_query->select_table($select, $from, $where, $order, $limit);
mysql_close();
?>
Ma question est simple : bien que ce script fonctionne très bien, a-t-on intérêt à automatiser ce genre d'opération ?Si oui, j'écrirai d'autres classes pour effectuer les requêtes revenant le plus souvent (UPDATE, INSERT, DELETE, etc...).
Si non, pourquoi ?
Par ailleurs, si cela à un quelconque intérêt, quelles suggestions me feriez-vous pour rendre ce code plus complet ?
Voici en complément la table utilisée pour l'exemple :
Code : Tout sélectionner
CREATE TABLE `wowfaith_questions` (
`id` int(20) NOT NULL auto_increment,
`question` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=126 DEFAULT CHARSET=latin1 AUTO_INCREMENT=126 ;