Westiix

Fortnite Player || PHP & VB.NET
Premium
Inscription
5 Octobre 2011
Messages
2 219
Réactions
88
Points
12 753
1481539356-header.png

Class PHP OPEN-SOURCE crée par mes soins
Téléchargeable via les fichiers attachés, en bas de ce poste ;)

OPTIMISATIONS EN BAS DU POSTE

Comment effectuer les modifications ?
Il vous suffit de copier le code/la fonction qui a était optimisé (qui ce trouve en bas de ce poste) et de le remplacer dans la class que vous avez déjà ;)

--------------------------------------------------------------------
Changelog V2 :
Code:
- Ajout de la fonction "tableExist($PDO, $tableName)"
**********
Elle permet de vérifier si une table existe bien dans la base de donnée. Si  c'est le cas, elle r'envoie TRUE, sinon elle r'envoie FALSE.
********************************
- Ajout de la fonction "addChamp($champName, $champType, $param = null)"
**********
Elle permet d'ajouter un champ lors de la création d'une table via PHP
********************************
- Ajout de la fonction "createTable($tableName, $champ1, $champ2 = null, $champ3 = null, $champ4 = null, $champ5 = null, $champ6 = null, $champ7 = null)"
**********
Elle permet de crée une table dans la base de donnée directement via PHP (utile pour crée un CMS avec création de table automatique)
********************************
- Ajout de la fonction "deleteTable($tableName)"
**********
Elle permet de supprimer (DROP) une table dans la base de donnée, sa supprime le contenu dans la table + la table elle même.
********************************
- Ajout de la fonction "clearTable($tableName)"
**********
Elle permet de supprimer tout le contenu d'une table.
********************************
- Ajout de la fonction "dump($nameDump, $host, $login, $password, $base, $mode = '2')"
**********
Elle permet de crée une sauvegarde de la base de donnée en indiquant le nom du fichier voulut, l'host de la base de donnée, le login etc... le mode '2' permet de récupérer la totalité des bases de donnée etc et le mode '1' simplement la structure des tables.
Utilisation, fonction par fonction

tableExist($PDO, $tableName)
Exemple d'utilisation :
PHP:
<?php
// On inclus la class
require('Database.class.php');

// On déclare la class dans une variable
$PDO = new Database('test', 'root', 'root', 'localhost');

// On demande si la table "users" existe bien dans notre base de donnée
if($PDO->tableExist($PDO, 'users')){
 // Si la table existe, on execute le code voulut ici
} else {
 // Si la table n'existe pas, on exécute le voulut ici
}
addChamp($champName, $champType, $param = null)
Exemple d'utilisation :
PHP:
<?php
// On inclus la class
require('Database.class.php');

// On déclare la class dans une variable
$PDO = new Database('test', 'root', 'root', 'localhost');

// On demande si la table "users" existe bien dans notre base de donnée
if(!$PDO->tableExist($PDO, 'users')){
 // Si la table n'existe pas, on la crée

  // addChamp permet de crée des champs dans une table en indiquant respectivement le nom, le type du champ et les paramètres du champ si il y en a
 // $PDO->addChamp() = on ajoute un champ dans la table
 // 'users_id' = le nom du champ
 // INT(10) NOT NULL etc = le type + les paramètres du champ (qui peux aussi se faire via un autre paramètres)
  $PDO->createTable('users', $PDO->addChamp('users_id', INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY));
}
createTable($tableName, $champ1, $champ2 = null, $champ3 = null, $champ4 = null, $champ5 = null, $champ6 = null, $champ7 = null)
Exemple d'utilisation :
PHP:
<?php
// On inclus la class
require('Database.class.php');

// On déclare la class dans une variable
$PDO = new Database('test', 'root', 'root', 'localhost');

// On demande si la table "users" existe dans notre base de donnée
if(!$PDO->tableExist($PDO, 'users')){
 // Si la table n'existe pas, on la crée

  // createTable permet de crée une table dans la base de donnée
 // 'users' = le nom de table
 // $PDO->addChamp() = on ajoute un champ dans la table
 // INT(10) NOT NULL etc = le type + les paramètres du champ
  $PDO->createTable('users', $PDO->addChamp('users_id', INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY));
}
deleteTable($tableName)
Exemple d'utilisation :
PHP:
<?php
// On inclus la class
require('Database.class.php');

// On déclare la class dans une variable
$PDO = new Database('test', 'root', 'root', 'localhost');

// On demande si la table "users" existe bien dans notre base de donnée
if($PDO->tableExist($PDO, 'users')){
 // Si la table existe, on peut la supprimer
  $PDO->deleteTable('users');
}
clearTable($tableName)
Exemple d'utilisation :
PHP:
<?php
// On inclus la class
require('Database.class.php');

// On déclare la class dans une variable
$PDO = new Database('test', 'root', 'root', 'localhost');

// J'effectue une requêtes pour connaitre le nombre d'users dans la table
$requete_users = $PDO->query("SELECT * FROM users");
$cb_users = $requete_users->rowCount();

// Si il y a plus de 50 utilisateurs dans la table, on vide la table (exemple bidon mais sa vous donne une idée d'utilisation)
if($cb_users > 50){
   $PDO->clearTable('users');
}
dump($nameDump, $host, $login, $password, $base, $mode = '2')
Exemple d'utilisation :
PHP:
<?php
// On inclus la class
require('Database.class.php');

// On déclare la class dans une variable
$PDO = new Database('test', 'root', 'root', 'localhost');

// J'effectue une requêtes pour connaitre le nombre d'users dans la table
$requete_users = $PDO->query("SELECT * FROM users");
$cb_users = $requete_users->rowCount();

// Si il y a plus de 50 utilisateurs dans la table, on effectue une sauvegarde intégrale (mode 2), sinon on sauvegarde que la structure des tables
if($cb_users > 50){
   $PDO->dump('Dump-test-12-12-2016-12h33', 'localhost', 'root', 'root', 'nomDeLaBDD', 2);
} else {
   $PDO->dump('Dump-test-12-12-2016-12h33', 'localhost', 'root', 'root', 'nomDeLaBDD', 1);
}

VirusScan :

VirusScan de l'exemple d'utilisation :
Enjoy !

Optimisation
Fonction "createTable" :
PHP:
public function createTable($tableName, $champ = []){
        $nbChamp = count($champ);

        if($nbChamp === 1){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} ({$champ})");
        } else {
            $champFinal = '';

            foreach ($champ as $value) {
                $champFinal .= ', '.$value;
            }

            $lFinal = strlen($champFinal);
            $champFinal = substr($champFinal, 1, $lFinal);

            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} ({$champFinal})");
        }
    }
Utilisation :
PHP:
/**
 * Si la table 'users' n'existe pas, on la crée
 */
if(!$BDD->tableExist($BDD, 'users')){
    $BDD->createTable('users',
        [$BDD->addChamp('users_id', 'INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY'),
        $BDD->addChamp('users_pseudo', 'VARCHAR(80) NOT NULL')]);
       // Vous pouvez mettre autant de champ que vous le souhaitez grâce à cette optimisation,
       // Avant vous étiez limité 7 champs par table maximum
}

Changelog de la fonction :
Code:
Vous avez juste à remplacer la fonction déjà existante par celle-ci ;)
Vous n'êtes plus limité par le nombre de champ.
Cordialement, Westiix
 

Fichiers joints

  • Database.class.rar
    2 KB · Affichages: 15
  • Class Database V2 - Mise en pratique.rar
    2.9 KB · Affichages: 9
Dernière édition:

Westiix

Fortnite Player || PHP & VB.NET
Premium
Inscription
5 Octobre 2011
Messages
2 219
Réactions
88
Points
12 753
Optimisation de la fonction "createTable" :
PHP:
public function createTable($tableName, $champ = []){
        $nbChamp = count($champ);

        if($nbChamp === 1){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} ({$champ})");
        } else {
            $champFinal = '';

            foreach ($champ as $value) {
                $champFinal .= ', '.$value;
            }

            $lFinal = strlen($champFinal);
            $champFinal = substr($champFinal, 1, $lFinal);

            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} ({$champFinal})");
        }
    }

Vous avez juste à remplacer la fonction déjà existante par celle-ci ;)
Vous n'êtes plus limité par le nombre de champ (qui étais de 7) par table.

Cordialement, Westiix
 
Dernière édition:

Florian.

Premium
Inscription
8 Août 2012
Messages
4 251
Réactions
1 220
Points
14 353
PHP:
public function createTable($tableName, $champ1, $champ2 = null, $champ3 = null, $champ4 = null, $champ5 = null, $champ6 = null, $champ7 = null){

        if(empty($champ2)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1})");
        } elseif(empty($champ3)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2})");
        } elseif(empty($champ4)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3})");
        } elseif(empty($champ5)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3}, {$champ4})");
        } elseif(empty($champ6)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3}, {$champ4}, {$champ5})");
        } elseif(empty($champ7)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3}, {$champ4}, {$champ5}, {$champ6})");
        } elseif(empty($champ8)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3}, {$champ4}, {$champ5}, {$champ6}, {$champ7})");
        } elseif(empty($champ9)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3}, {$champ4}, {$champ5}, {$champ6}, {$champ7}, {$champ8})");
        } elseif(empty($champ10)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3}, {$champ4}, {$champ5}, {$champ6}, {$champ7}, {$champ8}, {$champ9})");
        } else {
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3}, {$champ4}, {$champ5}, {$champ6}, {$champ7}, {$champ8}, {$champ9}, {$champ10})");
        }
    }

Tu peux largement l'optimiser =>

PHP:
    public function createTable($tableName, $array = array()){
        $req = "CREATE TABLE {$tableName}"; //Si y'a aucun paramettre = créé une table vide
        if(count($array) >= 1){ // Si c'est supérieur a 1 donc au moins 1 param dans l'array
            $req = "CREATE TABLE {$tableName} ('"; // On modifie la requête pour faire passer les tables
            foreach ($array as $key => $value) { // On foreach l'array
                if(count($array) == $key+1){ // Si on arrive au derniers on ferme la parenthèse
                    $req .= $value.')")';
                }else{
                $req .= $value.','; // Sinon on met une virgule
                }
            }
        }
        $createTable = $this->getPDO()->query($req); // On exécute
    }
 
Dernière édition:

Enzo34!

★REALITYGAMING★
Premium
Inscription
31 Janvier 2014
Messages
1 417
Réactions
329
Points
17 831
Le truc qui serait bien c'est d'expliquer a quoi ça peux servir dans quel situation :)
 

Westiix

Fortnite Player || PHP & VB.NET
Premium
Inscription
5 Octobre 2011
Messages
2 219
Réactions
88
Points
12 753
PHP:
public function createTable($tableName, $champ1, $champ2 = null, $champ3 = null, $champ4 = null, $champ5 = null, $champ6 = null, $champ7 = null){

        if(empty($champ2)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1})");
        } elseif(empty($champ3)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2})");
        } elseif(empty($champ4)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3})");
        } elseif(empty($champ5)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3}, {$champ4})");
        } elseif(empty($champ6)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3}, {$champ4}, {$champ5})");
        } elseif(empty($champ7)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3}, {$champ4}, {$champ5}, {$champ6})");
        } elseif(empty($champ8)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3}, {$champ4}, {$champ5}, {$champ6}, {$champ7})");
        } elseif(empty($champ9)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3}, {$champ4}, {$champ5}, {$champ6}, {$champ7}, {$champ8})");
        } elseif(empty($champ10)){
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3}, {$champ4}, {$champ5}, {$champ6}, {$champ7}, {$champ8}, {$champ9})");
        } else {
            $createTable = $this->getPDO()->query("CREATE TABLE {$tableName} (
{$champ1}, {$champ2}, {$champ3}, {$champ4}, {$champ5}, {$champ6}, {$champ7}, {$champ8}, {$champ9}, {$champ10})");
        }
    }

Tu peux largement l'optimiser =>

PHP:
    public function createTable($tableName, $array = array()){
        $req = "CREATE TABLE {$tableName}"; //Si y'a aucun paramettre = créé une table vide
        if(count($array) >= 1){ // Si c'est supérieur a 1 donc au moins 1 param dans l'array
            $req = "CREATE TABLE {$tableName} ('"; // On modifie la requête pour faire passer les tables
            foreach ($array as $key => $value) { // On foreach l'array
                if(count($array) == $key+1){ // Si on arrive au derniers on ferme la parenthèse
                    $req .= $value.')")';
                }else{
                $req .= $value.','; // Sinon on met une virgule
                }
            }
        }
        $createTable = $this->getPDO()->query($req); // On exécute
    }
Ta méthode est bonne mais j'avais déjà trouvé comment optimisé (mon poste au dessus du tient) ;)

Le truc qui serait bien c'est d'expliquer a quoi ça peux servir dans quel situation :)
Tu peux l'utilisé dans n'importe quel situation.... j'ai tout détaillé avec des exemples d'utilisations.
 
Haut