Bonjour,
Dans mon application j'ai une partie administration dans lequel je prévoie la possibilité de sauvegarder et de restaurer la base.
Comment me conseillez-vous de m'y prendre?
Peut-être que ça pourrait faire l'objet d'un plugin?
Bonjour,
Dans mon application j'ai une partie administration dans lequel je prévoie la possibilité de sauvegarder et de restaurer la base.
Comment me conseillez-vous de m'y prendre?
Peut-être que ça pourrait faire l'objet d'un plugin?
La procédure de sauvegarde/restauration de base dépend de chaque sgbd.
Par exemple pour mysql, il faut utiliser mysqldump
Mais pour sqlserver, on passe par le client lourd ou avec une requete particulière
Oracle je ne sais pas, postgresql doit avoir un binaire également
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Je veux gérer une base mysql.
Je doit donc créer un module avec la class pour faire la la sauvegarde.
J'ai récupérer une classe simple qui me convient pour l'instant
elle est de szaboolcs
Pour le lancer je fait ceci
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158 <?php class sql_dump{ private $tables = array(); private $options = array( 'MySQL_HOST' => '', 'MySQL_USERNAME' => '', 'MySQL_PASSWORD' => '', 'MySQL_DATABASE' => '', 'CHARSET' => 'UTF8', 'PATH' => '/', 'FTP' => false, 'FTP_HOST' => '', 'FTP_USERNAME' => '', 'FTP_PASSWORD' => '', 'FTP_PATH' => '/' ); private $string = "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\";\n\n"; private $connect; public function __construct($options = array()){ foreach($options as $k => $v){ $this->options[$k] = $v; } $this->connect(); $this->charset(); $this->tables(); $this->create_tables(); $this->columns(); $this->inserts(); $this->toString(); $this->save(); } private function connect(){ $this->connect = new mysqli( $this->options['MySQL_HOST'], $this->options['MySQL_USERNAME'], $this->options['MySQL_PASSWORD'], $this->options['MySQL_DATABASE'] ); if($this->connect->connect_error){ throw new Exception('Connection error: '.$this->connect->connect_error); } } private function charset(){ if(!$this->connect->set_charset($this->options['CHARSET'])){ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->connect->error); } } private function tables(){ if($result = $this->connect->query('SHOW TABLES')){ while($row = $result->fetch_row()){ $this->tables[]['NAME'] = $row[0]; } $result->close(); }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->connect->error); } } private function create_tables(){ foreach($this->tables as $k => $v){ if($row = $this->connect->query("SHOW CREATE TABLE ".$v['NAME'])->fetch_row()){ $this->tables[$k]['CREATE'] = 'DROP TABLE '.$v['NAME'].";\n\n".$row[1]; }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->connect->error); } } } private function columns(){ foreach($this->tables as $k => $v){ if($result = $this->connect->query("SHOW COLUMNS FROM ".$v['NAME'])){ while($row = $result->fetch_row()){ $this->tables[$k]['FIELDS'][] = '`'.$row[0].'`'; } }else{ $result->close(); throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->connect->error); return; } } $result->close(); } private function inserts(){ foreach($this->tables as $k => $v){ if($result = $this->connect->query("SELECT * FROM `".$v['NAME']."`")){ $insert = "INSERT INTO `".$v['NAME']."` (".implode(',', $v['FIELDS']).") VALUES "; $values = array(); while($row = $result->fetch_array()){ $val = array(); foreach($v['FIELDS'] as $f){ $f = str_replace('`', '', $f); $val[] = '\''.$row[$f].'\''; } $values[] = "\n(".implode(",",$val).")"; } $this->tables[$k]['INSERT'] = $insert.implode(',',$values); }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->connect->error); $result->close(); return; } } $result->close(); } private function toString(){ foreach($this->tables as $k => $v){ $this->string .= $v['CREATE'].";\n\n"; $this->string .= $v['INSERT'].";\n\n"; } } private function copyToFtp($file){ $ftpfile = substr($this->options['FTP_PATH'], -1) == '/' ? 'db_backup_'.$date.'.sql' : '/db_backup_'.$date.'.sql'; if($ftp = ftp_connect($this->options['FTP_HOST'])){ if(ftp_login($ftp, $this->options['FTP_USERNAME'], $this->options['FTP_PASSWORD'])){ if(!ftp_put($ftp, $ftpfile, $file, FTP_ASCII)){ throw new Exception('FTP put file error'); } }else{ throw new Exception('FTP login error'); } ftp_close($ftp); }else{ throw new Exception('FTP connection error'); } } private function save(){ $date = date('Y-m-d-H-i-s'); $file = substr($this->options['PATH'], -1) == '/' ? 'db_backup_'.$date.'.sql' : '/db_backup_'.$date.'.sql'; if(@file_put_contents($file, $this->string)){ if($this->options['FTP'] === true){ $this->copyToFtp($file); } }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: File save failed!'); } } public function __destruct(){ $this->connect->close(); } } ?>
Comment faire pour que les infos soit automatiquement les mêmes que celle du conf/connexion.ini.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php require_once('sql_dump.php'); try{ new sql_dump(array( 'MySQL_HOST' => 'localhost', 'MySQL_USERNAME' => 'root', 'MySQL_PASSWORD' => '', 'MySQL_DATABASE' => 'secu02', )); }catch(exception $e){ echo $e->getMessage(); } ?>
Il faut utiliser la methode _root::getConfigVar()
Elle permet de récupérer une variable des fichiers de config
Sous la forme _root::getConfigVar('section.variable')
Par exemple pour une variable
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [db] mysqlExple.username=login
Code : Sélectionner tout - Visualiser dans une fenêtre à part _root::getConfigVar('db.mysqlExple.username')
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Bonjour,
J'ai créer un module gestionBase avec 2 actions save et restore.
Dans la méthode save j'appelle la class sql_dump.
Dois-la copier dans la méthode save ou dois-je la mettre dans le dossier lib/?
Du coup dois-je faire le renseigner dans mon template?
Dans mes class restore et save je dois me connecter à la base
Je doit la construire variable par variable comme vous m'avez informé plus haut?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 // Connect to MySQL server mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error()); // Select database mysql_select_db($mysql_database) or die('Error selecting MySQL database: ' . mysql_error());
ou existe-t-il une fonction de connections?
Pour faire la restore() j'ai besoin d'un select dans la liste les fichiers de sauvegarde qui serons dans un dossier dump. Comment puis-je faire ce formulaire?
Si vous avez déjà une classe modèle connecté à votre base de donnée, utilisez la methode getSgbd
Code : Sélectionner tout - Visualiser dans une fenêtre à part $oPdo=model_article::getInstance()->getSgbd()->getPdo()
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Dois-je comprendre que je dois créer un fichier "model_gestionBase.php" avec la class dumpsql dedans?
que dois-je modifier dans la class poru qu'elle soit compatible?
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158 <?php class sql_dump{ private $tables = array(); private $options = array( 'MySQL_HOST' => '', 'MySQL_USERNAME' => '', 'MySQL_PASSWORD' => '', 'MySQL_DATABASE' => '', 'CHARSET' => 'UTF8', 'PATH' => '/', 'FTP' => false, 'FTP_HOST' => '', 'FTP_USERNAME' => '', 'FTP_PASSWORD' => '', 'FTP_PATH' => '/' ); private $string = "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\";\n\n"; private $connect; public function __construct($options = array()){ foreach($options as $k => $v){ $this->options[$k] = $v; } $this->connect(); $this->charset(); $this->tables(); $this->create_tables(); $this->columns(); $this->inserts(); $this->toString(); $this->save(); } private function connect(){ $this->connect = new mysqli( $this->options['MySQL_HOST'], $this->options['MySQL_USERNAME'], $this->options['MySQL_PASSWORD'], $this->options['MySQL_DATABASE'] ); if($this->connect->connect_error){ throw new Exception('Connection error: '.$this->connect->connect_error); } } private function charset(){ if(!$this->connect->set_charset($this->options['CHARSET'])){ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->connect->error); } } private function tables(){ if($result = $this->connect->query('SHOW TABLES')){ while($row = $result->fetch_row()){ $this->tables[]['NAME'] = $row[0]; } $result->close(); }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->connect->error); } } private function create_tables(){ foreach($this->tables as $k => $v){ if($row = $this->connect->query("SHOW CREATE TABLE ".$v['NAME'])->fetch_row()){ $this->tables[$k]['CREATE'] = 'DROP TABLE '.$v['NAME'].";\n\n".$row[1]; }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->connect->error); } } } private function columns(){ foreach($this->tables as $k => $v){ if($result = $this->connect->query("SHOW COLUMNS FROM ".$v['NAME'])){ while($row = $result->fetch_row()){ $this->tables[$k]['FIELDS'][] = '`'.$row[0].'`'; } }else{ $result->close(); throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->connect->error); return; } } $result->close(); } private function inserts(){ foreach($this->tables as $k => $v){ if($result = $this->connect->query("SELECT * FROM `".$v['NAME']."`")){ $insert = "INSERT INTO `".$v['NAME']."` (".implode(',', $v['FIELDS']).") VALUES "; $values = array(); while($row = $result->fetch_array()){ $val = array(); foreach($v['FIELDS'] as $f){ $f = str_replace('`', '', $f); $val[] = '\''.$row[$f].'\''; } $values[] = "\n(".implode(",",$val).")"; } $this->tables[$k]['INSERT'] = $insert.implode(',',$values); }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->connect->error); $result->close(); return; } } $result->close(); } private function toString(){ foreach($this->tables as $k => $v){ $this->string .= $v['CREATE'].";\n\n"; $this->string .= $v['INSERT'].";\n\n"; } } private function copyToFtp($file){ $ftpfile = substr($this->options['FTP_PATH'], -1) == '/' ? 'db_backup_'.$date.'.sql' : '/db_backup_'.$date.'.sql'; if($ftp = ftp_connect($this->options['FTP_HOST'])){ if(ftp_login($ftp, $this->options['FTP_USERNAME'], $this->options['FTP_PASSWORD'])){ if(!ftp_put($ftp, $ftpfile, $file, FTP_ASCII)){ throw new Exception('FTP put file error'); } }else{ throw new Exception('FTP login error'); } ftp_close($ftp); }else{ throw new Exception('FTP connection error'); } } private function save(){ $date = date('Y-m-d-H-i-s'); $file = substr($this->options['PATH'], -1) == '/' ? 'db_backup_'.$date.'.sql' : '/db_backup_'.$date.'.sql'; if(@file_put_contents($file, $this->string)){ if($this->options['FTP'] === true){ $this->copyToFtp($file); } }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: File save failed!'); } } public function __destruct(){ $this->connect->close(); } } ?>
A la base, il faut juste ajouter ceci:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <?php class model_sqldump extends abstract_model{ //profil de connexion protected $sConfig='mysqlExple';
Mais dans votre code vous faites des requetes en execution et des requetes de recupération de données
Pour les executions ce serait
Code php : Sélectionner tout - Visualiser dans une fenêtre à part $this->getSgbd()->getPdo->execute('ma reuqte')
Pour celle de récupération
Code php : Sélectionner tout - Visualiser dans une fenêtre à part $tRow=$this->findMany('SELECT mon champ from maTable')
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
je met
Code : Sélectionner tout - Visualiser dans une fenêtre à part $result = $this->connect->query('SHOW TABLES')
et pour la méthode charset()?
Code : Sélectionner tout - Visualiser dans une fenêtre à part $result = $this->getSgbd()->getPdo->execute('SHOW TABLES')
methode destruct()
Code : Sélectionner tout - Visualiser dans une fenêtre à part $this->connect->set_charset($this->options['CHARSET'])
et pour ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part $this->connect->close();
Code : Sélectionner tout - Visualiser dans une fenêtre à part throw new Exception('Connection error: '.$this->connect->connect_error);
La couche modèle s'appuie sur pdo
http://php.net/manual/fr/book.pdo.php
ouidonc à la place de
je met
Code : Sélectionner tout - Visualiser dans une fenêtre à part $result = $this->connect->query('SHOW TABLES')
Code : Sélectionner tout - Visualiser dans une fenêtre à part $result = $this->getSgbd()->getPdo->execute('SHOW TABLES')
A priori non, changez simplement le charset dans le fichier de connexionet pour la méthode charset()?
Code : Sélectionner tout - Visualiser dans une fenêtre à part $this->connect->set_charset($this->options['CHARSET'])
$db = new PDO('dblib:host=your_hostname;dbname=your_db;charset=UTF-8', $user, $pass);
Code : Sélectionner tout - Visualiser dans une fenêtre à part pdoMysql.dsn="mysql:dbname=blog;host=localhost";charset=UTF-8methode destruct()
et pour ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part $this->connect->close();
Code : Sélectionner tout - Visualiser dans une fenêtre à part throw new Exception('Connection error: '.$this->connect->connect_error);
Code : Sélectionner tout - Visualiser dans une fenêtre à part throw new Exception('Connection error: '.$this->getSgbd()->getPdo()->errorInfo())
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
je comprend pas votre citation. C'est un exemple c'est ça? ou dois-je modifier le fichier connexion.php avec.
Actuellement mon fichier connexion est
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9;<?php die()?> [db] pdoMysql.dsn="mysql:dbname=**;host=**";charset=UTF-8 pdoMysql.sgbd=pdo_mysql pdoMysql.hostname=** pdoMysql.database=** pdoMysql.username=** pdoMysql.password=**
Dans mon model du coup je vire la methode charset()?
et pour
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 private function charset(){ if(!$this->connect->set_charset($this->options['CHARSET'])){ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->getSgbd()->getPdo()->errorInfo()); } }
Je met ça ou c'est pas la peine et je l'enlève?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public function __destruct(){ $this->connect->close();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public function __destruct(){ $this->getSgbd()->getPdo->close();
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Merci,
Pour faire une sauvegarde j’appelais la classe j'avais 2 fichiers
la classe et le fichier d'appel.
La classe je l'ai mis dans model/model gestionBase.php
Mon fichier qui appelais la classe j'avais
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145 <?php class model_sqldump extends abstract_model{ //profil de connexion protected $sConfig='pdoMysql'; private $tables = array(); private $options = array( 'MySQL_HOST' => '', 'MySQL_USERNAME' => '', 'MySQL_PASSWORD' => '', 'MySQL_DATABASE' => '', 'CHARSET' => 'UTF8', 'PATH' => '/', 'FTP' => false, 'FTP_HOST' => '', 'FTP_USERNAME' => '', 'FTP_PASSWORD' => '', 'FTP_PATH' => '/' ); private $string = "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\";\n\n"; private $connect; public static function getInstance(){ return self::_getInstance(__CLASS__); } public function __construct($options = array()){ foreach($options as $k => $v){ $this->options[$k] = $v; } $this->connect(); $this->charset(); $this->tables(); $this->create_tables(); $this->columns(); $this->inserts(); $this->toString(); $this->save(); } private function tables(){ if($result = $this->getSgbd()->getPdo->execute('SHOW TABLES')){ while($row = $result->fetch_row()){ $this->tables[]['NAME'] = $row[0]; } $result->close(); }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->getSgbd()->getPdo()->errorInfo()); } } private function create_tables(){ foreach($this->tables as $k => $v){ if($row = $this->getSgbd()->getPdo->execute("SHOW CREATE TABLE ".$v['NAME'])->fetch_row()){ $this->tables[$k]['CREATE'] = 'DROP TABLE '.$v['NAME'].";\n\n".$row[1]; }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->getSgbd()->getPdo()->errorInfo()); } } } private function columns(){ foreach($this->tables as $k => $v){ if($result = $this->getSgbd()->getPdo->execute("SHOW COLUMNS FROM ".$v['NAME'])){ while($row = $result->fetch_row()){ $this->tables[$k]['FIELDS'][] = '`'.$row[0].'`'; } }else{ $result->close(); throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->getSgbd()->getPdo()->errorInfo()); return; } } $result->close(); } private function inserts(){ foreach($this->tables as $k => $v){ if($result =$this->findMany("SELECT * FROM `".$v['NAME']."`")){ $insert = "INSERT INTO `".$v['NAME']."` (".implode(',', $v['FIELDS']).") VALUES "; $values = array(); while($row = $result->fetch_array()){ $val = array(); foreach($v['FIELDS'] as $f){ $f = str_replace('`', '', $f); $val[] = '\''.$row[$f].'\''; } $values[] = "\n(".implode(",",$val).")"; } $this->tables[$k]['INSERT'] = $insert.implode(',',$values); }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->getSgbd()->getPdo()->errorInfo()); $result->close(); return; } } $result->close(); } private function toString(){ foreach($this->tables as $k => $v){ $this->string .= $v['CREATE'].";\n\n"; $this->string .= $v['INSERT'].";\n\n"; } } private function copyToFtp($file){ $ftpfile = substr($this->options['FTP_PATH'], -1) == '/' ? 'db_backup_'.$date.'.sql' : '/db_backup_'.$date.'.sql'; if($ftp = ftp_connect($this->options['FTP_HOST'])){ if(ftp_login($ftp, $this->options['FTP_USERNAME'], $this->options['FTP_PASSWORD'])){ if(!ftp_put($ftp, $ftpfile, $file, FTP_ASCII)){ throw new Exception('FTP put file error'); } }else{ throw new Exception('FTP login error'); } ftp_close($ftp); }else{ throw new Exception('FTP connection error'); } } private function save(){ $date = date('Y-m-d-H-i-s'); $file = substr($this->options['PATH'], -1) == '/' ? 'db_backup_'.$date.'.sql' : '/db_backup_'.$date.'.sql'; if(@file_put_contents($file, $this->string)){ if($this->options['FTP'] === true){ $this->copyToFtp($file); } }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: File save failed!'); } } }
Comment dois-je l’écrire dans le module gestionBase/main.php méthode sauve()
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 <?php require_once('sql_dump.php'); try{ new sql_dump(array( 'MySQL_HOST' => 'localhost', 'MySQL_USERNAME' => '_root::getConfigVar('db.mysqlExple.username')', 'MySQL_PASSWORD' => '', 'MySQL_DATABASE' => 'secu02', )); echo "sauvegarde faite"; }catch(exception $e){ echo $e->getMessage(); } ?>
J'ai des milliers de tests sans y parvenir.
mon point de départ est
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public function _sauve(){ $oView=new _view('gestionBase::sauve'); $this->oLayout->add('main',$oView); }
Votre classe modèle s appelle model_sqldump.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $oSqldump=new model_sqldump; $oSqldump->votreMethode();
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Bonjour,
donc ma méthode sauve serait ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public function _sauve(){ $oSqldump=new model_sqldump; $oSqldump->sql_dump(); $oView=new _view('gestionBase::sauve'); $this->oLayout->add('main',$oView); }
oui
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
J'ai une erreur et je comprend pas comment la resoudre.
le fichier model_sqldump.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Undefined property: sgbd_pdo_mysql::$getPdo #0 /opt/lampp/htdocs/tests/mkframework/data/genere/secu06/model/model_sqldump.php(48): exception_error_handler(8, 'Undefined prope...', '/opt/lampp/htdo...', 48, Array) #1 /opt/lampp/htdocs/tests/mkframework/data/genere/secu06/model/model_sqldump.php(36): model_sqldump->tables()
Le problème est à la fonction tables() ligne 46
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143 <?php class model_sqldump extends abstract_model{ //profil de connexion protected $sConfig='pdoMysql'; private $tables = array(); private $options = array( 'MySQL_HOST' => '', 'MySQL_USERNAME' => '', 'MySQL_PASSWORD' => '', 'MySQL_DATABASE' => '', 'CHARSET' => 'UTF8', 'PATH' => '/', 'FTP' => false, 'FTP_HOST' => '', 'FTP_USERNAME' => '', 'FTP_PASSWORD' => '', 'FTP_PATH' => '/' ); private $string = "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\";\n\n"; private $connect; public static function getInstance(){ return self::_getInstance(__CLASS__); } public function __construct($options = array()){ foreach($options as $k => $v){ $this->options[$k] = $v; } $this->tables(); $this->create_tables(); $this->columns(); $this->inserts(); $this->toString(); $this->save(); } private function tables(){ if($result = $this->getSgbd()->getPdo->execute('SHOW TABLES')){ while($row = $result->fetch_row()){ $this->tables[]['NAME'] = $row[0]; } $result->close(); }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->getSgbd()->getPdo()->errorInfo()); } } private function create_tables(){ foreach($this->tables as $k => $v){ if($row = $this->getSgbd()->getPdo->execute("SHOW CREATE TABLE ".$v['NAME'])->fetch_row()){ $this->tables[$k]['CREATE'] = 'DROP TABLE '.$v['NAME'].";\n\n".$row[1]; }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->getSgbd()->getPdo()->errorInfo()); } } } private function columns(){ foreach($this->tables as $k => $v){ if($result = $this->getSgbd()->getPdo->execute("SHOW COLUMNS FROM ".$v['NAME'])){ while($row = $result->fetch_row()){ $this->tables[$k]['FIELDS'][] = '`'.$row[0].'`'; } }else{ $result->close(); throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->getSgbd()->getPdo()->errorInfo()); return; } } $result->close(); } private function inserts(){ foreach($this->tables as $k => $v){ if($result =$this->findMany("SELECT * FROM `".$v['NAME']."`")){ $insert = "INSERT INTO `".$v['NAME']."` (".implode(',', $v['FIELDS']).") VALUES "; $values = array(); while($row = $result->fetch_array()){ $val = array(); foreach($v['FIELDS'] as $f){ $f = str_replace('`', '', $f); $val[] = '\''.$row[$f].'\''; } $values[] = "\n(".implode(",",$val).")"; } $this->tables[$k]['INSERT'] = $insert.implode(',',$values); }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: '.$this->getSgbd()->getPdo()->errorInfo()); $result->close(); return; } } $result->close(); } private function toString(){ foreach($this->tables as $k => $v){ $this->string .= $v['CREATE'].";\n\n"; $this->string .= $v['INSERT'].";\n\n"; } } private function copyToFtp($file){ $ftpfile = substr($this->options['FTP_PATH'], -1) == '/' ? 'db_backup_'.$date.'.sql' : '/db_backup_'.$date.'.sql'; if($ftp = ftp_connect($this->options['FTP_HOST'])){ if(ftp_login($ftp, $this->options['FTP_USERNAME'], $this->options['FTP_PASSWORD'])){ if(!ftp_put($ftp, $ftpfile, $file, FTP_ASCII)){ throw new Exception('FTP put file error'); } }else{ throw new Exception('FTP login error'); } ftp_close($ftp); }else{ throw new Exception('FTP connection error'); } } private function save(){ $date = date('Y-m-d-H-i-s'); $file = substr($this->options['PATH'], -1) == '/' ? 'db_backup_'.$date.'.sql' : '/db_backup_'.$date.'.sql'; if(@file_put_contents($file, $this->string)){ if($this->options['FTP'] === true){ $this->copyToFtp($file); } }else{ throw new Exception('Error in the next function: '.__FUNCTION__.'. Error message: File save failed!'); } } }
Il manque les parenthèse, c'est une function:
Code : Sélectionner tout - Visualiser dans une fenêtre à part getPdo()
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Bonsoir,
Là j'ai besoin d'aide je vois ce que je dois mettre. : Cry:
Est-ce les paramètres: connexions, base, utilisateur, PW?
Mais il sont renseigné dans connexion.ini.php.
Je parlais de la ligne 46
Il faut mettre les parenthèses à getPdo()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 private function tables(){ if($result = $this->getSgbd()->getPdo->execute('SHOW TABLES')){
ainsi
idem pour
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 private function tables(){ if($result = $this->getSgbd()->getPdo()->execute('SHOW TABLES')){
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 private function create_tables(){ foreach($this->tables as $k => $v){ if($row = $this->getSgbd()->getPdo()->execute("SHOW CREATE TABLE ".$v['NAME'])->fetch_row()){
remplacez tous lespar
Code : Sélectionner tout - Visualiser dans une fenêtre à part getSgbd()->getPdo
Code : Sélectionner tout - Visualiser dans une fenêtre à part getSgbd()->getPdo()
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager