Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> jak wyciagnac dane z dwoch tabel naraz?
noose
post 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 smile.gif
Dzisiaj dysponuje takim czyms. pisze wlasne forum i z wiadomych powodow potrzebuje, aby mozna bylo wyciagac dane z dwoch tabel na raz winksmiley.jpg moze opisze to jasniej winksmiley.jpg

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 winksmiley.jpg jak to zrobic :?: bo ja mysle juz dwa dni i jakos nie moge wpasc na to (moze to przez niewyspanie :?: :?: winksmiley.jpg)
z gory thx winksmiley.jpg
podro 4 @ll
Go to the top of the page
+Quote Post
adwol
post 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 winksmiley.jpg

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.
Go to the top of the page
+Quote Post
noose
post 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 winksmiley.jpg

[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 :?: winksmiley.jpg
Go to the top of the page
+Quote Post
sivyer
post 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?
Go to the top of the page
+Quote Post
noose
post 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 sad.gif no i gdzie to wsadzic w kodzie :?: :?:
Go to the top of the page
+Quote Post
adwol
post 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 :?: winksmiley.jpg

Tam gdzie masz zapytania czyli w liniach 16 i 36.
Go to the top of the page
+Quote Post
noose
post 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 sad.gif w ogole mi nie lapie niczego sad.gif

[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 :?:
Go to the top of the page
+Quote Post
Gumiak
post 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
Go to the top of the page
+Quote Post
Gumiak
post 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&para;li nie ma wpisow w tabeli 'newsy' to informuje, ze brak wiadomosci

if ($rows == 0) { echo "Nie ma jeszcze żadnych wiadomo&para;ci"; }



// je&para;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>";

}

}
Go to the top of the page
+Quote Post
noose
post 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:(
Go to the top of the page
+Quote Post
FiDO
post 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..
Go to the top of the page
+Quote Post
noose
post 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 sad.gif
Go to the top of the page
+Quote Post
uboottd
post 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%)
-----


http://forum.php.pl/viewtopic.php?t=789

oraz na pewno podajesz id topicu istniejacego w bazie ?
Go to the top of the page
+Quote Post
noose
post 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 smile.gif mam je zadeklarowane w innym kawalku kodu (jak sie strona zaczyna tongue.gif). id_topicu istnieje .... :?

edit: jest poprawa tongue.gif 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 sad.gif
Go to the top of the page
+Quote Post
xamel
post 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 ...
Go to the top of the page
+Quote Post
noose
post 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 tongue.gif)
[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 sad.gif
Go to the top of the page
+Quote Post
xamel
post 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 ...
Go to the top of the page
+Quote Post
noose
post 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 tongue.gif
Go to the top of the page
+Quote Post
xamel
post 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 ...
Go to the top of the page
+Quote Post
noose
post 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 :?:
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.05.2024 - 13:03