Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> dwie tabele, jak najlepiej
P3A_MDF
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 16.12.2004

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


Mam na polibudzie zajecia z php i sql ale nie wiele tego wiec postanowilem sam sie doksztalcic. Zrobilem juz faq teraz robie bloga. Niusy do bloga laduje do tabeli blog1 a komentarze do blogkomen. Chce to wyswietlac tak ze nius a do niego ponizej komentarze i nastepny nius z komentarzami (jak wszedzie).
I dziala, ale powiedziano mi zeby robic to w ten sposob:
  1. $query = ("SELECT * FROM blog1 LEFT JOIN blogkomen ON blog1.numerniusa=blogkomen.numerkomen");

Tak wyglada kod ktory sam zrobilem:
  1. <?php
  2.  
  3. function pokazinnnna5()
  4. {
  5. echo &#092;"<b>pokazinnnna3</b><br />\";
  6. $db = mysql_connect (&#092;"localhost\",\"\", \"\") or die (\"brak połączenia z bazą\");
  7. mysql_select_db (&#092;"rel1\");
  8. //$query = (\"SELECT * FROM blog1 LEFT JOIN blogkomen ON blog1.numerniusa=blogkomen.numer
    k
  9. men\");
  10. $query = (\"SELECT * FROM blog1 ORDER BY numerniusa DESC\");
  11. $result=mysql_query ($query);
  12. print \"<TABLE ALIGN=center BORDER=0 WIDTH=80%><TR><TD ALIGN=center>Wszystkie niusy - Znaleziono \";
  13. print (mysql_numrows($result));
  14. print \" rekordów</TD></TR></TABLE><br>\";
  15. while ($wiersz=mysql_fetch_array($result) )
  16. {
  17. echo \"<br><br><b>BLOG</b> nr: \".$wiersz['numerniusa'].\"<br>tematniusa: \".$wiersz['tematniusa'].\"<br>koment: \".$wiersz['koment'].\"<br><a href=blofor_2.php?blo=dodakomid&nridbloganowy=\".$wiersz['numerniusa'].\">dodaj komentarz</a><br>\";
  18.  
  19. //--- KOMENTARZE
  20. $query1 = (\"SELECT * FROM blogkomen WHERE nriddlabloga = '\".$wiersz['numerniusa'].\"' ORDER BY numerkomen DESC\");
  21. $result1=mysql_query ($query1);
  22. while ($wiersz1=mysql_fetch_array($result1) )
  23. {
  24. $wiersz1['odpwfaq'] = ereg_replace(\"n\", \"<br>\", $wiersz1['odpwfaq']);
  25. echo \"<br>KOMENT nr: \".$wiersz1['numerkomen'].\"<br>ktokom: \".$wiersz1['ktokom'].\"<br>komentblog: \".$wiersz1['komentblog'].\"<br>\";
  26. }
  27. //---- KOMENTARZE
  28. }
  29. mysql_close($db);
  30. }
  31.  
  32. ?>

Czy robie to dobrze? Czy mozna zrobic lepiej ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
oldek
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 7.06.2004

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


Jest dobrze, czyli źle. Dobrze jest wtedy kiedy masz 2 blogi i 5 komentarzy. Źle gdy blogów będzie 5000 a komentarzy 100000, wtedy komputer klęknie a użytkownik zaśnie.

Co zrobić? Podzielic to na 2 skrypty.
W pierwszym przeglądasz tylko blogi, po 20-30 na jednej stronie, z możliwością odwołania się do siebie po to by pokazać następną lub poprzednią porcję (w SELECT użyj klauzuli LIMIT z parametrem przekazywanym z wywołującego formularza).

Drugi skrypt uruchamiasz po kliknięciu odnośnika wygenerowanego w pierwszym, poda on komentarze do wskazanego bloga (najlepiej w nowym oknie target=_blank). Jeśli przewidujesz że będzie tego dużo, to porcjonowanie także by się przydało.

BTW, 'leftjoin' zalatuje mi Accessem, czy się mylę? (IMG:http://forum.php.pl/style_emoticons/default/cool.gif)
Go to the top of the page
+Quote Post
LukaszLenart
post
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 22.11.2003
Skąd: Sucha Beskidzka

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


Cytat(oldek @ 2004-12-18 22:55:38)
BTW, 'leftjoin' zalatuje mi Accessem, czy się mylę? (IMG:http://forum.php.pl/style_emoticons/default/cool.gif)

Mylisz sie, LEFT JOIN jest standardem SQLa, a MySQL jest optymalizowany pod wykonywanie zlaczen (LEFT JOIN ROGHT JOIN, etc).

Poza tym podzial na strony jest wskazany
Go to the top of the page
+Quote Post
P3A_MDF
post
Post #4





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 16.12.2004

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


Czy pole w tabeli komentarze ktore okresla do ktorego nisua bloga odnosi sie komentarz powinno miec jakies okreslone wlasciwosci?
Czy wystarczy ze bedzie poprostu INTEGER np. (doktoregoniusa INT) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Nie wiem tez jak poprawnie sprawdzac czy pole jest puste czy nie (np. pole mail). Wartosc domyslna jest ustawiona.
Go to the top of the page
+Quote Post
LukaszLenart
post
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 22.11.2003
Skąd: Sucha Beskidzka

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


Klucze powinny miec taka sama wielkosc, wiec jesli w tabeli blog masz bolg_id int(3) to w tabeli komentarzy powinienies tez miec blog_id int(3). Zlaczenia na takich samych wielkosciach pola sa szybsze (dlatego dla kluczy varchar warto ustawic zero-fill, aby dopelniac wartos w polu zerami - choc obsluga tego jest meczaca)

Sparwdzaj wartosc domyslna
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 - 19:32