Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] Wyświetlenie danych z dwóch tabel poprez wywołanie na stronie
Forum PHP.pl > Forum > Przedszkole
Oneros
Witam,
mam problem z wyświetleniem wyników dla zapytania wypisanego w pole:
  1. <form action="" method="post">
  2. <input type="text" name="kod" /><br />
  3. <input type="submit" value="wyszukaj" />
  4. </form>


Wpisanie w powyższe pole kodu pocztowego (xy-abc) powinno spowodować wyszukanie z dwóch tabel FIRMY i ADRES wszystkie firmy i adresy posiadajace kod (pocztowy) xy-abc.

  1. $kod = $_POST['kod'];
  2.  
  3. if($kod) { ....
  4.  
  5. //zapytanie do bazy danych
  6. $wynik = mysql_query("SELECT a1.*, a2.* FROM firmy AS a1, adres AS a2 WHERE a1.kod=a2.kod")
  7. or die("Błąd w zapytaniu!");

tu wywala mi wszystkie dane z tabel o tej samej kolumnie KOD, jednak ja potrzebuje zeby wyswietlilo mi tylko ten KOD ktory wpisze się na stronie czyli np xy-abc. Tutaj jak gdyby system nie zwraca uwagi na to jaki KOD wpisze.

Natomiast jeśli użyje zapyatnie do jednej tabeli poprzez
  1. $wynik = mysql_query("SELECT * FROM kody_pocztowe WHERE kod='$kod'")
- to tu wszystko działa poprawnie.

Pomoze ktos co nalezy wstawic aby wyniki bralo z dwoch tabel, ale tylko z KODu ktory ja wpisze recznie.


Albo cos takiego tylko jak zrobić dla dwóch tabel questionmark.gif
  1. <form action="" method="post">
  2. <select name="dzial" onchange="this.form.submit()">
  3. <option value="">Wybierz dział</option>
  4. <option value="kadry">Kadry</option>
  5. <option value="ksiegowosc">Księgowość</option>
  6. <option value="produkcja">Produkcja</option>
  7. </select>
  8. </form>
  9.  
  10. <?php
  11.  
  12. // parametry serwera
  13. $serwer = "localhost"; // nazwa serwera mysql
  14. $login = "root"; // login do bazy
  15. $haslo = "krasnal"; // haslo do bazy
  16. $baza = "testy"; // nazwa bazy
  17. $tabela = "kadry"; // nazwa tabeli
  18.  
  19. $dzial = $_POST['dzial'];
  20.  
  21. if($dzial) {
  22.  
  23. // łączymy się z bazą danych
  24. if (mysql_connect($serwer, $login, $haslo) and mysql_select_db($baza)) {
  25.  
  26. // zapytanie do bazy danych
  27. $wynik = mysql_query("SELECT * FROM kadry WHERE dzial='$dzial'")
  28. or die("Błąd w zapytaniu!");
  29.  
  30. }
  31. else echo "Nie mogę połączyć się z bazą danych!";
  32.  
  33. // wyświetlany wyniki zapytania
  34. while($rek = mysql_fetch_array($wynik)) {
  35. echo $rek['nazwisko']."<br />";
  36. }
  37. }
  38.  
  39. ?>


Pozdrawiam
jasin
Nie wiem czy dobrze Cię zrozumiałem ... Ale jeśli chodzi o zapytanie to lepiej użyć konstrukcji JOIN

  1. SELECT T1.*, T2.*
  2. FROM tabelaA AS T1
  3. LEFT JOIN tabelaB AS T2
  4. ON T1.kod = T2.kod
  5. WHERE T1.kod='jakis_kod'
Oneros
Dziękuje za chęci,
rozwiazlem to troche inaczej
  1. ysql_query("SELECT a1.*, a2.* FROM firmy AS a1, adres AS a2 WHERE a1.kod='$kod' AND a2.kod='$kod'")



Mam jednak pytanie, jak ulożyć funkcje, która w przypadku nie zgodnośći wyniku (czyli a1.kod jest rozne od a2.kod)
zwróci mi np echo "Brak danych".

Mam coś takiego:
  1. $wynik = mysql_query("SELECT a1.*, a2.* FROM firmy AS a1, adres AS a2 WHERE a1.kod='$kod' AND a2.kod='$kod' ORDER BY nominal DESC")
  2. or die("Błąd w zapytaniu!");
  3.  
  4.  
  5. }
  6. else echo "Nie mogę połączyć się z bazą danych!";
  7.  
  8. // wyświetlany wyniki zapytania
  9.  
  10. while($rek = mysql_fetch_array($wynik))
  11. {
  12.  
  13.  
  14. echo "<table cellpadding=\"2\" border=1>";
  15. while($r = mysql_fetch_array($wynik)) {
  16. echo "<tr>";
  17. echo "<td>".$r[kod]."</td>";
  18. ....
  19. echo "</tr>";
  20. }
  21. echo "</table><br><br>";
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.