Buongiorno a tutti![]()
ho scritto una paginetta in php che salva i dati di un database mysql in un file *.sql e volevo darla alla comunità. La trasformo in open source.
Vabbè dopo stè cavolate torniamo sull'argomento.
Il sistema è molto semplice e non ha assolutamente la presunzione di essere uno sript sofisticato...
In pratica si effettua una connessione al database e viene salvato il contenuto delle sue tabelle, ma non le proprietà dei campi.
Questo perchè? Perchè si presume che voi stiate salvando un database da voi realizzatoe quindi le proprietà già le avete!
(comunque ciò è irrilevante alla fine del backup)
1) In tutto ci occorrono 2 file:
- salva.php
- configurazione.php
2) configurazione.php
inserite questo codice:
Credo che non abbia bisogni di commenti...Codice PHP:<?php
$db_host = "mio_host";
$db_user = "mia_user";
$db_password = "mia_password";
$db_name = "database_che_voglio_salvare";
$conn = mysql_connect($db_host, $db_user, $db_password) or die('Impossibile stabilire una connessione');
mysql_select_db($db_name);
?>
3) salva.php
inserite questo.
Il funzionamento è descritto nei commenti
4) riassumendo il tuttoCodice PHP:<?php
include_once("configurazione.php");
//variabile che contiene i dati del database
$contenuto='';
//visualizzo tutte le tabelle del mio database
$query = "SHOW TABLES FROM ".$db_name;
$result = mysql_query($query) or die("Errore:".mysql_error());
//per ogni tabella scrivo nel file *.sql 2 tipi di query
//la 1° query svuota la tabella che vogliamo ripristinare
//tutte le query successive (1 per ogni record registrato in quella tabella) inseriscono i vecchi valori dei campi estrapolati
while ($row = mysql_fetch_array($result)) {
$contenuto .= "TRUNCATE TABLE `$row[0]`;\n";
$query_record = "select * FROM ". $row[0];
$result_record = mysql_query($query_record) or die("Errore:".mysql_error());
while ($row0 = mysql_fetch_array($result_record)){
//perchè davanti al primo elemento della query non c'è la virgola mentre dopo si
//(Es: ...VALUES ('1', '1', ...
$virgola='';
$contenuto .= "INSERT INTO $row[0] ";
$totk= "";
$r = "0";
foreach($row0 as $k => $valore){
//questo è un modo molto grezzo per dire
//se il nome del campo non è un numero allora inserisci il suo valore
//faccio questo per evitare il doppio inserimento
if ($k!=$r) {
$r = $r+1;
$totk = $totk.$virgola."'".addslashes($valore)."'";
$virgola=", ";
}
}
$contenuto .= "VALUES (".$totk.");\n";
}
} //FINE WHILE
//echo $contenuto;
//salvataggio file//////////////////////////////
//lo script per eseguire il salvataggio del file mi sembra sia di [B]Andr3ea[/B] e lo trovate in molti thread di questo forum quindi se non capite qualcosa cercate...
if (isset ($_POST["ciccio"])) {
if (isset ($_POST["nome_file"])) $filename= addslashes($_POST["nome_file"]).".sql"; else $filename= "salva.sql";
$f = fopen($filename, "w+");
fwrite($f, $contenuto);
fclose($f);
$input_file = $filename;
$download_size = filesize($input_file);
$filename = basename($input_file);
if(ereg("MSIE ([0-9].[0-9]{1,2})", $_SERVER["HTTP_USER_AGENT"])) {
header("Content-Type: application/octetstream");
header("Content-Disposition: inline; filename=$filename");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: public");
header("Content-Length: $download_size");
} else {
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=$filename");
header("Expires: 0");
header("Pragma: no-cache");
header("Content-Length: $download_size");
}
readfile($input_file);
unlink ($input_file);//cancello il file salvato nella cartella agorà
//////////////////FINE SALVATAGGIO FILE//////////////////////////////////////////////////////////////
}else{
?>
<table WIDTH=100% HEIGHT=300>
<TR><TD align="center">
<table width=400 height=100% cellspacing=0 style='border-collapse: collapse' bordercolor=#111111 cellpadding=0>
<tr>
<td width=10></td>
<td height=20 colspan=2 align="center"></td>
<td width=10></td>
</tr>
<tr>
<td colspan=4 background=img/striscia_su.jpg height=2></td>
</tr>
<tr bgcolor='#EEEEE6'>
<td align="center">
<form action="salva.php" method="POST" name="InputForm" id="InputForm">
[b]Nome del file:[/b]<input name="nome_file" type="text">
<input type="submit" name="ciccio" value="Salva" onClick="closeIt('no','si');">
<input type="button" onClick="javascript:history.back()"; value="chiudi">
</form>
<?php
}
?>
</td>
</tr>
</table></td></tr></table>
- ci connettiamo al database (che vogliamo salvare);
- visualizziamo le tabelle in esso contenute;
- per ogni tabella scriviamo una query che provveda a svuotarla (per rieffettuare un ripristino completo) e tante query (quanti sono i record in essa contenuti) di inserimento dei dati salvati
- assegniamo un nome al file ed eseguiamo il salvataggio sul nostro computer
5) tutto qui
più semplice di così...
ciao a tutti![]()

.
e quindi le proprietà già le avete!
Rispondi quotando
.... e altro ancora
li conoscevo anche il tuo


