Bonjour à tous,
Je viens vous voir pour avoir votre avis sur 2 classes que j'ai codées (je patauge un peu dans la POO pour l'instant à vrai dire).
Ma première classe est une classe SQL et la deuxième une classe Membre (elles ne sont pas complète pour l'instant mais fonctionnent correctement).
Voici mon fichier index.php :
Voici ma classe SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <?php /* Nom :: index.php */ function __autoload($class_name) { require_once './class/'.$class_name.'.class.php'; } session_start(); $sql = new SQL(); $membre = new Membre($sql); if ( $membre->etat() ) { echo $membre->pseudo; // simple exemple } else { // redirection vers une page de connection } ?>
Et voici enfin ma classe Membre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 <?php class SQL // Classe SQL permettant de simplifier la connection à une BDD et toutes les opérations qui s'y rapportent { //-- Paramètres de connection à MySQL private $user = 'xxxx'; private $password = 'xxxxx'; private $database = 'xxxx'; private $server = 'xxxx.xxxx.xxxxx'; private $connection_id; // Vaut le link de la connection au serveur MySQL private $connecte = FALSE; // Etat de la connection private $message_erreur; // Message d'erreur à afficher en cas de problème private $resultat=array(); // Contient les résultats de toutes les requêtes private $erreur_base = 'Une erreur est survenue lors de l\'exécution de cette page. Si après le problème persiste, veuillez contacter le webmaster de ce site.'; // Message de base pour une erreur private $mysql_error_etat = TRUE; // Affiche ou non en plus du message d'erreur le mysql_error() private $mysql_error; // Contient le mysql_error() public $reussi = FALSE; // Résultat d'une fonction retournant un boléen function __construct() // Fonction __construct() permettant de se connecter à la BDD { $this->connection_id = @mysql_connect($this->server,$this->user,$this->password); // On définit $this->connection_id comme link de la connection if ( $this->connection_id ) // Si la connection réussi { if ( @mysql_select_db($this->database,$this->connection_id) ) // Si la sélection de la BDD réussi { $this->connecte = TRUE; $this->reussi = TRUE; } else // Sinon { $this->connecte = FALSE; $this->reussi = FALSE; $this->message_erreur = 'La base sélectionnée est inaccessible'; $this->erreur(); // On affiche une erreur } } else // Sinon { $this->connecte = FALSE; $this->reussi = FALSE; $this->message_erreur = 'Impossible de se connecter au serveur MySQL'; $this->erreur(); // On affiche une erreur } return $this->reussi; // On retourne TRUE ou FALSE } public function erreur() // Fonction permettant l'affichage d'une erreur (l'avantage étant de pouvoir styliser celle-ci plus facilement) { if ( $this->mysql_error_etat ) // Si on décide d'afficher mysql_error() { $fin_erreur = '<br /><br /><b>Erreur MySQL</b> : '.$this->mysql_error; } echo $this->message_erreur.$fin_erreur; // On affiche le message d'erreur } public function requete($requete,$i) // Fonction permettant d'exécuter une requête (il faut passer $i (un numéro) en paramètre) { if ( $this->connecte == TRUE ) // Si on est connecté à la BDD { $this->resultat[$i] = @mysql_query($requete,$this->connection_id); // On exécute la requête que l'on place dans le tableau $this->resultat pour pouvoir la récupérer plus tard if ( !$this->resultat[$i] ) // Si la requête échoue { $this->reussi = FALSE; $this->message_erreur = $this->erreur_base; $this->mysql_error = mysql_error($this->connection_id); // On place le mysql_error() correspondant dans $this->mysql_error $this->erreur(); // On retourne une erreur } else // Sinon { $this->reussi = TRUE; } return $this->reussi; // On retourne TRUE ou FALSE } } public function fetch($i) // Fonction permettant d'organiser les données obtenues par un SELECT dans un array associatif { if ( $this->resultat[$i] ) // Si on trouve un résultat d'une requête correspondant à la clé $i dans le tableau $this->resultat { return @mysql_fetch_assoc($this->resultat[$i]); // On retourne le array associatif correspondant } } public function nbre_res($i) // Fonction permettant de retourner le nombre de lignes obtenues par un SELECT { if ( $this->resultat[$i] ) // Si on trouve un résultat d'une requête correspondant à la clé $i dans le tableau $this->resultat { return @mysql_num_rows($this->resultat[$i]); // On retourne le nombre de lignes correspondant } } } ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126 <?php class Membre // Classe Membre { public $id; // Id du membre public $pseudo; // Pseudo du membre public $email; // Email du membre public $niveau; // Niveau du membre public $etat = FALSE; // Etat (connecté ou non) du membre private $informations=array(); // Tableau de ses informations private $sql; // Récupère l'objet sql function __construct($sql) // Fonction __construct() s'exécutant à chaquel nouvel appel à la classe Membre (new Membre()) { $this->sql = $sql; // Récupère l'objet sql if ( isset($_SESSION['id']) ) // Si le membre est déjà connecté { $sql = $this->sql->requete("SELECT * FROM membres WHERE id='".$_SESSION['id']."'",1); // On exécute une requête (classe SQL) permettant de récupérer les infos du membre $this->informations = $this->sql->fetch(1); // On récupère ses informations $this->id = $this->informations['id']; // On update la variable id $this->pseudo = $this->informations['pseudo']; // ... $this->email = $this->informations['email']; // ... $this->niveau = $this->informations['niveau']; // ... $this->etat = TRUE; // Le membre est connecté } else // Sinon { $this->etat = FALSE; // Le membre n'est pas connecté } } public function etat() // Fonction permettant de récupérer l'état d'un membre (inutile pour le moment puisque $this->etat est publique) { return $this->etat; } private function update_infos() // Fonction permettant d'update seulement depuis l'intérieur de la classe les infos du membre { $sql = $this->sql->requete("SELECT * FROM membres WHERE id = '".$this->id."'",1); // On sélectionne tous le membre ayant pour pseudo $pseudo et mdp hashé en sha1 $motdepasse $this->informations = $this->sql->fetch(1); // On récupère ses informations $this->id = $this->informations['id']; // On update la variable id $this->pseudo = $this->informations['pseudo']; // ... $this->email = $this->informations['email']; // ... $this->niveau = $this->informations['niveau']; // ... $this->etat = TRUE; // Le membre est connecté } public function connection($pseudo,$motdepasse) // Fonction permettant de connecter un membre { $sql = $this->sql->requete("SELECT * FROM membres WHERE pseudo = '".$pseudo."' && motdepasse = '".sha1($motdepasse)."'",1); // On sélectionne tous le membre ayant pour pseudo $pseudo et mdp hashé en sha1 $motdepasse $reussi = $this->sql->nbre_res(1); if ( $reussi == 1 ) // Si il y a un membre correspondant à ces informations { $this->informations = $this->sql->fetch(1); // On récupère ses informations $this->id = $this->informations['id']; // On update la variable id $this->pseudo = $this->informations['pseudo']; // ... $this->email = $this->informations['email']; // ... $this->niveau = $this->informations['niveau']; // ... $this->etat = TRUE; // Le membre est connecté $_SESSION['id'] = $this->id; } return $this->etat; // On retourne TRUE ou FALSE } public function inscription($pseudo,$motdepasse,$email) // Fonction permettant l'inscription d'un membre { $sql = $this->sql->requete("INSERT INTO membres (id,pseudo,motdepasse,email) VALUES ('','".$pseudo."','".sha1($motdepasse)."','".$email."')",1); // On insère ses informations dans la BDD if ( $sql ) // Si tout s'est bien passé { return TRUE; // On retourne TRUE } else { return FALSE; // On retourne FALSE } } public function modification($modifications,$id) // Fonction permettant la modification des informations d'un membre à partir d'un array de la sorte : array('cle'=>'valeur','...'); { $requete = 'UPDATE TABLE membres SET '; // Début de la requête $c=0; foreach($modifications as $cle=>$valeur) // On décompose l'array { $c++; $requete .= ( $c == 1 ) ? $cle.' = '.$valeur : ', '. $cle.' = '.$valeur; // Si c'est le premier passage on ne met pas de virgule devant, sinon oui } $requete .= ' WHERE id="'.$id.'"'; // Fin de la requête $sql = $this->sql->requete($requete); if ( $sql ) // Si tout s'est bien passé { foreach($modifications as $cle=>$valeur) // On modifie les informations du membre dans la classe { $this->$cle = $valeur; $this->informations[$cle] = $valeur; } return TRUE; } else { return FALSE; } } public function deconnection() // Fonction permettant la déconnection du membre { unset($_SESSION); unset($this->informations); unset($this->pseudo); unset($this->email); unset($this->id); unset($this->niveau); session_destroy(); $this->etat = FALSE; } } ?>
Si vous souhaitez plus d'informations ou si j'ai oublié quelque chose, n'hésitez pas. J'aimerai avoir votre avis car comme ce sont des codes d'essai j'aimerai prendre des bonnes habitudes dès le début.
Merci à vous !
Partager