Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Komentarze
Forum PHP.pl > Forum > Bazy danych > MySQL
Bojakki
Mam problem z wyciagnieciem odpoiwednio danych z bazy.

Otoz mam system komentarzy, dzialjacy tak:

wybieram jakis artykul o id=x i wchodze do niego. Generujaca sie strona oprocz samej tresci artykulu pobiera wszystkie komentarz do niego o id=x z drugiej tabeli
Tabela z artykulami
id tekst
1 artykul1
2 artykul2
3 artykul3
x artykul x
Tabela z komntarzami
id_art komentarz komentujacy
5 koemnatrz_do_art5 3
2 koemnatrz_do_art2 2
5 koemnatrz_do_art5 3
1 koemnatrz_do_art1 4
x koemnatrz_do_artx 2

Problem jest taki, ze w tabeli w ktorej sa owe komentarze, piszacy komentarze sa zapisywani w postaci unikalnego id, a nie nicka. Powiedzmy, ze dla danego artykulu wyszukalo 20 komentrzy. I teraz musze sie odwolac do tabeli gdzie moge owe cyferki zamienic na nicka. Tylko nie wiem jak zrobic to jednym zapytaniem,a nie dwudzistoma?
Tabela z userami
id_usera nazwa
1 XCzeslaw
2 Zenon
3 Strus
4 Rambo

Wiem, ze mozna w tabeli 2 od razu zapisywac komentujacych nicjami, a nie id nickow, ale z pewnego powodu tak zrobic nie chce. I nie wiem co zrobic by nie zasypac serwera setkami zapytan o kazdy nick oddzielnie?
AxZx
szukaj w manualu do sql hasla left join
Bojakki
No cos tam przeczytalem, ale chyba do konca nie zrouzmialem bo mi nie dziala:

  1. $id_query = mysql_query("SELECT *
  2. from komentarze
  3. LEFT JOIN userzy ON komentarze.userid=userzy.name") OR die("Error SQL");
  4. while($id_row=mysql_fetch_row($id_query))
  5. {
  6. echo $id_row[1];
  7. echo $id_row[2];
  8. }

Wyskakuje mi blad
Error SQL
Nie wiem co robie zle i czy w ogole dobrze kombinuje
Tak w ogole to nie wiem skad jest wiadomo, ktory 'userid' ma laczyc z jakim 'name':/
mike
Cytat(Bojakki @ 2006-03-11 09:57:27)
Wyskakuje mi blad
Error SQL
Nie wiem co robie zle (...)

To się dowiedz i nam powiedz:
1. mysql_error()
2. mysql_errno()
Bojakki
Eh, meczyalem sie az zrobilem w inny sposob:

  1. $c_query = mysql_query("SELECT forum_building.userid, forum_building.text, forum_building.date, forum_users.username
  2. FROM forum_building,
  3. forum_users
  4. WHERE builid=$_GET[wsk] AND forum_building.userid=forum_users.user_id
  5. ORDER BY id DESC") OR die(mysql_error());


Wszystko dziala swietnie, ale mam pytanie czy taki spsoob jest rownie szybki jak ten gdy uzywam LEFT JOIN?

I druga sparwa:

Jak mozna to zapytanie wykonac wczesniej by policzylo ilosc komentarzy, a same komentarze wyswietlilo pozniej?

Chce by wygladalo to mniej weicej tak:
  1. <?php
  2. $c_query = mysql_query("SELECT forum_b.userid, forum_building.text, forum_b.date, forum_users.usern
    ame
  3. FROM forum_b, forum_users
  4. WHERE idw=$_GET[wsk] AND forum_b.userid=forum_users.user_id
  5. ORDER BY id DESC") or die(mysql_error());
  6. while($c_row=mysql_fetch_row($c_query))
  7. $i++;
  8. echo $i;
  9. ?>
  10. //tutaj jakis tam kod html
  11.  
  12. <?php
  13. while($c_row=mysql_fetch_row($c_query))
  14. {
  15. <tr>
  16. <td>'.$c_row[3].'</td>
  17. <td'.$c_row[2].'<br>'.$c_row[1].'</td>
  18. </tr>';
  19. }
  20. ?>


Problem jest taki ze nie mozna uzywac 2 razy while dla jednego zapytania, a nie chce z tego robic dwoch zapytan:(
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.