Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zmienne php a symbole wieloznaczne w zapytaniu sql
Forum PHP.pl > Forum > Bazy danych > MySQL
DK.log
Witam.

Z góry proszę o wyrozumiałość bo PHP i SQL zgłębiam aż o 3 dni tongue.gif

Mam następującą bazę:
  1. CREATE TABLE tematy (
  2. id_temat INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  3. id_przedmiot INTEGER UNSIGNED NULL,
  4. id_wykladowca INTEGER UNSIGNED NULL,
  5. id_wydzial INTEGER UNSIGNED NULL,
  6. temat VARCHAR(500) NULL,
  7. ilosc_wolnych_miejsc INTEGER UNSIGNED NULL,
  8. na_ile_osob INTEGER UNSIGNED NULL,
  9. PRIMARY KEY(id_temat)
  10. )
  11. TYPE=InnoDB;
  12.  
  13. CREATE TABLE pesele (
  14. pesel CHAR(11) NULL
  15. )
  16. TYPE=InnoDB;
  17.  
  18. CREATE TABLE wykladowcy (
  19. id_wykladowca INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  20. imie CHAR(50) NULL,
  21. nazwisko CHAR(50) NULL,
  22. id_wydzial INTEGER UNSIGNED NULL,
  23. pesel CHAR(11) NULL,
  24. PRIMARY KEY(id_wykladowca)
  25. )
  26. TYPE=InnoDB;
  27.  
  28. CREATE TABLE wydzialy (
  29. id_wydzial INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  30. wydzial CHAR(50)NULL,
  31. PRIMARY KEY(id_wydzial)
  32. )
  33. TYPE=InnoDB;
  34.  
  35. CREATE TABLE przedmioty (
  36. id_przedmiot INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  37. przedmiot CHAR(50) NULL,
  38. PRIMARY KEY(id_przedmiot)
  39. )
  40. TYPE=InnoDB;
  41.  
  42. CREATE TABLE zapisy (
  43. id_student INTEGER UNSIGNED NULL,
  44. id_temat INTEGER UNSIGNED NULL
  45. )
  46. TYPE=InnoDB;
  47.  
  48. CREATE TABLE studenci (
  49. id_student INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  50. imie CHAR(50) NULL,
  51. nazwisko CHAR(50) NULL,
  52. id_wydzial INTEGER UNSIGNED NULL,
  53. id_kierunek INTEGER UNSIGNED NULL,
  54. gr_dziek CHAR(8) NULL,
  55. nr_alb CHAR(8) NULL,
  56. PRIMARY KEY(id_student)
  57. )
  58. TYPE=InnoDB;
  59.  
  60. CREATE TABLE kierunki (
  61. id_kierunek INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  62. kierunek CHAR(50)NULL,
  63. PRIMARY KEY(id_kierunek)
  64. )
  65. TYPE=InnoDB;


oraz skrypt php wyświetlający i sortujący dane z tej bazy:

  1. <?php include ('connection.php'); ?>
  2. <html>
  3. <head>
  4. <link rel="stylesheet" href="style.css" type="text/css"/>
  5. </head>
  6. <body>
  7. <center>
  8. <div class="top">
  9. <form action="index.php" method="post">
  10. <table>
  11. <tr>
  12. <td><center>Nr Tematu:</br></br>
  13. <?php
  14. $sql = mysql_query ("SELECT * FROM tematy") or die ("bład w pytaniu");
  15. print "<select name=numer_tematu><option value=>Wybierz";
  16. while ($tab = mysql_fetch_assoc ($sql)) {
  17.    $id_tem = $tab['id_temat'];
  18.    print "<option value=$id_tem>$id_tem";
  19. }
  20. print "</select>";
  21. ?>
  22. </center></td>
  23.  
  24. <td><center>Przedmiot:</br></br>
  25. <?php
  26. $sql = mysql_query ("SELECT * FROM przedmioty ORDER BY przedmiot") or die ("bład w pytaniu");
  27. print "<select name=przedmiot><option value=>Wybierz";
  28. while ($tab = mysql_fetch_assoc ($sql)) {
  29.    $przedmiot = $tab['przedmiot'];
  30.    $id_przedmiot = $tab['przedmiot'];
  31. print "<option value=$id_przedmiot>$przedmiot";
  32. }
  33. print "</select>";
  34. ?>
  35. </center></td>
  36.  
  37. <td><center>Wykładowca:</br></br>
  38. <?php
  39. $sql = mysql_query ("SELECT * FROM wykladowcy ORDER BY nazwisko") or die ("bład w pytaniu");
  40. print "<select name=wykladowca><option value=>Wybierz";
  41. while ($tab = mysql_fetch_assoc ($sql)) {
  42.    $w_imie = $tab['imie'];
  43.    $w_nazwisko = $tab['nazwisko'];
  44.    $id_wykladowca = $tab['id_wykladowca'];
  45. print "<option value=$id_wykladowca>$w_nazwisko $w_imie";
  46. }
  47. print "</select>";
  48. ?>
  49. </center></td>
  50.  
  51. <td><center>Wydział:</br></br>
  52. <?php
  53. $sql = mysql_query ("SELECT * FROM wydzialy ORDER BY wydzial") or die ("bład w pytaniu");
  54. print "<select name=wydzial><option value=>Wybierz";
  55. while ($tab = mysql_fetch_assoc ($sql)) {
  56.    $wydzial = $tab['wydzial'];
  57.    $id_wydzial = $tab['id_wydzial'];
  58. print "<option value=$id_wydzial>$wydzial";
  59. }
  60. print "</select>";
  61. ?>
  62. </center></td>
  63.  
  64. <td><center>Temat:</br></br>
  65. <input type="text" name="fraza">Szukaj frazy w temacie</input>
  66. </center></td>
  67.  
  68. <td><center>Ilość wolnych miejsc</br>
  69. <?php
  70. print "<select name=ilosc><option value=>Wybierz";
  71. $il=1;
  72. while ($il < 6) {
  73. print "<option value=$il>$il";
  74. $il++;
  75. }
  76. print "</select>";
  77. ?>
  78. </center></td>
  79.  
  80. <td><center>Na ile osób:</br></br>
  81. <?php
  82. print "<select name=na_ile><option value=>Wybierz";
  83. $il=1;
  84. while ($il < 6) {
  85. print "<option value=$il>$il";
  86. $il++;
  87. }
  88. print "</select>";
  89. ?>
  90. </center></td>
  91.  
  92. <td><center>Akcja:</br></br>
  93. <input type="submit" value="Sortuj" />
  94. </center></td>
  95. </tr>
  96. </form>
  97.  
  98. <?php
  99. $compare_nr_tem = $_POST['numer_tematu'];
  100. $compare_przedmiot = $_POST['przedmiot'];
  101. $compare_wykladowca = $_POST['wykladowca'];
  102. $compare_wydzial = $_POST['wydzial'];
  103. $compare_ilosc = $_POST['ilosc'];
  104. $compare_na_ile = $_POST['na_ile'];
  105. $fraza = $_POST['fraza'];
  106.  
  107. $wynik = mysql_query ("SELECT * FROM tematy WHERE ((id_temat LIKE '$compare_nr_tem') AND (id_przedmiot LIKE '$compare_przedmiot') AND (id_wykladowca LIKE '$compare_wykladowca') AND (id_wydzial LIKE '$compare_wydzial') AND (ilosc_wolnych_miejsc LIKE '$compare_ilosc') AND (na_ile_osob LIKE '$compare_na_ile')) AND (temat LIKE \"%$fraza%\") ") or die ("bład w pytaniu");
  108.  
  109. while ($rekord = mysql_fetch_assoc ($wynik)) {
  110.    $id_temat = $rekord['id_temat'];
  111.    
  112.    $id_przedmiot = $rekord['id_przedmiot'];
  113.    $pobierz_nazwe = mysql_query ("SELECT * FROM przedmioty WHERE id_przedmiot='$id_przedmiot'") or die ("blad w pytaniu");
  114.    $wyswietl_nazwe = mysql_fetch_assoc($pobierz_nazwe);
  115.    $przedmiot = $wyswietl_nazwe['przedmiot'];
  116.    
  117.    $id_wykladowca = $rekord['id_wykladowca'];
  118.    $pobierz_nazwe = mysql_query ("SELECT * FROM wykladowcy WHERE id_wykladowca='$id_wykladowca'") or die ("blad w pytaniu");
  119.    $wyswietl_nazwe = mysql_fetch_assoc($pobierz_nazwe);
  120.    $wykladowca_imie = $wyswietl_nazwe['imie'];
  121.    $wykladowca_nazwisko = $wyswietl_nazwe['nazwisko'];
  122.    
  123.    $id_wydzial = $rekord['id_wydzial'];
  124.    $pobierz_nazwe = mysql_query ("SELECT * FROM wydzialy WHERE id_wydzial='$id_wydzial'") or die ("blad w pytaniu");
  125.    $wyswietl_nazwe = mysql_fetch_assoc($pobierz_nazwe);
  126.    $wydzial = $wyswietl_nazwe['wydzial'];
  127.    
  128.    $temat = $rekord['temat'];
  129.    
  130.    $wolne = $rekord['ilosc_wolnych_miejsc'];
  131.    
  132.    $ile = $rekord['na_ile_osob'];
  133.    
  134.    print "<tr><td>$id_temat</td><td>$przedmiot</td><td>$wykladowca_imie<br/>$wykladowca_nazwisko</td><td>$wydzial</td><td>$temat</td><td>$wolne</td><td>$ile</td>";
  135.    if ($wolne != 0) {print "<td><a href=dopiszdo.php?$id_temat>Dopisz sie do tematu nr $id_temat</a></td>";}
  136.    else {print "<td>Temat nr $id_temat jest już zajęty.</td></tr>";}
  137. }
  138. mysql_close($connection);
  139. print "zmienna nr tematu wynosi teraz: $compare_nr_tem";
  140. ?>
  141. </table>
  142. </div>
  143. </center>
  144. </body>
  145. </html>


Problem polega na tym, że zapytanie sql sortujące dane pobiera dane ze zmiennych, które z kolei przekazane są z formularza z list wyboru i pola tekstowego niezależnie od tego czy one tam są czy nie (czy w polu tekstowym jest coś wpisane czy nie oraz czy wybrana jest jakaś pozycja z listy.

Zapytanie sql jest złożone przy użyciu operatorów AND.

Sądziłem, ze w momencie kiedy dla danej kolumny nie będzie wybrana, żadna wartość, a nie ustawie żadnej wartości domyślnej przy <option value=> (a więc zmienna domyślnie pozostaje pusta), zapytanie pobierze wszystkie rekordy, a okazuje się, ze zapytanie szuka pustych pól w danej kolumnie, a przez użycie and, wystarczy jedna pusta zmienna, żeby nie wyświetliło nic.

Moge zmienić domyślną wartość pola formularza (a więc zmiennej przekazanej do selct'a) na dowolną wartość właśnie przy options value, ale czy istnieje jakakolwiek wartość, która posłuży za wzorzec odpowiadający dowolnej wartości??

Krótko mówiąc, jaką wartość należy nadać tej zmiennej, żeby select wybrał każdy rekord??

Jeśli nie istnieje taki symbol to jak inaczej rozwiązać sprawę prawidłowego wyszukiwania danych w powyższym skrypcie??

Może jakiś zaawansowany if??

a może zapytanie powinno być inaczej skonstruowane??

Wiem, że mógłbym użyć symboli wieloznacznych jak w przypadku zmiennej fraza, ale wtedy np. kiedy podam wybiorę cyfrę 1 wyświetli rekordy od id 1, 11-19. i wszystkie zawierające gdziekolwiek jedynkę.

Bardzo proszę o pomoc. Musze oddać działający projekt na zaliczenie przedmiotu za 1,5tyg, a to tylko jego część i utknąłem na teym sortowaniu danych.

Z góry dziękuje.

Czekam...
dr_bonzo
Zbuduj sobie cos w postaci:

  1. <?php
  2. $where = "WHERE ";
  3. ...
  4. if ( $_POST['compare_nr_tem'] ) // jak tu bedzie zero lub pusty string to nie doda tego warunku
  5. {
  6.   $where .= " AND id_temat LIKE '" . $_POST['compare_nr_tem'] . "'";
  7. }
  8.  
  9. // itd
  10. ?>


Nie zapomnij o eskejpowaniu danych i sql injection
DK.log
Dobry pomysł.

Jak rozumiem składnia $zmienna .= cośtam poprostu dodaje do zmiennej kolejną frazę... czyli wtym wypadku cośtam, tak questionmark.gif
[jeśli zmienna miała wartość lubie to to po zabiegu j/w będzie miała wartość lubiecostam]questionmark.gif

Tak jak zaznaczyłem na początku od 3 (teraz czterech) dni zajmuje się php i mysql i niestety, ale nie jestem pewien czy wiem co to jest eskejpowanie danych. Znalazłem coś takiego , ale nie wiele rozumiem z tego opisu, a w dodatku tłumaczenie jest troszkę kiepskie. To samo tyczy się sql injection blinksmiley.gif

Chciałem też zapytać dlaczego mam używać
  1. <?php
  2. if ( $_POST['compare_nr_tem'] )
  3. ?>

skoro w moim skrypcie jest
  1. <?php
  2. $compare_nr_tem = $_POST['numer_tematu'];
  3. ?>
questionmark.gif
W takim wypadku chyba powinienem użyć warunku:
  1. <?php
  2. if ( $compare_nr_tem )
  3. ?>
lub zamiennie:
  1. <?php
  2. if ($_POST['numer_tematu'])
  3. ?>
questionmark.gif

Chyba, ze coś źle rozumiem??

No i jeszcze jedno pytanko... Czy po takim zabiegu, jaki opisałeś, zapytanie ma wyglądać np. tak:
  1. <?php
  2. $wynik = mysql_query ("SELECT * FROM tematy '$where' ") or die ("bład w pytaniu");
  3. ?>
questionmark.gif

Będę wdzięczny za dalsze podpowiedzi i dziękuje za pomoc.

Ja w akcie desperacji miałem już pisać prawie 30 if'ów, które przewidując wszystkie możliwe kombinacje "pustości" zmiennym lub ich "nie pustości" wywoływałyby konkretne (w pełni opisane) zapytania SQl'a wstydnis.gif Zupełnie jak rachunek prawdopodobieństwa na piechote tongue.gif
erix
Cytat
Jak rozumiem składnia $zmienna .= cośtam poprostu dodaje do zmiennej kolejną frazę... czyli wtym wypadku cośtam, tak

Wszystko jest w manualu, poczytaj.

Cytat
Chciałem też zapytać dlaczego mam używać

Cytat
skoro w moim skrypcie jest

To było tylko przykładowo.

Cytat
No i jeszcze jedno pytanko... Czy po takim zabiegu, jaki opisałeś, zapytanie ma wyglądać np. tak:

Tak jakby. Ale lepiej dmuchać na zimne i przeczytaj przyklejony temat o SQL Injection.

Cytat
Ja w akcie desperacji miałem już pisać prawie 30 if'ów, które przewidując wszystkie możliwe kombinacje "pustości" zmiennym lub ich "nie pustości" wywoływałyby konkretne (w pełni opisane) zapytania SQl'a

A po co? Pętla + jeden if" title="Zobacz w manualu PHP" target="_manual sprawdzający, czy zmienna jest pusta.
DK.log
No dobrze. Poczytałem o eskejpowaniu i o injection...
Tylko, że mi nie chodzi zbytnio o bezpieczeństwo... Nie w tym wypadku. Po pierwsze projekt nigdy nie ujrzy światła dziennego. Po drugie to tylko na zaliczenie przedmiotu.

Pisze po raz kolejny ponieważ zbudowałem coś takiego:
  1. <?php
  2. $compare_nr_tem = $_POST['numer_tematu'];
  3. $compare_przedmiot = $_POST['przedmiot'];
  4. $compare_wykladowca = $_POST['wykladowca'];
  5. $compare_wydzial = $_POST['wydzial'];
  6. $compare_ilosc = $_POST['ilosc'];
  7. $compare_na_ile = $_POST['na_ile'];
  8. $fraza = $_POST['fraza'];
  9.  
  10. $where = "WHERE (temat LIKE \"%$fraza%\")"; // szukanie frazy wystąpi tak czy siak, nie spowoduje to błędu w pytanie nawet jeśli wszytskie zmienne będa puste
  11.  
  12. if ($compare_nr_tem)
  13. {
  14.  $where .= " AND (id_temat LIKE '$compare_nr_tem')";
  15. }
  16.  
  17. if ($compare_przedmiot)
  18. {
  19.  $where .= " AND (id_przedmiot LIKE '$compare_przedmiot')";
  20. }
  21.  
  22. if ($compare_wykladowca)
  23. {
  24.  $where .= " AND (id_wykladowca LIKE '$compare_wykladowca')";
  25. }
  26.  
  27. if ($compare_wydzial)
  28. {
  29.  $where .= " AND (id_wydzial LIKE '$compare_wydzial')";
  30. }
  31.  
  32. if ($compare_ilosc)
  33. {
  34.    $where .= " AND (ilosc_wolnych_miejsc LIKE '$compare_ilosc')";
  35. }
  36.  
  37. if ($compare_na_ile)
  38. {
  39.  $where .= " AND (na_ile_osob LIKE '$compare_na_ile')";
  40. }
  41.  
  42. print "zmienna where : $where";                    
  43. $wynik = mysql_query ("SELECT * FROM tematy '$where' ") or die ("bład w pytaniu");
  44. ?>


I jedyny z tego efekt przy próbie wyświetlania danych to "błąd w pytaniu" sciana.gif

Sprawdziłem, czy prawidłowo przypisało wszystko do zmiennej $where - jest OK.
Jak wyświetlić zmienną $where widać ładne zapytanie (a właściwie część zapytania) typu
WHERE (id_temat LIKE 'wartość zmiennej') AND (id_przedmiot LIKE 'wartosc zmiennej 2') ... itd

Jeśli wyszstkie zmienne są puste wartość zmiennej $where wygląda tak: WHERE (temat LIKE "%%")

Wygląda na to, ze sama konstrukcja
  1. <?php
  2. $wynik = mysql_query ("SELECT * FROM tematy '$where' ") or die ("bład w pytaniu");
  3. ?>
jest błedna.

Co zrobiłem nie tak??
Marr
wiesz co, na prawdę rzuciłem tylko okiem przez przypadek, nie przeczytałem nawet większości Twojego posta, nie mogę teraz, ale obstawiam, że robisz gdzieś błąd związany z rozwijaniem zmiennych. Tam gdzie łączysz stringa ze zmienną php rób tak: $costam = 'tu string, a tu juz'.$zmienna.'a tu znowu string'; Dzięki temu nie będziesz miał problemów. Ogólnie zmienne php ujęte w " " są rozwijane przez parser, a w ' ' traktowane jako string. Możesz łączyć łańcuchy ze zmiennymi dzięki . Może coś pomoże w Twoim problemie.

Cytat(DK.log @ 29.05.2009, 20:09:50 ) *
(.....)

Jeśli wyszstkie zmienne są puste wartość zmiennej $where wygląda tak: WHERE (temat LIKE "%%")

Wygląda na to, ze sama konstrukcja
  1. <?php
  2. $wynik = mysql_query (&#092;"SELECT * FROM tematy '$where' \") or die (\"bład w pytaniu\");
  3. ?>
jest błedna.

Co zrobiłem nie tak??


Jeszcze raz rzuciłem okiem i faktycznie tu masz błąd. Popraw na tak:
  1. <?php
  2. $wynik = mysql_query ("SELECT * FROM tematy $where ") or die ("bład w pytaniu");
  3. ?>


oczywiście jeżeli dobrze masz skonstruowaną zmienną $where to będzie działać, a przynajmniej taki mi się wydaje.
DK.log
Próbowałem, tak
  1. <?php
  2. $wynik = mysql_query ("SELECT * FROM tematy $where ") or die ("bład w pytaniu");
  3. ?>

tez nie działało sad.gif

Poddałem się i zrobiłem if'ami na piechotę tongue.gif

Masakra była jak to pisałem... cieszyłem się tylko, że musiałem robic tylko tyle ifów ile wynosi kombinacja bez powtórzen z 6'ciu, a nie np. z 12'tu blinksmiley.gif

Ale grunt, że działa yahoo.gif i mogę ruszyć z miejsca... Jak starczy czasu to poprawie no jakies rozsądniejsze rozwiązanie.

Dzięki wszystkim za pomoc, a poniżej zamieszczam przesłanie dla potomności:
UCZCIE SIĘ DOKŁADNIE A NIE PO ŁEBKACH BO BĘDZIECIE MUSIELI ZAMIAST KILKU LINIJEK PISAĆ COŚ TAKIEGO:

  1. <?php
  2. if ($compare_nr_tem and $compare_przedmiot and $compare_wykladowca and $compare_wydzial and $compare_ilosc and $comppare_na_ile) {
  3. $wynik = mysql_query ("SELECT * FROM tematy WHERE (id_temat LIKE '$compare_nr_tem') AND (id_przedmiot LIKE '$compare_przedmiot') AND (id_wykladowca LIKE '$compare_wykladowca') AND (id_wydzial LIKE '$compare_wydzial') AND (ilosc_wolnych_miejsc LIKE '$compare_ilosc') AND (na_ile_osob LIKE '$compare_na_ile') AND (temat LIKE \"%$fraza%\") ") or die ("bład w pytaniu");
  4.    } else {
  5.        if ($compare_nr_tem and $compare_przedmiot and $compare_wykladowca and $compare_wydzial and $compare_ilosc and $comppare_na_ile == NULL) {
  6.        $wynik = mysql_query ("SELECT * FROM tematy WHERE (id_temat LIKE '$compare_nr_tem') AND (id_przedmiot LIKE '$compare_przedmiot') AND (id_wykladowca LIKE '$compare_wykladowca') AND (id_wydzial LIKE '$compare_wydzial') AND (ilosc_wolnych_miejsc LIKE '$compare_ilosc') AND (temat LIKE \"%$fraza%\") ") or die ("bład w pytaniu");
  7.        //.......wszystkie się nie zmieszczą, ale łącznie było 26 (czy 27 - trzeba byłoby policzyć klamerki na końcu  tongue.gif  ) ifów...
  8. } else {
  9.                                                                                                            if ($compare_nr_tem == NULL  and $compare_przedmiot == NULL and $compare_wykladowca == NULL and $compare_wydzial == NULL and $compare_ilosc and $comppare_na_ile) {
  10.                                                                                                            $wynik = mysql_query ("SELECT * FROM tematy WHERE (ilosc_wolnych_miejsc LIKE '$compare_ilosc') AND (na_ile_osob LIKE '$compare_na_ile') AND (temat LIKE \"%$fraza%\") ") or die ("bład w pytaniu");
  11.                                                                                                            } else {
  12.                                                                                                                if ($compare_nr_tem == NULL and $compare_przedmiot == NULL and $compare_wykladowca == NULL and $compare_wydzial == NULL and $compare_ilosc == NULL and $comppare_na_ile == NULL and $fraza) {
  13.                                                                                                                $wynik = mysql_query ("SELECT * FROM tematy WHERE (temat LIKE \"%$fraza%\") ") or die ("bład w pytaniu");
  14.                                                                                                                } else {
  15.                                                                                                                    if ($compare_nr_tem == NULL and $compare_przedmiot == NULL and $compare_wykladowca == NULL and $compare_wydzial == NULL and $compare_ilosc == NULL and $comppare_na_ile == NULL and $fraza == NULL) {
  16.                                                                                                                    $wynik = mysql_query ("SELECT * FROM tematy ") or die ("bład w pytaniu");
  17.                                                                                                                    }}}}}}}}}}}}}}}}}}}}}}}}}}}}
  18. ?>

sciana.gif tiredsmiley.gif
erix
Cytat(DK.log @ 29.05.2009, 22:30:36 ) *
sciana.gif

Zgadza się, podlicz gdzieś, ile zapytań leci do bazy, bo jestem ciekaw. tongue.gif
DK.log
Zapytań jest tyle ile warunków, a więc 26, ale zapytanie do bazy "leci" jedno. Przecież if wykonuje polecenie jeśli warunek jest spełniony...

Sposób na pewno jest "na około" lub jak kto woli "na piechotę", ale serwer sql nie jest nadwyrężony nadmierną ilością zapytań.

Co ja poradzę, że sposób
  1. <?php
  2. (&#092;"SELECT * FROM tematy '$where' \")
  3. ?>

nie działałquestionmark.gif
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.