Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Jak pobrać dane z drugiej tabeli
Forum PHP.pl > Forum > Przedszkole
redelek
Witam,

Walczę z SELECT i coś nie mogę sobie poradzić.
W tabeli 1 mam pole id_rezerwującego, w którym jest tylko cyfra. To id_rezerwującego ma odpowiednik w tabeli 2 w polu id_uzytkownika.
Mój problem polega na tym pobieram wszystkie rekordy z tabeli1 i w miejsce id_rezerwującego chcę wstawić imię i nazwisko , które znajduje się w tabeli 2.
Kurcze zakłębione, ale czy jest to możliwe? Chodzi tylko o wyświetlenie zamiast cyfry 2 to ładnie imienia i nazwiska pobranego z tabeli.

Jak coś rozjaśnić to proszę o info
skowron-line
niebardzo wiem o co chodzi ale z tego co zrozumialem to chyba chodzi ci o proste zlaczenie
  1. SELECT CONCAT( tbl1.imie, " ", tbl1.nazwisko ) AS id_rezerwujacego, tbl2.cos
  2. FROM tbl1, tbl2
  3. WHERE tbl1.id_uzytkownika = tbl2.id_rezerwujacego
redelek
mam coś takiego
  1. <?php
  2. echo '<table class="dane" cellspacing="0" cellpadding="0">
  3.            <tr>
  4.            <td class="dnaglowek" >NR</td>
  5.            <td class="dnaglowek" >Użytkownik</td>
  6.            <td class="dnaglowek" >Okazja</td>
  7.            <td class="dnaglowek" >Skrócony opis prezentu</td>
  8.            <td class="dnaglowek" >Koszt</td>
  9.            <td class="dnaglowek" >Szczeg.</td>
  10.            <td class="dnaglowek" >Zrealizowany.</td>
  11.            <td class="dnaglowek" >Usuń</td></tr>';
  12.            $cnt=0;
  13.            polacz_db();
  14.            mysql_query("SET NAMES 'utf8'");
  15.            mysql_query("SET CHARACTER_SET_CLIENT=utf8");
  16.            mysql_query("SET CHARACTER_SET_RESULTS=utf8");
  17.            $usr=$_SESSION["iduz"];
  18.        //$wynik = mysql_query("SELECT * FROM $M_TABELA, $M_TABELA2 WHERE $M_TABELA.id_rezerwujacego=$M_TABELA2.id_uzytkownika AND rezerwacja='1' AND realizacja='1' ORDER BY id_prezentu DESC") or die('Brak polączenia z bazą :('.mysql_error());
  19.                $wynik = mysql_query("SELECT * FROM $M_TABELA WHERE `id_rezerwujacego`='$usr' AND rezerwacja='1' AND realizacja='1' ORDER BY id_prezentu DESC") or die('Brak polączenia z bazą :('.mysql_error());
  20.                    if(mysql_num_rows($wynik) == 0)
  21.                        {
  22.                            echo '<tr><td class="ddane" colspan="8" >Brak danych w bazie :(</td></tr>';
  23.                        }
  24.                            else
  25.                                {
  26.                                    while(list($id_prezentu, $id_uzytkownika, $id_rezerwujacego, $skr_prezentu, $koszt, $szczegoly, $link, $mini_fotka, $rezerwacja, $realizacja, $typ_prezentu, $dt_dodania, $dt_realizacji) = mysql_fetch_array($wynik))
  27.                                        {
  28.                                            
  29.                                            $cnt++;
  30.                                            echo "<tr>";
  31.                                            echo "<td class=\"ddane\">".$cnt."</td>";
  32.                                            echo "<td class=\"ddane\">".$imie." ".$nazwisko."</td>";
  33.                                            echo "<td class=\"ddane\">".$typ_prezentu."</td>";
  34.                                            echo "<td class=\"ddane\">".$skr_prezentu."</td>";
  35.                                            echo "<td class=\"ddane\">".$koszt."&nbsp;zł</td>";
  36.                                            echo "<td class=\"ddane\"><a href=listap.php?opcja=szczegoly&id_prezentu=".$id_prezentu.">szcz</a></td>";
  37.                                            echo "<td class=\"ddane\">OK</td>";
  38.                                            echo "<td class=\"ddane\"><a href=zrealizowane.php?opcja=usun&id_prezentu=".$id_prezentu.">U</a></td></tr>";
  39.                                        }
  40.    
  41.                                }
  42. ?>


Problem w tym ż w polu użytkownik wyświetla mi się numer 2 a ja chciałbym, żeby polączył się do tabeli users sprawdził kto ma numer 2 i wyświetlił jego imie i nazwisko a nie numerek 2
marian2299
Nie możesz zrobić 1 tabeli ? Taki OT.
zeten
Podaj strukture tabeli1 i tabeli2. Jeszcze raz dokladnie napisz co ma byc pobrane z bazy danych.
redelek
  1. CREATE TABLE IF NOT EXISTS `pre_prezenty` (
  2. `id_prezentu` tinyint(3) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `id_uzytkownika` tinyint(3) DEFAULT '0',
  4. `id_rezerwujacego` tinyint(3) DEFAULT '0',
  5. `skr_prezentu` varchar(255) collate utf8_polish_ci DEFAULT NULL,
  6. `koszt` int(10) UNSIGNED DEFAULT NULL,
  7. `szczegoly` text collate utf8_polish_ci,
  8. `link` varchar(255) collate utf8_polish_ci DEFAULT NULL,
  9. `mini_fotka` mediumblob,
  10. `rezerwacja` varchar(1) collate utf8_polish_ci DEFAULT NULL,
  11. `realizacja` varchar(1) collate utf8_polish_ci DEFAULT NULL,
  12. `typ_prezentu` varchar(20) collate utf8_polish_ci DEFAULT 'prezent',
  13. `dt_dodania` date DEFAULT NULL,
  14. `dt_realizacji` date DEFAULT '0000-00-00',
  15. PRIMARY KEY (`id_prezentu`),
  16. UNIQUE KEY `id_prezentu` (`id_prezentu`)
  17. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=0 ;
  18.  
  19.  
  20. #---------------------------
  21. #---BAZA UZYTKOWNIKOW-------
  22. #---------------------------
  23. CREATE TABLE IF NOT EXISTS `pre_users` (
  24. `id_uzytkownika` tinyint(3) UNSIGNED NOT NULL AUTO_INCREMENT,
  25. `imie` varchar(20) collate utf8_polish_ci DEFAULT NULL,
  26. `nazwisko` varchar(20) collate utf8_polish_ci DEFAULT NULL,
  27. `email` varchar(30) collate utf8_polish_ci DEFAULT NULL,
  28. `uzytkownik` varchar(8) collate utf8_polish_ci DEFAULT NULL,
  29. `haslo` varchar(32) collate utf8_polish_ci DEFAULT NULL,
  30. `dt_rejestracji` datetime DEFAULT NULL,
  31. `dt_logowania` datetime DEFAULT NULL,
  32. `blokada` varchar(1) collate utf8_polish_ci DEFAULT NULL,
  33. `uprawnienia` varchar(1) collate utf8_polish_ci DEFAULT NULL,
  34. PRIMARY KEY (`id_uzytkownika`),
  35. UNIQUE KEY `id_uzytkownika` (`id_uzytkownika`)
  36. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=0 ;


Z bazy pre_prezenty ma pobrać wszystkie pola .
Przy wyświetlaniu zamiast id_użytkownika, ma wyświetlić imie i nazwisko pobrane z bazy pre_users. Tu właśnie mam problem

Zrobiłem takie zapytanie
  1. SELECT * FROM $M_TABELA LEFT JOIN $M_TABELA2 ON $M_TABELA.id_uzytkownika=$M_TABELA2.id_uzytkownika
  2. WHERE $M_TABELA.id_rezerwujacego='$usr' AND rezerwacja='1' AND realizacja='1' ORDER BY id_prezentu DESC


Ale niestety pobrał dane użytkownika o id_uzytkownika 2 a nie jeden. Pomimo że dane w bazie się zgadzają i M_TABELA2.id_uzytkownika = 1 i M_TABELA.id_uzytkownika = 1.
Może być to problemem , że w M_TABELA.id_uzytkownika jest drugim polem, a nie pierwszym?

udało mi się to rozwiązać tak
  1. <?php
  2. $wynik = mysql_query("SELECT * FROM $M_TABELA JOIN $M_TABELA2 ON $M_TABELA.id_uzytkownika=$M_TABELA2.id_uzytkownika
  3. WHERE $M_TABELA.id_rezerwujacego='$usr' AND rezerwacja='1' AND realizacja='1' ORDER BY id_prezentu DESC") or die('Brak polączenia z bazą :('.mysql_error());
  4. ?>

a w pętli while dopisałem pola z $M_TABELA2 i poszło jak się patrzy.

Czy tak może zostać czy to nie jest poprawne.
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.