Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Komentarze
Bojakki
post
Post #1





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
AxZx
post
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


szukaj w manualu do sql hasla left join
Go to the top of the page
+Quote Post
Bojakki
post
Post #3





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

Ostrzeżenie: (0%)
-----


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':/

Ten post edytował Bojakki 11.03.2006, 09:58:52
Go to the top of the page
+Quote Post
mike
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


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()
Go to the top of the page
+Quote Post
Bojakki
post
Post #5





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

Ostrzeżenie: (0%)
-----


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:(
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 11:57