Ho un problema per quanto riguarda la perdita parziale dei dati del DB di un mio amico, in pratica lui aveva effettuato un backup tramite phpbb, che purtroppo a quanto pare non è andato a buon fine nella fase di creazione del file .sql, nonostante non si sia presententato alcun tipo di errore. Ha usato quel file per ripristinare i dati sul forum in seguito a un errore dovuto ad un aggiornamento che stava facendo ed
ora ci ritroviamo a dover "sistemare" il suo DB con quei pochi dati che sono rimasti salvi.. i problemi che riscontra, sono:
- Mancanza del primo post su alcuni topic
- Alcuni post andati persi (sopprattutto quelli più recenti)
- Pagine dei topics che non coincidono col numero di post rimasti per quel topic
Rovistando fra i suoi files, ho trovato altri file di backup sql, probabilmente creati anni fa dal vecchio Admin del forum..ora la mia idea è quella di usare tutti questi file di backup per salvare più post possibili, poichè diciamo tutte le altre tabelle sono salve..
Ho fatto delle prove e avevo pensato che per risolvere la questione di primi post, potevo creare una pagina in php, che mi ricreasse automaticamente il primo post, dove manca, mandando un messaggio di default per tutti, dove viene segnalato l'errore e si avvisa agli utenti che a causa di una perdita di dati, quel post non è più disponibile e quindi reinvitarli a riscriverlo...
con questo codice invece ho messo a confronto due database provati in locale .. in pratica ho preso l'ultimo backup e uno precedente che avevo trovato tra i suoi files confrontando le tabelle phpbb_posts e vedendo quanti post riuscirei a salvare:
Codice: Seleziona tutto
$db = @mysql_connect ("localhost","root","") or die("impossibile leggere db errore".mysql_error());
mysql_select_db ("post31112011",$db);
$result = mysql_query ("SELECT * FROM phpbb_posts",$db);
while($records = mysql_fetch_array($result))
{
$array_posts_id[]=$records['post_id'];
}
#print_r($array_posts_id);
mysql_close ($db);
$dba = @mysql_connect ("localhost","root","") or die("impossibile leggere db errore".mysql_error());
mysql_select_db ("prova",$dba);
$post_trovati=0;
$post_non_trovati=0;
for($a=0;$a<count($array_posts_id);$a++)
{
$query = mysql_query("SELECT * FROM phpbb_posts WHERE post_id = ".$array_posts_id[$a]);
if(mysql_num_rows($query)>0)
{
$post_trovati++;
}
else
{
$post_non_trovati++;
}
}
echo "Ho trovato ".$post_trovati." posts già presenti<br>";
echo "Ho trovato ".$post_non_trovati." posts non presenti";
le idee per sistemare al meglio, credo di averle.. ora devo solo metterle in pratica... m'interesserebbe sapere se magari esiste qualche script che faccia già tutto quello di cui ho bisogno, ci farebbe sicuramente risparmiare parecchio tempo, in alternativa, avrei bisogno di altre idee... voi che dite??