jak wyciagnac dane z dwoch tabel naraz? |
jak wyciagnac dane z dwoch tabel naraz? |
6.09.2003, 18:35:48
Post
#1
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 0 Dołączył: 30.07.2003 Skąd: Gdynia Ostrzeżenie: (0%) |
Witam
Dzisiaj dysponuje takim czyms. pisze wlasne forum i z wiadomych powodow potrzebuje, aby mozna bylo wyciagac dane z dwoch tabel na raz moze opisze to jasniej tabela topici Kod ID_topicu | nazwa_topicu | kto | wpis | data | host
tabela userzy Kod ID_usera | nazwa_usera | data_ostatniego logowania | data_przylaczenia | podpis | miejscowosc
i teraz: w tabeli topici jest rubryka KTO i tam jest zapisywana nazwa usera. chce, zeby na tej podstawie byly pobierane dane z tabieli userzy jak to zrobic :?: bo ja mysle juz dwa dni i jakos nie moge wpasc na to (moze to przez niewyspanie :?: :?: ) z gory thx podro 4 @ll |
|
|
6.09.2003, 18:48:42
Post
#2
|
|
Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 6.08.2003 Ostrzeżenie: (0%) |
Cytat w tabeli topici jest rubryka KTO i tam jest zapisywana nazwa usera. chce, zeby na tej podstawie byly pobierane dane z tabieli userzy
Wersja najprostsza: [sql:1:6582b2782e]select * from topici,userzy where nazwa_usera=kto[/sql:1:6582b2782e] ale może będziesz potrzebował czegoś bardziej skomplikowanego. |
|
|
6.09.2003, 18:56:50
Post
#3
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 0 Dołączył: 30.07.2003 Skąd: Gdynia Ostrzeżenie: (0%) |
nie wiem gdzie to wkleic :?
to moze zrobimy tak [php:1:a029fc0a7a]<?php session_start(); if (!isset($_SESSION["login"])){ header("Location: login.php"); exit(); } ?><html> <? include("config.cfg"); echo("<title> Forum $nazwa_strony </title>"); ?><table border="1"> <? include("config.cfg"); $db=mysql_connect("$sql_host", "$sql_user", "$sql_pass"); mysql_select_db("$sql_base", $db); $sql="SELECT * FROM topici WHERE topic_id='$topic'"; $rezulat=mysql_query($sql); $topic_id=$topic; while ($row = mysql_fetch_array($rezulat)) { $kto=$row["kto"]; $data=$row["data"]; $wpis=$row["wpis"]; $forum_id=$row["forum_id"]; $host=$row["host"]; $nazwa_topicu=$row["nazwa_topicu"]; echo("<center>Nazwa topicu: $nazwa_topicu <hr></center>n"); echo("<tr>n<td width="60%"><p>$kto napisal: </p><p>$wpis</p></td>n <td width="10%"><p>Data: $data</p></td>"); if ($_SESSION["user_stat"] != 0) { echo("<td width="20%">n <a href="skasuj.php?id=$topic_id">Skasuj topic</a><br> <a href="moderuj.php?topic=$topic_id">Edytuj</a><br><p>Host: $host</p></td>"); } echo("<td><a href="odpowiedz.php?topic=$topic_id&forum=$forum_id">Odpowiedz</a></td></tr>n"); } $sql2="SELECT * FROM topici WHERE odpowiedz='$topic_id'"; $result2=mysql_query($sql2); while ($row = mysql_fetch_array($result2)) { $kto=$row["kto"]; $data=$row["data"]; $wpis=$row["wpis"]; $forum_id=$row["forum_id"]; $host=$row["host"]; $topic_id=$row["topic_id"]; echo("<tr>n<td width="60%"><p>$kto napisal: </p><p>$wpis</p></td>n <td width="10%">Data: $data</td>"); if ($_SESSION["user_stat"] != 0) { echo("<td width="20%">n <a href="skasuj.php?id=$topic_id">Skasuj topic</a><br> <a href="moderuj.php?topic=$topic_id">Edytuj</a><br><p>Host: $host</p></td>"); } echo("<td><a href="odpowiedz.php?topic=$topic_id&forum=$forum_id">Odpowiedz</a></td></tr>n"); } ?> </table><pre><a href="wyloguj.php">Wyloguj</a></pre> <pre><a href="index.php">Glowna strona forum</a></pre> </html>[/php:1:a029fc0a7a] gdzie :?: |
|
|
7.09.2003, 11:41:39
Post
#4
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 17.04.2002 Skąd: Wrocław Ostrzeżenie: (0%) |
[sql:1:3ac0450845]SELECT t.*,u.* FROM topici t LEFT OUTER JOIN userzy u ON t.kto=u.nazwa_usera[/sql:1:3ac0450845]
a moze cos takiego? |
|
|
7.09.2003, 11:44:28
Post
#5
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 0 Dołączył: 30.07.2003 Skąd: Gdynia Ostrzeżenie: (0%) |
mozesz mi wyjasnic ja do czego slozy :?: bo nie rozumiem tego zapytania no i gdzie to wsadzic w kodzie :?: :?:
|
|
|
7.09.2003, 12:11:13
Post
#6
|
|
Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 6.08.2003 Ostrzeżenie: (0%) |
Cytat nie wiem gdzie to wkleic :?
gdzie :?: Tam gdzie masz zapytania czyli w liniach 16 i 36. |
|
|
11.09.2003, 20:24:55
Post
#7
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 0 Dołączył: 30.07.2003 Skąd: Gdynia Ostrzeżenie: (0%) |
Witam
to znowu ja:) nie moge sobie z tym poradzic w ogole mi nie lapie niczego [php:1:a060af7522]<? include("include.inc");?><html> <? include("config.cfg"); echo("<title> Forum $nazwa_strony </title>"); ?><table border="1"> <? $i=3; include("config.cfg"); $db=mysql_connect("$sql_host", "$sql_user", "$sql_pass"); mysql_select_db("$sql_base", $db); $sql="SELECT nazwa_topicu FROM topici WHERE topic_id='$topic'"; $rezulat=mysql_query($sql); $topic_id=$topic; while ($row = mysql_fetch_array($rezulat)) { $nazwa_topicu=$row["nazwa_topicu"]; echo("<center>Nazwa topicu: $nazwa_topicu <hr></center>n"); } $sql2="SELECT p.*,u.* FROM posty p LEFT OUTER JOIN users u ON t.kto=u.nazwa_usera"; $rezulat2=mysql_query($sql2); while ($row = mysql_fetch_array($rezulat2)) { $kto=$row["p.kto"]; $data=$row["p.data"]; $wpis=$row["p.wpis"]; $host=$row["p.host"]; $post_id=$row["p.post_id"]; $podpis=$row["u.podpis"]; echo("<tr>n<td width="60%"><p>$kto napisal: </p><p>$wpis</p></td>n <td width="10%"><p>Data: $data</p></td>"); if ($_SESSION["user_stat"] != 0) { echo("<td width="20%">n <a href="skasuj.php?id=$post_id">Skasuj topic</a><br> <a href="moderuj.php?topic=$post_id">Edytuj</a><br><p>Host: $host</p></td>"); } echo("<td><a href="odpowiedz.php?topic=$topic_id">Odpowiedz</a></td></tr>n"); } ?> </table><pre><a href="wyloguj.php">Wyloguj</a></pre> <pre><a href="index.php">Glowna strona forum</a></pre> </html> <? include("include_dol.inc");?>[/php:1:a060af7522] sytuacja sie troche zmienila posty sa w tabeli posty, nazwa topicu itp w tabeli topici a dane o userach w tabeli users. mozecie mi pomoc :?: |
|
|
16.09.2003, 08:49:06
Post
#8
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 29.04.2003 Skąd: Stargard Szczeciński Ostrzeżenie: (0%) |
Do sivyer i nie tylko :wink: :
Użyłem do podobnej sprawy twojego kodu: [sql:1:e6922608cf]SELECT t.*,u.* FROM topici t LEFT OUTER JOIN userzy u ON t.kto=u.nazwa_usera[/sql:1:e6922608cf] i działa mi bez zarzutu, ale chciałbym w ten sam sposob porobic wiecej polaczen, bo chcialbym w odpowiednie pola w tabeli news powstawiac liczby, ktore mialyby odpowiadac id w innej tabeli (np. w kat 1 to zeby wyciagnac z tabeli kategoria, gdzie id_kat=1 inne pola np. nazwa_kat i opis_kat). I tak jesli wstawie w tabeli news w pole kat 1 a nie wstawie nazwe kategorii, to pozniej przy ew. zmianach zmieniajac nazwe kategorii w tabeli kategoria w efekcie na stronie we wszystkich newsach zmieni mi sie automatycznie. O cos takiego mi chodzi ale jak zrobic poprawnie takie polaczenie dla powiedzmy 5,6 tabel? mam np. tabele news (pola potrzebne mi do polaczenia Kod ID | kat_id | autor_id | obrazek_id | zrodlo_id
tabele kategoria Kod ID_kat | nazwa_kat | opis_kat
tabele zrodlo Kod ID_zr | nazwa_zr | opis_zr
itd. jakby ktos nie rozumial mojej paplaniny to gg: 1142714 |
|
|
16.09.2003, 18:54:04
Post
#9
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 29.04.2003 Skąd: Stargard Szczeciński Ostrzeżenie: (0%) |
dobra dzieki juz sobie poradzilem
a dziala mi to na takiej zasadzie: Kod $q = "SELECT * FROM newsy n, news_users u, news_kat k WHERE n.podpis = u.id and n.kat = k.kat_id";
$res = mysql_query($q); $rows = mysql_num_rows($res); // je¶li nie ma wpisow w tabeli 'newsy' to informuje, ze brak wiadomosci if ($rows == 0) { echo "Nie ma jeszcze żadnych wiadomo¶ci"; } // je¶li sa wpisy, to wyswietla je else { while ($row = mysql_fetch_array($res)) { echo "$row[tytul] <a href="mailto:$row[mail]">$row[imie] $row[nazwisko]</a> $row[n_kat]<br>"; } } |
|
|
17.09.2003, 21:26:18
Post
#10
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 0 Dołączył: 30.07.2003 Skąd: Gdynia Ostrzeżenie: (0%) |
Gumiak moze chociaz Ty mi pomozesz....
[php:1:d43704f69d]<? include("config.cfg"); $db=mysql_connect("$sql_host", "$sql_user", "$sql_pass"); mysql_select_db("$sql_base", $db); $sql="SELECT t.*,u.* FROM topici t LEFT OUTER JOIN users u ON t.kto=u.nazwa_usera WHERE topic_id = '$topic_id'"; $rezulat=mysql_query($sql); $topic_id=$topic; while ($row = mysql_fetch_array($rezulat)) { $nazwa_topicu=$row["t.nazwa_topicu"]; echo("<center>Nazwa topicu: $nazwa_topicu <hr></center>n"); $kto=$row["u_kto"]; $data=$row["u_data"]; $wpis=$row["u_wpis"]; $host=$row["u_host"]; $post_id=$row["u_post_id"]; $podpis=$row["u.podpis"]; echo("<tr>n<td width="60%"><p>$kto napisal: </p><p>$wpis</p></td>n <td width="10%"><p>Data: $data</p></td>"); if ($_SESSION["user_stat"] != 0) { echo("<td width="20%">n <a href="skasuj.php?id=$post_id">Skasuj topic</a><br> <a href="moderuj.php?topic=$post_id">Edytuj</a><br><p>Host: $host</p></td>"); } echo("<td><a href="odpowiedz.php?topic=$topic_id">Odpowiedz</a></td></tr>n"); } ?>[/php:1:d43704f69d] co tu jest zle :?: nic sie nie wyswietla:( |
|
|
17.09.2003, 23:07:50
Post
#11
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) |
Jesli nic sie nie wyswietla to znaczy ze petla ani razu sie nie wykonuje, co znaczy ze $rezultat albo nie zwraca ani jednego wiersza.. albo nastapil blad polaczenia z baza/wybrania bazy/wykonania zapytania.
Przerob poczatek na taki kod to bedziesz wiedzial co dokladnie: [php:1:dff1e40660]<?php $db = mysql_connect("$sql_host", "$sql_user", "$sql_pass") od die(mysql_error()); mysql_select_db("$sql_base", $db) or die(mysql_error()); $sql="SELECT t.*,u.* FROM topici t LEFT OUTER JOIN users u ON t.kto=u.nazwa_usera WHERE topic_id = '$topic_id'"; $rezulat=mysql_query($sql) or die(mysql_error()); ... ?> [/php:1:dff1e40660] I pokaz co Ci wyswietla.. |
|
|
18.09.2003, 12:40:23
Post
#12
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 0 Dołączył: 30.07.2003 Skąd: Gdynia Ostrzeżenie: (0%) |
poprawilem to bo mi blad wyskakiwal
[php:1:940b0cc8bb]<? include("config.cfg"); $db = mysql_connect("$sql_host", "$sql_user", "$sql_pass") or die(mysql_error()); mysql_select_db("$sql_base", $db) or die(mysql_error()); #POPRAWIONE $sql="SELECT t.*,u.* FROM topici t LEFT OUTER JOIN users u ON t.kto=u.user_name WHERE topic_id = '$topic_id'"; $rezulat=mysql_query($sql) or die(mysql_error()); $topic_id=$topic; while ($row = mysql_fetch_array($rezulat)) { $nazwa_topicu=$row["topici.nazwa_topicu"]; echo("<center>Nazwa topicu: $nazwa_topicu <hr></center>n"); $kto=$row["u_kto"]; $data=$row["u_data"]; $wpis=$row["u_wpis"]; $host=$row["u_host"]; $post_id=$row["u_post_id"]; $podpis=$row["u.podpis"]; echo("<tr>n<td width="60%"><p>$kto napisal: </p><p>$wpis</p></td>n <td width="10%"><p>Data: $data</p></td>"); if ($_SESSION["user_stat"] != 0) { echo("<td width="20%">n <a href="skasuj.php?id=$post_id">Skasuj topic</a><br> <a href="moderuj.php?topic=$post_id">Edytuj</a><br><p>Host: $host</p></td>"); } echo("<td><a href="odpowiedz.php?topic=$topic_id">Odpowiedz</a></td></tr>n"); } ?>[/php:1:940b0cc8bb] teraz mi sie nie wyswietla zaden blad, ale nadal jest pusto |
|
|
18.09.2003, 13:10:46
Post
#13
|
|
Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) |
|
|
|
18.09.2003, 15:38:23
Post
#14
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 0 Dołączył: 30.07.2003 Skąd: Gdynia Ostrzeżenie: (0%) |
o super globalnych nie musisz mi pisac mam je zadeklarowane w innym kawalku kodu (jak sie strona zaczyna ). id_topicu istnieje .... :?
edit: jest poprawa nie zmieniajac kodu, odpallila mi sie ta petla.... tyle, ze pusta :? tzn to co jest w echo sie wyswietla, ale to co jest w zmiennych jest puste |
|
|
18.09.2003, 16:20:15
Post
#15
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 18.06.2003 Skąd: zaścianek Ostrzeżenie: (0%) |
zrob tak : zadaj to zapytanie bezposrednio w bazie danych i zobacz czy dostaniesz wynik !!!
ja osobiscie zadko korzystam z JOIN tam wystarczy Select u.*,t.* from table1 as t, table2 as u Where t.topic_id = '$topic_id' and t.kto = u.user_name aha w twoim $sql jest blad WHERE topic_id = '$topic_id'"; powinno byc WHERE t.topic_id = '$topic_id' nie wiem moze MySQL radzi sobie tez z tym co ty dales ale formalnie lepiej jest tak jak u mnie zeby wiedziec jakie zadajesz pytanie bazie danych zrob PRZED mysql_query : echo $sql i zobacz co ci pokaze przegladarka (wklej do bazy jako pytanie i zobacz co dostaniesz w odpowiedzi) -------------------- a wszystko z powodu picia podłego piva ...
|
|
|
18.09.2003, 16:48:04
Post
#16
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 0 Dołączył: 30.07.2003 Skąd: Gdynia Ostrzeżenie: (0%) |
poprawilem troche kod (bo phpmyadmin wychodzilo prawie tak jak mialo wyjsc )
[php:1:14ad22bcc2] include("config.cfg"); $db = mysql_connect("$sql_host", "$sql_user", "$sql_pass") or die(mysql_error()); mysql_select_db("$sql_base", $db) or die(mysql_error()); $sql="SELECT t.*,u.* FROM topici t LEFT OUTER JOIN users u ON t.kto=u.user_name WHERE topic_id = '$topic_id' "; $rezulat=mysql_query($sql) or die(mysql_error()); while ($row = mysql_fetch_array($rezulat)) { $nazwa_topicu=$row["nazwa_topicu"]; echo("<center>Nazwa topicu: $nazwa_topicu <hr></center>n"); $kto=$row["kto"]; $data=$row["data"]; $wpis=$row["wpis"]; $host=$row["host"]; $post_id=$row["post_id"]; $podpis=$row["u.podpis"]; echo("<tr>n<td width="60%"><p>$kto napisal: </p><p>$wpis</p></td>n <td width="10%"><p>Data: $data</p></td>"); if ($_SESSION["user_stat"] != 0) { echo("<td width="20%">n <a href="skasuj.php?id=$post_id">Skasuj topic</a><br> <a href="moderuj.php?topic=$post_id">Edytuj</a><br><p>Host: $host</p></td>"); } echo("<td><a href="odpowiedz.php?topic=$topic_id">Odpowiedz</a></td></tr>n"); }[/php:1:14ad22bcc2] i teraz mam pytanie.... jak do tego zapytania dodac jeszcze, zeby wpisy bral z tabeli posty (kolumna sie zwie odpowiedz_id i powinna byc powiazana z topic_id ) :?: [sql:1:14ad22bcc2]SELECT t.*,u.* FROM topici t LEFT OUTER JOIN users u ON t.kto=u.user_name WHERE topic_id = '$topic_id' [/sql:1:14ad22bcc2] pytam sie bo na sql'u az tak sie nie znam |
|
|
18.09.2003, 17:02:25
Post
#17
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 18.06.2003 Skąd: zaścianek Ostrzeżenie: (0%) |
jak ma byc powiazana?
odpowied_id = topic_id ? czy w posty masz topic_id i chcesz wyswietlic odpowiedz_id? a w poprzednim kodzie (przed ostatnia poprawka) miales przypisywanie $topic_id = PO $slq= gdzie wykorzystywales $topic_id,czyz nie? -------------------- a wszystko z powodu picia podłego piva ...
|
|
|
18.09.2003, 17:12:37
Post
#18
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 0 Dołączył: 30.07.2003 Skąd: Gdynia Ostrzeżenie: (0%) |
powinno byc tak
posty odpowiedz_id = topoci topic_id jedno z drugim ma byc powiazane i ma sie wyswietlac zawartosc tabeli posty o co Ci chodzi z tym poprzednim kodem :?: powyzej tego kodu mam zadeklarowane [php:1:77e5ff3587]$topic_id=$_GET["topic_id"];[/php:1:77e5ff3587] jezeli o to chodzi |
|
|
18.09.2003, 17:42:58
Post
#19
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 18.06.2003 Skąd: zaścianek Ostrzeżenie: (0%) |
try:
SELECT t.*,u.*,p.* FROM topici t, users u,posty p WHERE topic_id = '$topic_id' AND t.kto=u.user_name AND p.odpowiedz_id=t.topic_id a z poprzednim kodem oto mniej wiecej chodzi co napisales -------------------- a wszystko z powodu picia podłego piva ...
|
|
|
18.09.2003, 20:27:21
Post
#20
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 0 Dołączył: 30.07.2003 Skąd: Gdynia Ostrzeżenie: (0%) |
prawie dziala ;]
wyswietlaja mi sie posty, autorzy, topici iitp.... ale podpis bierze od goscia ktory napisal post :? jakas rada :?: |
|
|
Wersja Lo-Fi | Aktualny czas: 21.05.2024 - 13:03 |