Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyswietlanie komentarzy artykulow
graf
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 24.04.2007

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


Wiatm,

druga moja prosba o pomoc:

Mam skrypt ktory wyswietla 5 najnowszych artykulow do ktorych dodano komentarz.
W ponizszym skrypcie niestety jeden artykul pojawia sie tyle razy ile dodano nowych komentarzy.
Jesli dodano nowych 10 komentarzy do jednego artykulu - wtedy liste zapelnia jeden artykul w 5 pozycjach (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

  1. <?
  2.  
  3.  
  4. if($_SESSION['lang'] == 'pl' or !isset($_SESSION['lang']))
  5.  {
  6. $art_kategorie = "art";
  7.  }
  8. else
  9.  {
  10. $art_kategorie = "";
  11.  }
  12. $q = mysql_query("SELECT * FROM komentarze WHERE gdzie='".$art_kategorie."' AND par!='mod' ORDER BY data DESC LIMIT 5");
  13.  
  14. echo "<ul type='square'>";
  15. while($row = mysql_fetch_array($q))
  16.  {
  17.  
  18.  echo ""; if($row['par'] == 'mod') { echo "";
  19. }
  20.  
  21.  if($row['gdzie'] == 'art')
  22. {
  23. $art = mysql_query("SELECT id, tytul FROM artykuly WHERE id='$row[id_s]' AND par='' LIMIT 1");
  24. $art = mysql_fetch_row($art);
  25.  echo "<tr><td style='font-family: Verdana; font-size: 11px; color: black;'><a href='art.php?id=$art[0]'><P style='margin-left:20px; margin-top:5px;'>";
  26. if(strlen($row[tresc]) <= '40') { echo stripslashes("$row[tresc]"); }
  27. else { echo stripslashes(substr("$row[tresc]", 0, 40))."..."; }
  28. echo "</a></td></tr>";
  29.  
  30. //if(strlen($art[1]) <= '20') { echo stripslashes("$art[1]"); }
  31.  // else { echo stripslashes(substr("$art[1]", 0, 20))."..."; }
  32.  
  33. echo "<tr><td style='font-family: Verdana; font-size: 11px; color: black;'> <P style='margin-left:20px; margin-top:0px;'><a href='art.php?id=$art[0]' /><font style='color: black;'><strong>Artykuł: </strong>$art[1]</font></a> <a href='art.php?id=$art[0]'><font style='color: gray'>[".mysql_num_rows(mysql_query("SELECT id_s, gdzie FROM komentarze WHERE gdzie='art' AND id_s='$art[0]' AND par=''"))."] [...]</font></a>";
  34. }
  35.  elseif($row['gdzie'] == 'galeria')
  36. {
  37. $art = mysql_query("SELECT id, tytul FROM galeria WHERE id='$row[id_s]' AND par='' LIMIT 1");
  38. $art = mysql_fetch_row($art);
  39. echo "<a href='temp_.php?page=galeria&galeria=".$art['0']."' target='_blank'>".$art['1']."</a>";
  40. }
  41. elseif($row['gdzie'] == 'turystyka_miasta')
  42. {
  43. $art = mysql_query("SELECT id, nazwa FROM turystyka_miasta WHERE id='$row[id_s]' AND par='' LIMIT 1");
  44. $art = mysql_fetch_row($art);
  45. echo "Turystyka-miasta: <a href='art_turystyka.php?id=$art[0]' target='_blank'>$art[1]</a></a>";
  46. }
  47.  elseif($row['gdzie'] == 'pb')
  48. {
  49.  
  50. $art = mysql_fetch_assoc(mysql_query("SELECT * FROM `pb_firmy` WHERE `id`='".$row['id_s']."' AND par=''"));
  51. echo "<a href='temp_.php?page=katalog_firm&show_comp=".$row['id_s']."'>".$art['nazwa']."</a>";
  52. }
  53. echo "</td></tr><tr><td style='border-left-width: 1px; border-right-width: 1px; border-top: 1px solid #000000; border-bottom-width: 1px;'></td></tr>";
  54. }
  55.  
  56.  
  57.  
  58. echo '</ul>';
  59.  
  60.  
  61.  
  62.  
  63. ?>


Dodalem wiec GROUP BY id_s HAVING:
  1. <?
  2.  
  3.  
  4. if($_SESSION['lang'] == 'pl' or !isset($_SESSION['lang']))
  5.  {
  6. $art_kategorie = "art";
  7.  }
  8. else
  9.  {
  10. $art_kategorie = "";
  11.  }
  12. $q = mysql_query("SELECT id, tresc, gdzie, par, id_s, data FROM komentarze GROUP BY id_s HAVI
    NG gdzie='"
    .$art_kategorie."' AND par!='mod' ORDER BY data DESC LIMIT 10");
  13.  
  14. echo "<ul type='square'>";
  15. while($row = mysql_fetch_array($q))
  16.  {
  17. // echo "<tr><td style='font-family: Verdana; font-size: 11px; color: black;'><a href='art.php?id=$art[0]'><P style='margin-left:20px; margin-top:5px;'>";
  18. // if(strlen($row[tresc]) <= '40') { echo stripslashes("$row[tresc]"); }
  19. // else { echo stripslashes(substr("$row[tresc]", 0, 40))."..."; }
  20. // echo "</a></td></tr>";
  21.  echo ""; if($row['par'] == 'mod') { echo "";
  22. }
  23.  
  24.  if($row['gdzie'] == 'art')
  25. {
  26. $art = mysql_query("SELECT id, tytul FROM artykuly WHERE id='$row[id_s]' AND par='' LIMIT 1");
  27. $art = mysql_fetch_row($art);
  28.  
  29.  
  30. //if(strlen($art[1]) <= '20') { echo stripslashes("$art[1]"); }
  31.  // else { echo stripslashes(substr("$art[1]", 0, 20))."..."; }
  32.  
  33. echo "<tr><td style='font-family: Verdana; font-size: 11px; color: black;'> <P style='margin-left:20px; margin-top:0px;'><a href='art.php?id=$art[0]' />$art[1] <font style='color: gray'>[".mysql_num_rows(mysql_query("SELECT id_s, gdzie FROM komentarze WHERE gdzie='art' AND id_s='$art[0]' AND par=''"))."] [...]</font></a>";
  34. }
  35.  elseif($row['gdzie'] == 'galeria')
  36. {
  37. $art = mysql_query("SELECT id, tytul FROM galeria WHERE id='$row[id_s]' AND par='' LIMIT 1");
  38. $art = mysql_fetch_row($art);
  39. echo "<a href='temp_.php?page=galeria&galeria=".$art['0']."' target='_blank'>".$art['1']."</a>";
  40. }
  41. elseif($row['gdzie'] == 'turystyka_miasta')
  42. {
  43. $art = mysql_query("SELECT id, nazwa FROM turystyka_miasta WHERE id='$row[id_s]' AND par='' LIMIT 1");
  44. $art = mysql_fetch_row($art);
  45. echo "Turystyka-miasta: <a href='art_turystyka.php?id=$art[0]' target='_blank'>$art[1]</a></a>";
  46. }
  47.  elseif($row['gdzie'] == 'pb')
  48. {
  49.  
  50. $art = mysql_fetch_assoc(mysql_query("SELECT * FROM `pb_firmy` WHERE `id`='".$row['id_s']."' AND par=''"));
  51. echo "<a href='temp_.php?page=katalog_firm&show_comp=".$row['id_s']."'>".$art['nazwa']."</a>";
  52. }
  53. echo "</td></tr><tr><td style='border-left-width: 1px; border-right-width: 1px; border-top: 1px solid #000000; border-bottom-width: 1px;'></td></tr>";
  54. }
  55.  
  56.  
  57.  
  58. echo '</ul>';
  59.  
  60.  
  61.  
  62.  
  63. ?>


no i w efekcie udalo sie prezentowac jeden tytul artykulu tylko jeden raz, ale pojawil sie inny problem.
Mianowicie taki:
Jesli dodamy komentarz do artykulu ktory mial juz wczesniej dodany komentarz wtedy artykul nie wskakuje
na pierwsze miejsce listy. Wyglada na to skrypt prezentuje pogrupowane artykuly biorac pod uwage pierwszy dodany komentarz a nie ten najnowszy.

Moze wiecie jak to rozwiazac ?

Ten post edytował graf 24.04.2007, 21:01:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
graf
post
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 24.04.2007

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


wiec wyglada to prawie tak jak napisales:
Tabela artykuly:
id, tytul
Tabela komentarze:
id, id_s, data

komentarze maja jeszcze status aktywny i nieaktywny: "par" oraz "gdzie" ktory ma zwiazek z przypisaniem komentarzy do galerii czy artykulow.

Mam cos takiego:

  1. <?php
  2. $q = mysql_query("SELECT id, tresc, gdzie, par, id_s, data FROM komentarze GROUP BY id_s HAVI
    NG gdzie='art' AND par!='mod' ORDER BY data DESC LIMIT 5"
    );
  3.  
  4. while($row = mysql_fetch_array($q))
  5.  
  6. // i dalej
  7.  
  8. if($row['par'] == 'mod') { echo "";
  9. }
  10.  
  11.  if($row['gdzie'] == 'art')
  12. {
  13. $art = mysql_query("SELECT id, tytul FROM artykuly WHERE id='$row[id_s]' AND par='' LIMIT 1");
  14. $art = mysql_fetch_row($art);
  15.  
  16. $row[tresc] //wyswietla komentarz
  17. $art[1] //wyswietla tytul artykulu
  18. ?>




... nie wiem jak wykorzystac Twoja podpowiedz Sedziwoj:

  1. SELECT * FROM (SELECT `artykul_id`, max(`data`) AS `maks` FROM `komentarz` GROUP BY `artykul_id` ORDER BY `maks` LIMIT 5)
  2. AS `naj` LEFT JOIN `artykul` ON (`naj`.`artykul_id`=`artykul`.`id`);


Kombinuje i gdzies mam caly czas blad (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

  1. <?php
  2. $q = mysql_query("SELECT * FROM (SELECT `id_s`, max(`data`) AS `maks` FROM `komentarze` GROUP BY `id_s` ORDER BY `maks` LIMIT 5)");
  3. AS `naj` LEFT JOIN `artykuly` ON (`naj`.`id_s`=`artykuly`.`id`);
  4.  
  5. while($row = mysql_fetch_array($q))
  6.  
  7. // i dalej
  8.  
  9. if($row['par'] == 'mod') { echo "";
  10. }
  11.  
  12.  if($row['gdzie'] == 'art')
  13. {
  14. $art = mysql_query("SELECT id, tytul FROM artykuly WHERE id='$row[id_s]' AND par='' LIMIT 1");
  15. $art = mysql_fetch_row($art);
  16.  
  17. $row[tresc] //wyswietla komentarz
  18. $art[1] // wyswietla tytul artykulu
  19. ?>


Ten post edytował graf 24.04.2007, 22:55:37
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 12:38