Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysyłanie komentarzy do bazy
Forum PHP.pl > Forum > PHP
jarek0203
Witam. Mam problem z wysyłaniem komentarzy do bazy. Mam podobnie jak na np.FB tzn wyświetla się post a pod nim komentarze niżej straszy post itd. Kiedy chce wysłać kom z poziomu np najnowszego postu to dodaje mi się do każdego postu. Jak pobrać id_postu do którego chce dodać komentarz? Albo jakieś inne rozwiązanie?

  1. /---------------laczenie z baza
  2.  
  3. @mysql_connect("localhost","root","linkin11","mysql")
  4. or die('Błąd - Nie połączono z Bazą Danych - prawdopodobnie podałeś złe Dane.');
  5. @mysql_select_db("mysql")
  6. or die('Błąd - Nie wybrano bazy danych - prawdopodobnie podałeś złe Dane.');
  7. //---------------dodawanie postow
  8. $id_admina=1;
  9. $post = $_POST['post'];
  10. if(empty($post))
  11. {
  12. echo $uzytkownicy[$_SESSION['uzytkownik']]['login'];
  13. echo '<form action="" method="post">
  14. <textarea name="post" /*onfocus="if
  15. (this.value == \'Treść postu...\') { this.value = \'\'; }" onblur="if(this.value==\'\')
  16. { this.value=\'Treść postu...\'; }">postu...</textarea><br>
  17. <input type="submit" value="Wyślij post"></form>' ;
  18.  
  19. }
  20. else
  21. {
  22. $dodaj_post = mysql_query("INSERT INTO posty (id_post,id_admin,post) VALUES ('','$id_admina','$post')");
  23. if($dodaj_post == true)
  24. {echo("Post został dodany<br><br>"); }
  25. else
  26. {echo("Post nie został dodany<br><br>");}
  27. }
  28.  
  29. ?>
  30. </div>
  31.  
  32. <div id="glowna">
  33. <?php
  34.  
  35. //-----------------wyswietlanie postow
  36.  
  37. $wyswietl_posty = mysql_query("SELECT * FROM posty order by id_post DESC LIMIT 500");
  38. while($pokaz = mysql_fetch_array($wyswietl_posty))
  39. {
  40. //$admin= mysql_query( "SELECT * FROM uzytkownicy,posty WHERE id='$id_admin' ");
  41. $admin= mysql_query( "SELECT * FROM uzytkownicy WHERE id=1 ");
  42. while($p_login = mysql_fetch_array($admin))
  43. {
  44. $login= $p_login['login'];
  45. }
  46. $id_post= $pokaz['id_post'];
  47. $id_admin= $pokaz['id_admin'];
  48. $id_post_pl = htmlentities($id_post, ENT_COMPAT, "UTF-8");
  49. $post=$pokaz['post'] ;
  50. $post_pl= htmlentities($post, ENT_COMPAT, "UTF-8");
  51. echo "<b>$login</b>,napisał:<br>$post_pl<br><br>";
  52. $index++;
  53. echo "index to".$index;
  54.  
  55. //---------wyswieltlenie id loginu
  56. $sesja_login= $uzytkownicy[$_SESSION['uzytkownik']]['login'];
  57. //echo 'login zalogowanego uzytkownika to' .$sesja_login;
  58. echo '<br>' ;
  59. $wyswietl_id= mysql_query( "SELECT * FROM uzytkownicy WHERE login='$sesja_login' ");
  60. while($pokaz_id = mysql_fetch_array($wyswietl_id))
  61. {
  62. $id=$pokaz_id['id'];
  63. echo $id;
  64. }
  65. //----------------wyswietlanie komentarzy
  66.  
  67. $wyswietl_komentarze = mysql_query("SELECT * FROM komentarze WHERE id_p='$id_post'");
  68. while($pokaz_k = mysql_fetch_array($wyswietl_komentarze))
  69. {
  70. $wyswietl_u = mysql_query("SELECT * FROM uzytkownicy,komentarze WHERE id=id_uk");
  71. while($pokaz_u = mysql_fetch_array($wyswietl_u))
  72. {
  73. $id_uk=$pokaz_u['login'];
  74. }
  75. echo $id_uk;
  76. $id_p = $pokaz_k['id_p'];
  77. $id_p_pl = htmlentities($id_p, ENT_COMPAT, "UTF-8");
  78. $komentarz = $pokaz_k['komentarz'];
  79. $komentarz_pl = htmlentities($komentarz, ENT_COMPAT, "UTF-8");
  80. echo "<b>$id_p</b>, dodal komentarz:<br>$komentarz_pl<br><br>";
  81.  
  82. }
  83. //----------------wyswkom----------------------
  84. //-------------dodawanie komentarzy
  85.  
  86.  
  87. $wyswietl_idpostu= mysql_query( "SELECT * FROM posty WHERE id_post='$id_post'");
  88. while($p_idpostu = mysql_fetch_array($wyswietl_idpostu))
  89. { $id_apostu= $p_idpostu['id_post'];
  90. echo $id_apostu;
  91. }
  92.  
  93. $komentarz= $_POST['komentarz'];
  94. if(empty($komentarz))
  95. {
  96. echo $id_post;
  97. echo '<form action="" method="post">
  98. <textarea name="komentarz" /*onfocus="if
  99. (this.value == \'Treść komentarza...\') { this.value = \'\'; }" onblur="if(this.value==\'\')
  100. { this.value=\'Treść komentarza...\'; }">Treść komentarza...</textarea><br>
  101. <input type="submit" name="wyslij" value="Wyślij komentarz"></form>' ;
  102. }
  103. if(isset($_POST['wyslij']))
  104. {
  105. $dodaj_komentarz = mysql_query("INSERT INTO komentarze (nr,id_uk,id_p,komentarz) VALUES ('','$id', '$id_apostu', '$komentarz')");
  106. if($dodaj_komentarz == true)
  107. {echo("Komentarz został dodany<br><br>");
  108. }
  109. else
  110. {echo("Komentarz nie został dodany<br><br>");}
  111. }
  112.  
  113.  
  114.  
  115. //----------------dodkom--------------------
  116. echo "_________________________________________________________________";
  117. echo "<br><br>" ;
  118. }
sajegib
musisz połączyć tabele z komentarzami z konkretnym postem np. w każdym rekordzie w tabeli z komentarzami dajesz info, ze to jest komentarz do postu o konkretnym numerze. To samo przy wyświetlaniu

a pozatym

  1. $dodaj_komentarz = mysql_query("INSERT INTO komentarze (nr,id_uk,id_p,komentarz) VALUES ('','$id', '$id_apostu', '$komentarz')");
  2. if($dodaj_komentarz == true)
  3.  
  4. możesz (ale nie musisz) zmienić na
  5.  
  6. if($dodaj_komentarz = mysql_query("INSERT INTO komentarze (nr,id_uk,id_p,komentarz) VALUES ('','$id', '$id_apostu', '$komentarz')"));
  7.  


Po co pisać niepotrzebne kawalki kodu

Write less, do more!
jarek0203
W bazie mam powiązane. id_p komentarze jest powiązane id_post z posty. chodzi o to ze mam t wysyłanie w tej głównej pętli while i mi to wykonuje tyle razy ile jest postów. I nie wiem jak to zmienić;/
CuteOne
1. Rozbij ten kod na kilka plików bo wyszło spaghetti...
2.
  1. mysql_query("INSERT INTO tabela (`id`, `temat`) VALUES (1, 'tekst')");
  2.  
  3. $lastId = mysql_insert_id();
  4.  
  5. if($lastId) {
  6.  
  7. mysql_query("INSERT INTO tabela2 (`id`, `tekst`) VALUES ('".$lastId."', 'tekst2')");
  8. }

3. Przepisz ten kod na PDO (mysql_* jest przestarzałe)
jarek0203
Ale to jest na dodawanie komentarza do ostatniego postu. Nie mogę bo mam wymóg pisać po staremu.
CuteOne
Ja pokazałem jedynie sposób na "łączenie" rekordów z tabeliA z tymi w tabeląB. Ty sam musisz dojść w jaki sposób to przerobić wink.gif
!*!
Cytat(jarek0203 @ 21.01.2013, 10:26:29 ) *
Ale to jest na dodawanie komentarza do ostatniego postu. Nie mogę bo mam wymóg pisać po staremu.


sajegib już Ci wyjaśnił jak to należy zrobić i innej opcji nie ma.
Ktoś zmusza Cie do pisania "po staremu"?

Poza tym zrób to rekurencyjnie, czyli pętla sprawdza czy post ma jakiś komentarz, jeśli tak, odpala pętlę i dla niego (w dużym uproszczeniu).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.