source: pmb4.2/trunk/fuentes/pmb/admin/misc/backup.inc.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 3.6 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: backup.inc.php,v 1.12 2015-04-03 11:16:24 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8
9global $msg;
10
11print "<table border=\"0\">";
12print "<tr><td class=\"formtitle\">";
13print "$msg[529]";
14print "</td></tr><td>";
15
16// initialisation
17
18if(!empty($file)) {
19        @set_time_limit(0);
20        $dump_buffer = '';
21        // définition du retour chariot
22        $crlf = "\n";
23        $db = "bibli";
24        $today = date("d/m/Y H:i:s");
25        $separator = "# ------------------------------------$crlf";
26       
27        // construction du dump
28        $tables = pmb_mysql_list_tables($db);
29        $num_tables = @pmb_mysql_num_rows($tables);
30       
31        // en-tête
32        $dump_buffer .= "$separator# pmb MySQL-Dump$crlf";
33        $dump_buffer .= "# $today$crlf";
34        $dump_buffer .= "# backup base \"$db\"$crlf";
35        $dump_buffer .= $separator.$crlf;
36       
37        $i = 0;
38        while($i < pmb_mysql_num_rows($tables)) {
39                $table[$i] = pmb_mysql_tablename($tables, $i);
40                $i++;
41        }
42       
43        while(list($cle, $valeur)=each($table)) {
44       
45                $requete = "SHOW CREATE TABLE $valeur";
46                $result = pmb_mysql_query($requete, $dbh);
47                $create = pmb_mysql_fetch_row($result);
48       
49                // écriture de la méthode de création
50                $dump_buffer .= "$crlf$separator# structure de la table $valeur$crlf$separator$crlf";
51                $dump_buffer .= "DROP TABLE IF EXISTS ".$valeur.";$crlf";
52                $dump_buffer .= $create[1].";$crlf";
53                $dump_buffer .= "$crlf$separator# contenu de la table $valeur$crlf$separator$crlf";
54       
55                // écriture des données
56            $requete = "SELECT * FROM $valeur";
57                $result = pmb_mysql_query($requete, $dbh);
58                $nbr_lignes = pmb_mysql_num_rows($result);
59       
60                $field_set = "";
61                $field = "";
62       
63                for($i = 0; $i < $nbr_lignes; $i++) {
64                        $row = pmb_mysql_fetch_row($result);
65                        // on regarde si le champ est un entier
66                        for ($j=0; $j < pmb_mysql_num_fields($result); $j++) {
67                                $field_set[$j] = pmb_mysql_field_name($result, $j);
68                                $type = pmb_mysql_field_type($result, $j);
69                                if ($type=='tinyint'||$type=='smallint'||$type=='mediumint'||$type=='int'||$type=='bigint'||$type=='timestamp') {
70                                        $field[$j] = $row[$j];
71                                } else {
72                                        $field[$j] = "'".addslashes($row[$j])."'";
73                                }
74                        }
75                $fields = implode(', ', $field_set);
76                $content = implode(', ', $field);
77                        $dump_buffer .= "INSERT INTO ".$valeur." ($fields) VALUES ($content);$crlf";
78       
79                }
80       
81        }
82       
83        $file = "./tables/".$file.".sql";
84       
85        @set_time_limit(0); // timeout illimité
86       
87        // écriture du fichier
88        $fp = @fopen($file, 'wb');
89        if($fp) {
90                $result = @fwrite($fp, $dump_buffer);
91                if($result) {
92                        $size = number_format($result/1024,2);
93                        print "<strong><font color=#ff0000>$msg[528]</font></strong><br />$file&nbsp;: $size Ko écrits";
94                } else {
95                        user_error_message(2);
96                }
97                fclose($fp);
98        } else {
99                user_error_message(2);
100        }
101
102} else {
103
104        ?>
105        <script type="text/javascript">
106        function test_form(form)
107        {
108                if(form.file.value.length == 0)
109                {
110                        alert("<?php echo $msg[530]; ?>");
111                        return false;
112                }
113                return true;
114        }
115       
116        </script>
117        <?php
118        $backup_form = "
119                <form class='form-$current_module' name='backup_form' method='post' action='./admin.php?categ=misc&sub=backup'>
120                        <table border='0'>
121                        <tr>
122                                <td>
123                                        <small>$msg[531]</small>
124                                        <input type='text' size='24' name='file'><br />
125                                </td>
126                        </tr>
127                        <tr>
128                                <td align='right'>
129                                        <input type='button' class='bouton' value='$msg[76]' onClick='document.location=\'./admin.php\''>
130                                        <input type='submit' class='bouton' value='$msg[77]' onClick='return test_form(this.form)'>
131                                </td>
132                        </tr>
133                        </table>
134                </form>
135        ";
136        print $backup_form;
137}
138?>
Note: See TracBrowser for help on using the repository browser.