Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Formularz na stronie
Forum PHP.pl > Forum > Przedszkole
jg44
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.
Konop857
Ja nawet nie wiem co to OOP ale czy nie łatwiej zrobić owego formularza w PHP i HTML?
jg44
OOP znaczy 'programowanie obiektowe'. Czyli klasy, metody, itp. ... Nie zmienia to faktu, że ten formularz jest napisany w HTML i PHP. 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...
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.