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

Mam następującą bazę:
CREATE TABLE tematy ( id_temat INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, id_przedmiot INTEGER UNSIGNED NULL, id_wykladowca INTEGER UNSIGNED NULL, id_wydzial INTEGER UNSIGNED NULL, temat VARCHAR(500) NULL, ilosc_wolnych_miejsc INTEGER UNSIGNED NULL, na_ile_osob INTEGER UNSIGNED NULL, PRIMARY KEY(id_temat) ) TYPE=InnoDB; CREATE TABLE pesele ( pesel CHAR(11) NULL ) TYPE=InnoDB; CREATE TABLE wykladowcy ( id_wykladowca INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, imie CHAR(50) NULL, nazwisko CHAR(50) NULL, id_wydzial INTEGER UNSIGNED NULL, pesel CHAR(11) NULL, PRIMARY KEY(id_wykladowca) ) TYPE=InnoDB; CREATE TABLE wydzialy ( id_wydzial INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, wydzial CHAR(50)NULL, PRIMARY KEY(id_wydzial) ) TYPE=InnoDB; CREATE TABLE przedmioty ( id_przedmiot INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, przedmiot CHAR(50) NULL, PRIMARY KEY(id_przedmiot) ) TYPE=InnoDB; CREATE TABLE zapisy ( id_student INTEGER UNSIGNED NULL, id_temat INTEGER UNSIGNED NULL ) TYPE=InnoDB; CREATE TABLE studenci ( id_student INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, imie CHAR(50) NULL, nazwisko CHAR(50) NULL, id_wydzial INTEGER UNSIGNED NULL, id_kierunek INTEGER UNSIGNED NULL, gr_dziek CHAR(8) NULL, nr_alb CHAR(8) NULL, PRIMARY KEY(id_student) ) TYPE=InnoDB; CREATE TABLE kierunki ( id_kierunek INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, kierunek CHAR(50)NULL, PRIMARY KEY(id_kierunek) ) TYPE=InnoDB;
oraz skrypt php wyświetlający i sortujący dane z tej bazy:
<?php include ('connection.php'); ?> <html> <head> <link rel="stylesheet" href="style.css" type="text/css"/> </head> <body> <center> <div class="top"> <form action="index.php" method="post"> <table> <tr> <td><center>Nr Tematu:</br></br> <?php $id_tem = $tab['id_temat']; } ?> </center></td> <td><center>Przedmiot:</br></br> <?php $przedmiot = $tab['przedmiot']; $id_przedmiot = $tab['przedmiot']; } ?> </center></td> <td><center>Wykładowca:</br></br> <?php $w_imie = $tab['imie']; $w_nazwisko = $tab['nazwisko']; $id_wykladowca = $tab['id_wykladowca']; } ?> </center></td> <td><center>Wydział:</br></br> <?php $wydzial = $tab['wydzial']; $id_wydzial = $tab['id_wydzial']; } ?> </center></td> <td><center>Temat:</br></br> <input type="text" name="fraza">Szukaj frazy w temacie</input> </center></td> <td><center>Ilość wolnych miejsc</br> <?php $il=1; while ($il < 6) { $il++; } ?> </center></td> <td><center>Na ile osób:</br></br> <?php $il=1; while ($il < 6) { $il++; } ?> </center></td> <td><center>Akcja:</br></br> <input type="submit" value="Sortuj" /> </center></td> </tr> </form> <?php $compare_nr_tem = $_POST['numer_tematu']; $compare_przedmiot = $_POST['przedmiot']; $compare_wykladowca = $_POST['wykladowca']; $compare_wydzial = $_POST['wydzial']; $compare_ilosc = $_POST['ilosc']; $compare_na_ile = $_POST['na_ile']; $fraza = $_POST['fraza']; $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"); $id_temat = $rekord['id_temat']; $id_przedmiot = $rekord['id_przedmiot']; $pobierz_nazwe = mysql_query ("SELECT * FROM przedmioty WHERE id_przedmiot='$id_przedmiot'") or die ("blad w pytaniu"); $przedmiot = $wyswietl_nazwe['przedmiot']; $id_wykladowca = $rekord['id_wykladowca']; $pobierz_nazwe = mysql_query ("SELECT * FROM wykladowcy WHERE id_wykladowca='$id_wykladowca'") or die ("blad w pytaniu"); $wykladowca_imie = $wyswietl_nazwe['imie']; $wykladowca_nazwisko = $wyswietl_nazwe['nazwisko']; $id_wydzial = $rekord['id_wydzial']; $pobierz_nazwe = mysql_query ("SELECT * FROM wydzialy WHERE id_wydzial='$id_wydzial'") or die ("blad w pytaniu"); $wydzial = $wyswietl_nazwe['wydzial']; $temat = $rekord['temat']; $wolne = $rekord['ilosc_wolnych_miejsc']; $ile = $rekord['na_ile_osob']; 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>"; if ($wolne != 0) {print "<td><a href=dopiszdo.php?$id_temat>Dopisz sie do tematu nr $id_temat</a></td>";} } ?> </table> </div> </center> </body> </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...