Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Logiczny problem z wyświetleniem rekordu, Proszę o pomoc.
Ramzaa
post
Post #1





Grupa: Zarejestrowani
Postów: 207
Pomógł: 17
Dołączył: 4.08.2009

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


Już mnie to dobija, siedzę nad tym drugi dzień i ciągle nie mam pomysłu jak zrobić, żeby wyświetlało ilość postów, oczywiście z bazy danych mysql. Dodawać dodaje pięknie, wyświetlić co prawda wiem jak, ale tylko w profilu użytkownika (piszę skrypt forum), bo tam w warunku WHERE daje $user_login, gdzie $user_login to po prostu $_GET['name]. Teraz jak zrobić, żeby wyświetlało się to w odpowiedziach, zaraz pod loginem użytkownika?

Tabela uzytkownicy wygląda tak:

Cytat
id | name | password | date_join | grupa | posts


Mam nadzieję, że mnie zrozumieliście. Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dg2001
post
Post #2





Grupa: Zarejestrowani
Postów: 71
Pomógł: 12
Dołączył: 9.01.2008
Skąd: Olkusz

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


Przerobiłem sobie ten twój kod tak aby był bardziej czytelny dla mnie, i trochę masz tam kaszane, nie do końca wiem jak ci pomóc z tego co przeanalizowałem sobie to w kodzie masz takie coś (poniżej) odpowiedzialne za wyświetlanie odpowiedzi dla danego tematu:
  1. <?php
  2. $odpp = mysql_query("SELECT * FROM odpowiedzi WHERE `id_thread`='$id'");
  3. while ($odpw = mysql_fetch_assoc($odpp)) {
  4. echo ('
  5. <tr><td colspan="2" style="background-color: #5684ae">Odpowiedź na: '.$wiersz['temat'].' | '.$odpw['date_reply'].'</td></tr>
  6. <tr style="background-color: #cfe2ff;">
  7. <td width="20%" valign="top"><a href="index.php?action=showprofile&name='.$odpw['autor_reply'].'">'.$odpw['autor_reply'].'</a><br /><br />Posty: '.$user_info['posts'].'<br />Dołączył: '.$user_info['date_join'].'</td>
  8. <td width="80%" valign="top" style="padding: 7px;">'.nl2br($odpw['post_reply']).'<br /><br /></td>
  9. </tr>
  10. <tr style="background-color: #5684ae; padding: 5px; height: 13px;">
  11. <td colspan="2">Post: #ID '.$odpw['id_thread'].'</td>
  12. </tr>
  13. <tr><td></td></tr>
  14. ');
  15. }
  16. ?>


Tutaj próbujesz pobrać informacje na temat usera który dodał odpowiedz do tematu poprzez zmienne $user_info['posts'], jednak z tego co wyżej wynika, to pobierasz je dla usera $user_name = "Mistrzu". Jeżeli on jest tym co odpowiedział a nie jest on osobą zalogowaną ($log_user = $_SESSION['login'](IMG:style_emoticons/default/winksmiley.jpg) to w tym momencie kiedy pobierasz z tabeli 'uzytkownicy' jego dane powinieneś dodać polecenie wyszukujące w bazie jego posty, jednak tu też się pojawia problem, gdyż z tego co zauważyłem masz 2 tablice, tablice gdzie są trzymane ogólnie tematy (czyli: 'tematy') oraz tabele gdzie są trzymane odpowiedzi (czyli: 'odpowiedzi').

W takim przypadku aby zliczyć łączną sumę jego postów w tabeli 'tematy' i 'odpowiedzi' musisz zrobić zapytanie łączące czyli:
  1. $zapytanie = mysql_query("SELECT id FROM 'tematy', 'odpowiedzi' WHERE 'name' = '$user_name'");
  2. $ile = mysql_num_rows($zapytanie);


Ale tak jak piszę ciężko dojść do tego co i jak jest w kodzie, ewentualnie nanieś komentarze gdzie dokładnie ma się znaleźć ta ilość postów tego danego usera.

Po jeszcze bardziej wnikliwej analizie poniżej masz kod, co powinien ci policzyć to co chcesz (IMG:style_emoticons/default/winksmiley.jpg)

  1. <?php
  2. include ('baza.php');
  3. include ('functions.php');
  4.  
  5. $id = $_GET['id'];
  6. $wiersze = mysql_query("SELECT * FROM tematy WHERE id='".$id."'");
  7. while ($wiersz = mysql_fetch_assoc($wiersze)){
  8. //$autor_posta_reply = $wiersz['autor']; //to tez nie wiem po co, zawsze można użyć odwołania do $wiersz['autor']
  9. //$poster = $wiersz['autor']; //to tez nie wiem po co, zawsze można użyć odwołania do $wiersz['autor']
  10.  
  11. //pobieranie danych na temat autora postu
  12. $user_wierszSql = mysql_query("SELECT * FROM uzytkownicy WHERE name = '".$wiersz['autor']."' ");
  13.  
  14. //tu nie musisz wrzucać tego w pętle while gdyż i tak wybierze ci 1 pozycje, chyba że dopuszczasz możliwość 2 autorów o tym samej nazwie
  15. $user_wierszDane = mysql_fetch_assoc($user_wierszSql);
  16. $ile_postow1 = mysql_query("SELECT * FROM tematy WHERE autor = '".$user_wierszDane['name']."' ");
  17. $ile_postow2 = mysql_query("SELECT * FROM odpowiedzi WHERE autor_reply = '".$user_wierszDane['name']."' ");
  18. $suma_postow = mysql_num_rows($ile_postow1) + mysql_num_rows($ile_postow2);
  19. ?>
  20. | <a href="index.php?action=thread&id=<?php echo $id; ?>&option=reply">Odpowiedz</a><br /><br />
  21. <table border="0" width="100%" cellspacing="1">
  22. <tr>
  23. <td colspan="3" width="100%" style="border: 1px solid #000; background-color: #5684ae; padding: 5px; height: 40px;"><a href="index.php">Index</a> > <?php echo $wiersz['temat']; ?></td>
  24. </tr>
  25. <tr style="background-color: #cfe2ff;">
  26. <td width="20%" valign="top"><a href="index.php?action=showprofile&name=<?php echo $user_wierszDane['name']; ?>"><?php echo $user_wierszDane['name']; ?></a><br /><br />Posty: <?php echo $suma_postow; ?><br />Dołączył: <?php echo $user_wierszDane['date_join']; ?></td>
  27. <td width="80%" valign="top" style="padding: 7px;"><?php echo nl2br($wiersz['post']); ?><br />
  28. <div style="text-align: right;"><a href="index.php?action=thread&id=<?php echo $wiersz['id']; ?>&option=edit-thread">Edytuj</a></td>
  29. </tr>
  30. <tr style="background-color: #5684ae; padding: 5px; height: 13px;">
  31. <td colspan="2">Post: #ID</td>
  32. </tr>
  33. <tr><td></td></tr>
  34. <?php
  35.  
  36. //odpowiedzi
  37. $odpp = mysql_query("SELECT * FROM odpowiedzi WHERE id_thread='$id'");
  38. while ($odpw = mysql_fetch_assoc($odpp)) {
  39. $user_odpSql = mysql_query("SELECT * FROM uzytkownicy WHERE name = '".$odpw['autor_reply']."' ");
  40. $user_odpDane = mysql_fetch_assoc($user_odpSql);
  41.  
  42. $ile_postow1 = mysql_query("SELECT * FROM tematy WHERE autor = '".$user_odpDane['name']."' ");
  43. $ile_postow2 = mysql_query("SELECT * FROM odpowiedzi WHERE autor_reply = '".$user_odpDane['name']."' ");
  44. $suma_postow = mysql_num_rows($ile_postow1) + mysql_num_rows($ile_postow2);
  45.  
  46. echo '<tr><td colspan="2" style="background-color: #5684ae">Odpowiedź na: '.$wiersz['temat'].' | '.$odpw['date_reply'].'</td></tr>
  47. <tr style="background-color: #cfe2ff;">
  48. <td width="20%" valign="top"><a href="index.php?action=showprofile&name='.$user_odpDane['name'].'">'.$user_odpDane['name'].'</a><br /><br />Posty: '.$suma_postow.'<br />Dołączył: '.$user_odpDane['date_join'].'</td>
  49. <td width="80%" valign="top" style="padding: 7px;">'.nl2br($odpw['post_reply']).'<br /><br /></td>
  50. </tr>
  51. <tr style="background-color: #5684ae; padding: 5px; height: 13px;">
  52. <td colspan="2">Post: #ID '.$odpw['id_thread'].'</td>
  53. </tr>
  54. <tr><td></td></tr>
  55. ';
  56. }
  57. ?>
  58. </table>
  59. <?php
  60.  
  61. showPostReplyForm();
  62. }
  63. ?>
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: 15.09.2025 - 09:58