Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Formularz na stronie
jg44
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 14
Dołączył: 14.07.2011
Skąd: Gliwice / Wrocław

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


Witam,
mam pewien problem z formularzem dodawania ogłoszeń na stronie. Idea jest taka, że zalogowany użytkownik wchodzi na stronę z formularzem, wypełnia go i po kliknięciu przycisku 'Dodaj' zawartość formularza jest zapisywana w tabeli w bazie, i następnie cała zawartość tej tabeli jest drukowana na tej stronie.
Problem polega na tym, że po kliknięciu przycisku wszelkie informacje dotyczące wysłania formularza (czyli komunikaty o błędnym wypełnieniu, czy komunikat o poprawnym wypełnieniu) pokazują się na samym dole strony pod wszystkimi ogłoszeniami. Drugi problem jest taki, że po dodaniu nowego ogłoszenia, nie pojawia się ono na stronie, mimo że strona jest przeładowywana.
Jestem bardzo początkujący w tematyce OOP, proszę o pomoc.
Kod jest następujący:
  1. class Announcement
  2. {
  3. protected $message;
  4. protected $level;
  5. protected $date;
  6.  
  7. function setMessage($message)
  8. {
  9. $this->message = $message;
  10. }
  11.  
  12. function setLevel($level)
  13. {
  14. $this->level = $level;
  15. }
  16.  
  17. function setDate($date)
  18. {
  19. $this->date = $date;
  20. }
  21.  
  22. function getMessage($message)
  23. {
  24. return $this->message;
  25. }
  26.  
  27. function getLevel($level)
  28. {
  29. return $this->level;
  30. }
  31.  
  32. function getDate($date)
  33. {
  34. return $this->date;
  35. }
  36.  
  37. function addAnnouncement()
  38. {
  39. $written = date("d-m-Y H:i:s");
  40. $error = 0;
  41.  
  42. $r = mysql_query("SELECT nazwa_uzytkownika FROM uzytkownicy WHERE login='".$_SESSION['login']."'");
  43. while ($l = mysql_fetch_array($r))
  44. {
  45. $user_name = $l['nazwa_uzytkownika'];
  46. }
  47.  
  48. if(empty($this->message))
  49. {
  50. $error++;
  51. echo "<h4 class=\"error\">Proszę podać treść ogłoszenia.</h4>";
  52. }
  53.  
  54. if(empty($this->level))
  55. {
  56. $error++;
  57. echo "<h4 class=\"error\">Proszę wybrać poziom.</h4>";
  58. }
  59.  
  60. if(empty($this->date))
  61. {
  62. $error++;
  63. echo "<h4 class=\"error\">Proszę podać datę.</h4>";
  64. }
  65.  
  66. if($error == 0)
  67. {
  68. mysql_query("INSERT INTO ogloszenia (tresc, kiedy, poziom, nazwa_kto_napisal, data_napisania) VALUES ('$this->message','$this->date','$this->level','$user_name','$written')");
  69. echo "<h5 class=\"correct\">Ogłoszenie zostało dodane.</h5>";
  70. }
  71. }
  72.  
  73. function printAnnouncement()
  74. {
  75. $r = mysql_query("SELECT * FROM ogloszenia WHERE nazwa_kto_napisal NOT LIKE '%*' ORDER BY ID DESC");
  76. while ($l = mysql_fetch_array($r))
  77. {
  78. echo "<hr />";
  79. echo $l['tresc']. "<br />";
  80. echo $l['kiedy']. "<br />";
  81. echo $l['poziom']. "<br />";
  82. echo $l['nazwa_kto_napisal']. "<br />";
  83. echo $l['data_napisania']. "<br />";
  84. echo "<a href='ogloszenie_odpowiedz.php?who={$l['nazwa_kto_napisal']}&id={$l['ID']}'>Odpowiedz na ogłoszenie</a>";
  85. }
  86. if(mysql_num_rows($r) == 0)
  87. {
  88. echo "<h5 class=\"correct\">Twoje ogłoszenie może być pierwsze.</h5>";
  89. }
  90. }
  91. } // koniec klasy
  92.  
  93. if(isset($_SESSION['zalogowany']))
  94. {
  95. ?>
  96. <form action="ogloszenie.php" method="post" id="formularz">
  97. <table>
  98. <tr><td>Treść wpisu:</td><td><input type="text" name="message" maxlength="50" size="50" class="pole" onfocus="ramka(this, 'aktywny');" onblur="ramka(this, 'nieaktywny');" /></td></tr>
  99. <tr><td>Wybierz poziom:</td><td>
  100. <input type="radio" name="level" value="Początkujący" />Początkujący<br />
  101. <input type="radio" name="level" value="Średniozaawansowany" />Średniozaawansowany<br />
  102. <input type="radio" name="level" value="Zaawansowany" />Zaawansowany<br />
  103. <input type="radio" name="level" value="Bez znaczenia" />Bez znaczenia<br />
  104. </td></tr>
  105. <tr><td>Termin:</td><td><input type="text" name="date" maxlength="50" size="50" class="pole" onfocus="ramka(this, 'aktywny');" onblur="ramka(this, 'nieaktywny');" /></td></tr>
  106. </table>
  107. <br />
  108. <input type="submit" name="wyslany" id="guzik" value="Dodaj wpis" />
  109. </form>
  110. <?php
  111. $entry = new Announcement();
  112. $entry->printAnnouncement();
  113.  
  114. if(isset($_POST['wyslany']))
  115. {
  116. extract($_POST);
  117.  
  118. $entry->setMessage($message);
  119. $entry->setLevel($level);
  120. $entry->setDate($date);
  121. $entry->addAnnouncement();
  122. }
  123. }
  124. else
  125. {
  126. echo "Nie jesteś zalogowany.<br />";
  127. }
  128. ?>

Z góry dziękuję za pomoc.

Ten post edytował jg44 25.10.2011, 20:19:25
Go to the top of the page
+Quote Post
Konop857
post
Post #2





Grupa: Zarejestrowani
Postów: 81
Pomógł: 2
Dołączył: 4.05.2011

Ostrzeżenie: (10%)
X----


Ja nawet nie wiem co to OOP ale czy nie łatwiej zrobić owego formularza w PHP i HTML?
Go to the top of the page
+Quote Post
jg44
post
Post #3





Grupa: Zarejestrowani
Postów: 122
Pomógł: 14
Dołączył: 14.07.2011
Skąd: Gliwice / Wrocław

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


OOP znaczy 'programowanie obiektowe'. Czyli klasy, metody, itp. ... Nie zmienia to faktu, że ten formularz jest napisany w HTML i PHP. (IMG:style_emoticons/default/wink.gif)
Co do wypozycjonowania komunikatów o błędach itp. to można problem rozwiązać przez zastosowanie odpowiedniego CSSa.

Nie wiem tylko, dlaczego po dodaniu ogłoszenia pojawia się komunikat, że 'dodano ogłoszenie', strona jest przeładowywana, ale ogłoszenia nie widać - trzeba 'fizycznie' przeładować stronę - czyli kliknąć 'odśwież' w przeglądarce...
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: 7.10.2025 - 22:23