Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]System archiwizacji bazy danych
Forum PHP.pl > Forum > Przedszkole
ghastblood
Witam mam taki problem jak można zrobić dobry system archiwizacji danych

mam taką konstrukcje bazy danych

-konkurencjie<-Przetrzymuje Nazwy Konkurencji
-zawodnik<-Przetrzymuje Dane Zawodnika
-konkurencje_zawodnikow<-Przetrzymuje id_zawodnika, id_konkurencji
-wyniki<-Przetrzymuje id_zawodnika, id_konkurencji, wynik


i chciał bym po zakończonych zawodach przenieść te dane do archiwum tak żebym mógł w każdej chwili sprawdzić wyniki jakie były na danych zawodach.


tak wiem przez phpmyadmin mogę zrobić import export danych i przetrzymywać backup na dysku

ale może jest możliwość zrobienia folderu i zapisywania tam kopi bazy danych i w każdej chwili przez php mógł bym odczytać daną bazę danych z tego folderu.

np: Loguję się do programy przez php tworzę nową baze danych o danej strukturze i z niej korzystam po zawodach zapisuje baze do folderu i mogę stworzyć nową bazę na podstawie szkieletu lub wczytać starą w celu sprawdzenia wyników z innych zawodów.
czychacz
a nie lepsze byłoby rozwiązanie, w którym przetrzymywałbyś dane wyników nadal w jednej tabeli w bazie, ale z odnośnikiem do nowej tabeli, w której przechowywałbyś dane zawodów? doszłaby ci tylko jedna tabela i nie byłoby problemu z pobieraniem info na temat historii
ghastblood
tak ale po jakimś czasie baza danych była by strasznie duża na jednych zawodach wpisuje do bazy danych około tysiąca rekordów. Opłaca się robić taki system jak po jakimś czasie będę miał w tabeli około 15 tys rekordów
YaQzi
opłaca się smile.gif 15tys rekordów w tabeli to mało. 'Dużo' idzie w miliony więc kolega czychacz dobrze gada, ale jesli juz koniecznie nie chcesz tak robić to możesz np zapisywać każde zawody do pliku txt o unikalnej nazwie, ale będzie to działać znacznie wolniej niż tabela na bazie danych.
ghastblood
oki to zastosuje to rozwiązanie ale jak zrobić numer startowy dla zawodnika na podstawie bazy danych bo za każdym razem na zawodach muszę dodawać dane zawodników więc chciał bym taką bazę przechowywać czyli np na zawodach wpisze 10 osob to przy kolejnych zamiast wpisywać te osoby na listę mógł bym zmienić ich status na aktywny. Ale numery startowe takich zawodników nie były by w ten sposób po kolej tylko np był by nr startowy 10 a następny 100.

Zrobiłem tak jak mi poradziliście jakoś udało mi się to rozwiązać. Ale jak wyświetlać wyniki tzn. potrzebuje tabele dla każdej konkurencji która będzie zawierała nazwisko imie wynik uwagi

mam taki kod
  1. <?php
  2. require_once "core.php";
  3.  
  4.  
  5. //Zapytania MySQL
  6. //$query = dbquery("SELECT * FROM wyniki LEFT JOIN zawodnik ON id_zawodnika = id_zaw WHERE id_zawo = ".$_GET['id_zawodow']."");
  7.  
  8. //while($r = dbarray($query)){
  9. //echo $r['nazwisko_zawodnika'];
  10. //}
  11.  
  12.  
  13. $ilosc_konkurencji = mysql_num_rows(mysql_query("SELECT * FROM konkurencje WHERE status = '1' ")) or die(mysql_error());
  14.  
  15. $sql_wynik = mysql_query('SELECT * FROM wyniki JOIN zawodnik ON id_zaw = id_zawodnika JOIN konkurencje ON id_konk = id_konkurencji') or die(mysql_error());
  16. $sql_wynik1 = mysql_query('SELECT * FROM konkurencje WHERE status= "1"') or die(mysql_error());
  17.  
  18. while($r = mysql_fetch_array($sql_wynik, MYSQL_ASSOC)){
  19. $tab[] = $r;
  20. }
  21.  
  22. while($r1 = mysql_fetch_array($sql_wynik1, MYSQL_ASSOC)){
  23. $konkurencje[] = $r1;
  24. }
  25.  
  26. foreach ($tab as $a => $b) {
  27. $wynik[$a] = $b['wynik'];
  28. $uwagi[$a] = $b['uwagi'];
  29. $uwagi1[$a] = $b['uwagi1'];
  30.  
  31.  
  32. }
  33. array_multisort($wynik, SORT_DESC, $uwagi, SORT_ASC, $uwagi, SORT_DESC, $tab);
  34.  
  35. $i=1;
  36. echo'<div id="main-content">';
  37.  
  38.  
  39. foreach ($konkurencje as $a1) {
  40. for($k=1; $k<=$ilosc_konkurencji; $k++){
  41.  
  42. <div id="main-container">
  43. <div class="main-border">
  44. <div class="main-caption">';
  45.  
  46.  
  47.  
  48. echo $a1['nazwa_konkurencji'];
  49.  
  50.  
  51.  
  52.  
  53. echo '</div>
  54. <div class="main-body">';
  55.  
  56. echo '<table cellpadding="2" border="1" width="100%" bordercolor="#000" rules="all" valign="center">';
  57. echo '<tr>';
  58. echo '<td>L.P</td>';
  59. echo '<td>Nazwisko</td>';
  60. echo '<td>Imie</td>';
  61. echo '<td>Wynik</td>';
  62. echo '<td>Uwagi</td>';
  63. echo '</tr>';
  64.  
  65. foreach ($tab as $a) {
  66. if($a['id_konk'] == $k){
  67. echo '<tr>';
  68. echo '<td>'.$i++.'</td>';
  69. echo '<td>'.$a['nazwisko_zawodnika'].'</td>';
  70. echo '<td>'.$a['imie_zawodnika'].'</td>';
  71. echo '<td>'.$a['wynik'].'</td>';
  72. if($a['uwagi'] > 0){
  73. echo '<td>'.$a['uwagi'].'</td>';
  74. }
  75. if($a['uwagi1'] > 0){
  76. echo '<td>'.$a['uwagi1'].'</td>';
  77.  
  78. }
  79. }
  80.  
  81. }
  82.  
  83. echo '</tr></table>';
  84. echo '</div>';
  85. echo '</div>';
  86. echo '</div>';
  87. }
  88. }
  89.  
  90. echo '</div>';
  91.  
  92.  
  93.  
  94.  
  95. ?>


Ale on tworzy mi tabele ilość konkurencji * ilość konkurencji(dla każdej konkurencji) czyli jak jest np skok do wody i strzał do puszki to wyświetla mi 2 tabele * 1 konkurencja i nazywają się wtedy skok do wody skok do wody i strzał do puszki strzał do puszki
teraz tak pierwsza tabele z tych czterech ma prawidłowe wyniki drugi skok do wody ma wyniki z konkurencji strzał do puszki
pierwszy strzał do puszki ma wyniki skok do wody a drugi strzał do puszki ma prawidłowe wyniki.



Proszę o szybką pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.