begin process at 2012 05 27 17:53:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > [PHP 5] CLASSE SQL

[PHP 5] CLASSE SQL


 Information sur la source

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Class et Objet ( POO ) Classé sous :class, mysql, sql, bdd, php5 Niveau :Initié Date de création :08/08/2005 Date de mise à jour :03/01/2006 17:48:48 Vu / téléchargé :14 142 / 1 112

Auteur : FhX

Ecrire un message privé
Commentaire sur cette source (21)
Ajouter un commentaire et/ou une note

 Description

Encore une classe sur la connection/gestion d'une base MySQL.
Au début, j'utilisais la classe d'un des membres de PHPCS (je sais plus lequel), et je l'ai un petit peu modifié.
Voici donc ce que ca donne :

Source

  • <?php
  • // FICHIER index.php
  • $db = new mysql;
  • // Nouvelle méthode :
  • $db->prepare("SELECT COUNT(*) FROM table WHERE x = '{1}' ", $x);
  • $db->query();
  • $row = $db->fetch_row();
  • echo $row[0];
  • // Vieille méthode (plus lente):
  • $sql = "SELECT COUNT(*) FROM table WHERE x = '$x' ";
  • $query = $db->query($sql);
  • $row = $db->fetch_row($query);
  • echo $row[0];
  • // Autre méthode (un mix des 2) :
  • $sql = "SELECT ...";
  • $db->query($sql);
  • $row = $db->fetch_row();
  • echo $row[0];
  • // Voila vous avez le choix :) Le reste est dans le zip !
  • ?>
<?php
// FICHIER index.php

$db = new mysql;

// Nouvelle méthode :
$db->prepare("SELECT COUNT(*) FROM table WHERE x = '{1}' ", $x);
$db->query();
$row = $db->fetch_row();
echo $row[0];

// Vieille méthode (plus lente):
$sql = "SELECT COUNT(*) FROM table WHERE x = '$x' ";
$query = $db->query($sql);
$row = $db->fetch_row($query);
echo $row[0];

// Autre méthode (un mix des 2) :
$sql = "SELECT ...";
$db->query($sql);
$row = $db->fetch_row();
echo $row[0];

// Voila vous avez le choix :) Le reste est dans le zip !
?>

 Conclusion

Je suis ouvert à toute suggestion sur une possible amélioration/extension des capacités de la classe (surtout en matière de gestion d'erreur), que ce soit via un lien ou un bout de code en plus.

Il est possible qu'il y ait une erreur via les chemins relatifs, c'est normal, j'ai enlevé mon arborescence, suffit juste de le remplacer !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

09 août 2005 13:23:57 :
Erreur au niveau de la fermeture de la balise <span>
28 août 2005 12:29:47 :
Refonte quasi-entière de la classe. Gestion des exceptions avec try{..}catch{...} Utilisation d'un tracker pour un suivi des logs (à améliorer). Génération d'un fichier de log possible ou par e-mail. (à améliorer). Ajout d'une possible description pour chaque query.
30 novembre 2005 21:18:23 :
-Refonte de la classe -Ajout de l'utilisation d'une classe abstraite
03 décembre 2005 19:16:29 :
Update - Rajout d'une interface publique au lieu de tout mettre dans la classe abstraite
07 décembre 2005 20:53:06 :
Reupdate suite à la demande de Malalam et d'Antho. C'est vrai qu'en passant en public quelques trucs, je rends la classe un peu plus modulaire encore !
07 décembre 2005 21:35:20 :
Epuration de la classe MySQL. Ajout de la classe héritière pour débug (débug simple pour le moment)
09 décembre 2005 16:25:25 :
Remaniement de la méthode query() en ajoutant un test pour un échappement de caractères. Ajout de $_option (tableau) qui gère les différentes options de la classe (en cours d'ajout).
09 décembre 2005 21:00:41 :
Refonte total (encore une fois :) ) J'utilise la classe abstraite comme super-class qui possède les méthodes de bases. La classe qui hérite spécialise les méthodes en fonction du type de BDD ( pour mysql, ajout des fonctions mysql_ )
09 décembre 2005 21:02:56 :
(Oubli de la configuration :) )
23 décembre 2005 21:16:04 :
Méthode de préparation des requètes SQL.
03 janvier 2006 17:29:45 :
Ajout : try{}catch{} - Options de classes ajoutées - Nouveautés diverses...
03 janvier 2006 17:48:49 :
Ajout du zip !

 Sources du même auteur

PHP5 - UTILISATION DES ITÉRATEURS ET DE LA RÉFLECTION.
PHP 5 - CLASSE MYSQL (STYLE MYSQLI)
[PHP5] CLASSE DATE/HEURE
PHP5 - GESTION DE MODULES EN OBJET
PHP5 - CLASSE DE NEWS ET DE COMMENTAIRES

 Sources de la même categorie

Source avec Zip GÉNÉRATION AUTOMATIQUE DE FICHIER .CLASS.PHP EN FONCTION D'U... par ig3
CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip MY.DEVIANTART API par inwebo
CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter

 Sources en rapport avec celle ci

Source avec Zip CLASS SIMPLE CBASEDONNEE par smag42
Source avec Zip CLASS MYSQL 5/PHP5 AVEC GESTION DES EXCEPTION ET DES REQUÊTE... par devil_may_cry
Source avec Zip CLASSE SQL par benjycorp
Source avec Zip PHP5 CLASSE GÉNÉRIQUE GESTION ROUTINES MYSQL par oxxo
Source avec Zip PHP5 - COUCHE D'ABSTRACTION SGBD par FhX

Commentaires et avis

Commentaire de GRenard le 09/08/2005 17:14:09

Ce n'est pas la mienne...
http://www.phpcs.com/code.aspx?ID=24813
Personnellement, je n'aime pas voir des span ou die dans une classe comme ca... tu coupes toutes les fonctionnalités du site si tu fais ca... Perso j'aurais mis du try catch (que l'utilisateur doit attraper au cas où... ou simplement pas de die et des retours d'erreur).

Commentaire de FhX le 09/08/2005 18:13:49

Je sais bien, mais j'utilise cette classe avec un template pour la gestion d'erreur. J'ai du la remanier un peu pour enlever tout ce qui touchais aux templates.

Voila pourquoi j'ai mis du <span></span> et du die(). Mais je vais changer un peu ca...

Commentaire de FhX le 29/08/2005 22:03:46

C'est update .. J'ai encore des problèmes pour la gestion d'erreur via mail().
Si quelqu'un a une idée, je prend !

Commentaire de FhX le 30/11/2005 21:20:35

Et zoup :)

Commentaire de FhX le 01/12/2005 13:53:48

J'ai dû taper trop haut niveau source... y'a plus personne qui répond maintenant ;)

Commentaire de GRenard le 01/12/2005 21:19:17

Bah c'est bien... je suis le seul par contre à recevoir l'email ;)
Ton code s'est amélioré, c'est bien !
Et mysqli maintenant ?

Commentaire de FhX le 01/12/2005 22:12:10

Bah, mysqli possède déja sa propre interface objet avec PHP5.

Suffit de faire :
$x = new mysqli(host, login, password, nom_de_la_base);

et ca marche tout seul :)

Commentaire de FhX le 01/12/2005 22:13:22

Jpeux le faire pour postgreSQL par contre... suffit de faire une classe qui hérite de la classe abstraite et reprendre les méthodes une à une.

Jferais ca demain tiens !

Commentaire de malalam le 08/12/2005 11:22:22 administrateur CS

Ah ben c'est joli là :-)
Allez hop, je récupère ;-)

Commentaire de malalam le 08/12/2005 17:59:01 administrateur CS

Tien, une suggestion :

// Fonction échappant les caractères dangereux.
  public function escape ($txt) {
    return mysql_real_escape_string($txt);
  }
//-----------------------------

Commentaire de FhX le 09/12/2005 13:30:07

Non, ca je ne l'inclurait pas. C'est une fonction qui reste hors classe ca. A la limite, je peux faire :

"#  $this->query = @mysql_query( $sql, $this->_config['link'] );"
=>
$this->query = @mysql_query( mysql_real_escape_string($sql), $this->_config['link'] );

Ce qui sera fait automatiquement ! Vu que j'en ai besoin que lors des queries !
Oui ? Non ?

Commentaire de malalam le 09/12/2005 13:50:22 administrateur CS

Oui, d'autant plus que mysql_real_escape_string () a besoin d'une connexion au serveur de bdd pour fonctionner. Donc pourquoi pas. Et ça ne peut pas faire de mal!

Commentaire de FhX le 09/12/2005 14:04:49

A la limite, jpeux y mettre une condition dessus !

class mysql {

public $_option = array('ESCAPE_STRING' => TRUE);


public function query($sql) {
  
  $this->query = ( $this->_option['ESCAPE_STRING'] ) ? @mysql_query( mysql_real_escape_string($sql), $this->_config['link']) : @mysql_query( $sql, $this->_config['link'];

}
}

Mieux ? Ou ca fait trop lourd ?

Commentaire de malalam le 09/12/2005 14:40:48 administrateur CS

Pourquoi pas... ouais, ça laisse le choix et par défaut, c'est réalisé. Je suis ok avec ça ;-)

Commentaire de malalam le 09/12/2005 14:44:37 administrateur CS

et c'est lourd là, parce que tu n'as qu'une seule option...mais il en viendra sûrement d'autres.

Commentaire de FhX le 09/12/2005 16:32:11

Re-Update !

Rah et ce colorisateur syntaxique alors ... !

Bon, j'ai encore quelques optimisations à faire, mais dans l'ensemble ca me parait pas trop mauvais.

Commentaire de FhX le 03/01/2006 17:32:50

Voila j'en ai rajouté des options Malalam... comme ca, ma vieille option d'avant ne sera plus seule desormais ;)

Commentaire de malalam le 03/01/2006 17:37:11 administrateur CS

Heu, je serais toi, je mettrais un zip, maintenant...il devient long ce code lol ;-)

Vais tester ça, mais les noms me plaisent bien ;-)

Commentaire de FhX le 03/01/2006 17:50:17

Voila j'ai mis un zip !
Y'a tout dedand, sauf un exemple ! ;)

Ceux qui veulent essayer, qu'ils s'amusent alors !

Commentaire de Teclis01 le 30/04/2007 22:33:47

Moi je veux !!! Je recode tout mon jeu php... Non pas que la premiere  version soit nulle mais le code n'est pas assez propre a mon gout donc je refais tout avec ta classe :)
Merci FhX >.<

Commentaire de starrr le 08/11/2007 17:24:00

Félicitation pour ce code.
cependant j'ai un pti soucis, les requetes simple fonctionne,
mais lorsque je veux imbriquer une autre requete dans un while ça ne passe pas.
du style :
j'ai une page avec une liste de personne qui possède 4 photos chacune

je liste dabor les personnes puis normalement je dois faire un second while dedans, mais ça bloke.
est ce normal?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Problème de Débutant: récupérer des données sql dans des variables... [ par la_ptite_85 ] Bonjour !Je voudrais sortir les valeurs de ma bdd sql pour les envoyer vers flash...Voil&#224; mon code :&lt;?php$nom = $_GET['nom'];$host = "sql.free Problème affichage sur plusieurs colonnes [ par R3dDragon ] &lt;?php// connexion à la bdd$bdd = mysql_connect($sql_serveur, $sql_login, $sql_pass);  // selection de la table mysql_select_db($sql_bdd,$bdd);// re Instruction require_once() et erreur "supplied argument is not a valid MySQL" [ par karpediem ] Bonjour @ toutezéatous,J'ai une question toute bête, j'ai presque honte de la poser, mais je vais prendre sur moi ;o))J'ai une page php qui est appell comment sortir de la bdd ? [ par Georges97427 ] Boujour, Debutant, J'essaye d'inscrire dans ma bdd que j'ai ouverte avec wamp-phpadmin. mais lorsque j'ai inscrit une ligne je sors avec le message problème pour migrer une BDD mysql [ par BencoAndCo ] Bonjour, j'ai fait la migration d'une base de données MySQL pour cela j'ai créé une requete permettant de reconstruire les tables de la bdd sur une alimenter une table avec les données d'une autre table [ par hitu ] bonjour, J'ai un formulaire de saisie ou je peux inserer dans ma table image des nouvelles données de mes tables auteur, dates, lieux et motscles mai faire un formulaire de saisie en récuperant des données [ par hitu ] Bonjour, j'ai fais un formulaire de saisie. voici mon problème. J'arrive à inserer des nouvelles données dans ma table image mais dès que je rentre Probleme interogation 2 table [ par casper77610 ] Bonjour à tous, Voici mon code. Et je vous explique mon problème. [code=php] <?php $db = mysql_connect('localhost', 'root', '') or die('HOST ?'); mysq requete sql avec des varaibles [ par choukk ] Bonjour, Je souhaite faire une requête mysql avec un nom de colonne récupérer d'une variable php comment faire? $cat.$zone="2V" 47 $sql = "SELECT $ saisie de données déja connues [ par hitu ] Bonjour, Je voudrais inserer avec un formulaire de saisie dans ma table image une période. Voici mes deux tables image (idimage, titre,...., idate) d


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales