Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wyswietlanie komentarzy, w systemie newsow...
SoulRipper
post 1.12.2004, 22:44:03
Post #1





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 15.03.2003
Skąd: lodz

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


Witam

Majac ostatnio nieco wolnego czasu postanowilem zabrac sie za swoj system newsow oparty na mysql.Wszystko przebiegalo bez problemu do momentu kiedy musialem napisac fragment kodu odpowiedzialny za wyswietlanie komentarzy do newsow.

tabela w ktorej sa zapisywane rekordy z komentarzami wyglada tak:

| ID | ID_NEWSA | AUTOR | TEXT | MAIL | DATA |
| | | | | | |

problem polega na tym ze gdy probuje pobrac komentarze i wyswietlic je,
wyswietlanu jest tylko pierwszy komentarz(z 4 roznych komentarzy o tym samym "id_newsa") 4-krotnie

zapytanie odbywa sie przez :

  1. <?php
  2.  
  3. $query = mysql_query(&#092;" SELECT * FROM comment where id_newsa = '$id_newsa'\");
  4.  
  5. ?>


nastepnie komentarze sa wyswietlane za pomoca funkcji: mysql_fetch_array().

Mam nadzieje, ze wystarczajaco objasnilem problem, i ze bedziecie w stanie mi pomoc.

Z gory dzieki
Go to the top of the page
+Quote Post
Spirit86
post 1.12.2004, 23:26:01
Post #2





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


musisz użyć pętli, aby wypisać wszystkie komentarze, np. while:

  1. <?php
  2.  
  3. while($re = mysql_fetch_array($query)){
  4. bla bla bla
  5. }
  6.  
  7. ?>


pisałem z głowy, bez testowania, więc może nie dizałać smile.gif


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
Ive
post 1.12.2004, 23:30:53
Post #3





Grupa: Zarejestrowani
Postów: 352
Pomógł: 1
Dołączył: 17.07.2003
Skąd: Kazanów

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


w petli stosujesz ten mysql_fetch_array() ? wklej caly kod odpowiedzialny za wyswietlanie bo nie do konca mozna zrozumiec ;]
Go to the top of the page
+Quote Post
Aztech
post 2.12.2004, 02:52:22
Post #4





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


Po pierwsze:

  1. <?php
  2.  
  3. $query = mysql_query(&#092;" SELECT * FROM comment where id_newsa = \".$id_newsa);
  4.  
  5. ?>


plus to co napisał Spirit

np tak żeby było jasno biggrin.gif:

  1. <?php
  2. $i = 0;
  3. while($re = mysql_fetch_array($query)){
  4. $i++;
  5.  echo $i.&#092;" jakis tekst\".$re[\"Autor\"].\" - \".$re[\"tekst\"]
  6. }
  7.  
  8. ?>
Go to the top of the page
+Quote Post
SoulRipper
post 2.12.2004, 12:51:08
Post #5





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 15.03.2003
Skąd: lodz

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


  1. <?php
  2.  
  3.  
  4. include &#092;"../../code.php\";
  5. include &#092;"conf.php\";
  6. con();
  7.  
  8. $id_newsa = $_GET['id'];
  9. $query = mysql_query(&#092;"select * from comment where id_newsa = '$id_newsa'\");
  10. $count = mysql_num_rows($query);
  11. $start = 0 ;
  12.  
  13. while($start<$count)
  14. {
  15. $start++;
  16.  $query1 = mysql_query(&#092;"select * from comment where id_newsa='$id_newsa'\");
  17.  $result = mysql_fetch_array($query1);
  18.  echo 
  19.  
  20. &#092;"<table width='400' border='1' align=center>
  21. <tr><td colspan=3>&nbsp;&nbsp;&nbsp;&nbsp;$result[4]</td></tr>
  22. <tr>
  23. <td height=50 width=100>$result[2]</td>
  24. <td width=100>$result[3]</td>
  25. <td width=200>$result[5]</td>
  26. </tr>
  27.  <BR>
  28.  
  29. </table>&#092;" ;
  30.  
  31. }
  32.  
  33.  
  34. /* dodanie komenta */ 
  35. echo &#092;"
  36. <form action='parse.php' method='post'>
  37. <input type='hidden' name='id_newsa' value='$id_newsa'>
  38. <table cellpadding='0' cellspacing='0' border='0' align='center' width='600' height='100'>
  39. <tr>
  40. <td height='50' align='right'>
  41. Autor:<BR>
  42. E-mail:
  43. </td>
  44. <td>
  45. <input type='text' name='autor' size='8'><BR>
  46. <input type='text' name='mail' size='8'>
  47. </td>
  48. </tr>
  49. <tr>
  50. <td valign='top' align='right'>
  51. Tresc:
  52. </td>
  53. <td>
  54. <textarea rows='5' cols='20' name='comment' ></textarea><BR>
  55. </td>
  56. </tr>
  57. <tr>
  58. <td>
  59. </td>
  60. <td height='50'>
  61. <input type='submit' name='dodaj' value='Dodaj'>
  62. </td>
  63.  
  64. </tr>
  65. </table>
  66. </form>
  67. &#092;";
  68.  
  69. ?>


Prawdopodobnie przyczepicie sie do tego, wykonalem 2 identyczne zapytania.
1 query ma na celu pobranie ilosci rekordow z komentarzami do konkretnego newsa (id_newsa) poprzez mysql_num_rows. Pozniej zmienna zawierajaca licczbe wierszy ustala ile razy ma byc wykonana petla w ktorej jest zawarty kod wyswietlania poszczegolnych komentarzy.

Wprawdzie mam pomysl na rozwanie tego problemu poprzez dodanie jeszcze jeszcze jednej kolumny w tabeli z komentarzami do ktorej zapisywane bylyby
id komenta wzgledem konkretnego newsa(czyli jak dodano 2 komentarze to id_commenta wynosilby 2 ).Jednak nie chce tego robic bo to nie bylby sposob na nauke sql`a.Pewnie da sie to latwo i przyjemnie srobic niekoniecznie korzystajac z mysql_fetch_array();
Go to the top of the page
+Quote Post
slepy
post 2.12.2004, 13:36:30
Post #6





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 27.02.2003

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


Nie rozumiem czego zamiast tego:
  1. <?php
  2.  
  3.  
  4. while($start<$count)
  5. {
  6. $start++;
  7. $query1 = mysql_query(&#092;"select * from comment where id_newsa='$id_newsa'\");
  8. $result = mysql_fetch_array($query1);
  9.  
  10. &#092;"<table width='400' border='1' align=center>
  11. <tr><td colspan=3>&nbsp;&nbsp;&nbsp;&nbsp;$result[4]</td></tr>
  12. <tr>
  13. <td height=50 width=100>$result[2]</td>
  14. <td width=100>$result[3]</td>
  15. <td width=200>$result[5]</td>
  16. </tr>
  17.  <BR>
  18.  
  19. </table>&#092;" ;
  20.  
  21. }
  22.  
  23. ?>

NIe zrobisz tak:
  1. <?php
  2.  
  3. while($result = mysql_fetch_array($query))
  4. {
  5.  
  6. &#092;"<table width='400' border='1' align=center>
  7. <tr><td colspan=3>&nbsp;&nbsp;&nbsp;&nbsp;$result[4]</td></tr>
  8. <tr>
  9. <td height=50 width=100>$result[2]</td>
  10. <td width=100>$result[3]</td>
  11. <td width=200>$result[5]</td>
  12. </tr>
  13.  <BR>
  14.  
  15. </table>&#092;" ;
  16. }
  17.  
  18. ?>


Jedna petla żadne zmiene $start ani $cout nie są CI potrzebne..
Go to the top of the page
+Quote Post
SoulRipper
post 2.12.2004, 14:27:04
Post #7





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 15.03.2003
Skąd: lodz

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


no dobra to jest raczej rozwiazanie estetyczne nijak wplywajace na moj problem.
Mimo to dzieki za rade
Go to the top of the page
+Quote Post
Ive
post 2.12.2004, 15:25:55
Post #8





Grupa: Zarejestrowani
Postów: 352
Pomógł: 1
Dołączył: 17.07.2003
Skąd: Kazanów

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


estetyczne?! człowieku to znacznie poprawi predkosc wyswietlania danych ... przeciez wykonywanie np. 30x jednego zapytania zajmie wiecej czasu niz zastosowanie tego zapytania 1x a potem
while($cz=mysql_fetch_array($query))
tylko
Go to the top of the page
+Quote Post
Spirit86
post 2.12.2004, 16:51:17
Post #9





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


Cytat(Ive @ 2004-12-02 14:25:55)
estetyczne?! człowieku to znacznie poprawi predkosc wyswietlania danych ... przeciez wykonywanie np. 30x jednego zapytania zajmie wiecej czasu niz zastosowanie tego zapytania 1x a potem
while($cz=mysql_fetch_array($query))
tylko

święta prawda, wyobraź sobie, że serwis dobrze prosperuje, użytkownicy dużo komentują, piszą po 300 komentarzy (marzenia rolleyes.gif ) do jednego newsa. I załóżmy, że stronę z tymi komentarzami ogląda 100 osób. teraz pomnóż sobie 300 zapytań * 100 użytkowników = zapchanie serwera. A tak masz tylko ( rolleyes.gif ) 100 zapytań.

Ten post edytował Spirit86 2.12.2004, 16:52:28


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post

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: 23.06.2025 - 18:38