![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 19.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Baza składa się z trzech tabel. Wszystko ładnie i pięknie gra, pobieram sobie dane definiując polecenia do poszczególnych pól co powoduje wyświetlenie się linku z numerem ID, po naciśnieciu którego wszystkie potrzebne dane poprzez polecenie LEFT JOIN zbierają się do kupy i pięknie to działa. Danych jednak przybyło i chcialbym mieć możliwość bardziej szczegółowego podziału kategorii. Np jeżeli wybiorę pole nazwa, chciałbym skrócic wynik tego wyszukiwania do jakiejś jednej grupy np. nazwa w jednym mieście. Wyświetlam, więc dodatkowe dane poprzez formularz (po wyświeleniu się wszystkich danych z pola nazwa) i chcę to skrócić, czyli :
[php:1:9fa482f3a6]<?php $link = mysql_connect("baza", "uzytkownik", "haslo") or die ("Nie można połączyć się z bazą danych - zapraszam później."); $mam = mysql_select_db ("nazwa_bazy") or die ("Nie można połączyć się z bazą danych - zapraszam później."); $pytanie = mysql_query ("SELECT miasto FROM tabela2 GROUP BY miasto"); echo"<form action='wynik.php' method='post'>"; echo"<select name='miasto' >"; while($row = mysql_fetch_array($pytanie)) { $miasto = $row['miasto']; echo"<option value='$miasto'>".$miasto."</ option>"; } echo"</select>"; ?>[/php:1:9fa482f3a6] OK i teraz chciałbym w wynik.php pobrać pole nazwa w zależności od miasta. Nie mam problemu, jeżeli miasta będą umieszczone w tej samej tabeli co szukana nazwa wtedy daje polecenie: Kod SELECT id, nazwa, miasto FROM tabela1 WHERE miasto = '".$_POST['miasto']."' ORDER BY nazwa ASC Natomiast ja mam miasta w drugiej tabeli i nie za bardzo wychodzi mi wyszukiwanie pola nazwa w pierwszej tabeli w zależności od pola miasto w drugiej tabeli. Próbowałem LEFT JOIN, ale może coś pochrzaniłem bo pokazywał błąd. Rozwiązanie poniżej jest bez sensu, gdyż pokazuje dokładnie wszystkie dane bez skracania (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif) Kod SELECT * FROM tabela1, tabela2 WHERE miasto = '".$_POST['miasto']."' ORDER BY nazwa ASC
Pewno to jest proste jak drut..... dzięki |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 19.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Sama baza jest debilnie skonstruowana i nie mam na to wpływu, aby to zmienić. Mało kto widział taki bałagan jaki tam panuje. Baza jest odzwierciedleniem trzech tabel z programu Access i cały dowcip polega na tym, aby struktura bazy na serwerze odpowiadała strukturze Accessa. Wystarczy bowiem przerzucac potem tak samo nazwane tabele do bazy na serwerze, aby mieć zgodność. Niestety robiący baze w Accessie zrobił z tego mały koszmarek. Cały dowcip polega na tym, że w jednej tabeli jest podana nazwa, drugiej miasto, trzeciej uczestnicy. Dla skrócenia podam, że tabele łączą się ze sobą np tabela w której występuje pole "nazwa" ma pole "A " , które odpowiada polu "A" w tabeli, gdzie umieszczona jest pole "miasta".
Czyli: Kod LEFT JOIN gdzie ON tam.A = gdzie.A
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 13:55 |