Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Jak zabrać się za edycję danych w bazie danych?
adolf1945
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 7.05.2010

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


Witam

Napisałem sobie klasę obsługującą dodawanie komentarzy do bazy danych:
  1.  
  2. <?php
  3.  
  4. class Comments {
  5. public $autor;
  6. public $content;
  7.  
  8. public function __construct() {
  9. $this->autor = $this->filter($_POST['autor']);;
  10. $this->content = $this->filter($_POST['content']);
  11. }
  12.  
  13. public function addComment()
  14. {
  15. mysql_connect("localhost","root","") or die(mysql_error());
  16. return mysql_query("INSERT INTO comments(autor, content) VALUES ('{$this->autor}','{$this->content}')");
  17. }
  18.  
  19. public function editComment(){
  20.  
  21. }
  22.  
  23. public function filter($var)
  24. {
  25. return preg_replace('/[^a-zA-Z0-9]/','',$var);
  26. }
  27. }


  1. <form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
  2. <table>
  3. <tr><td>Autor:</td><td><input type="text" name="autor"/></td></tr>
  4. <tr><td>Content:</td><td><input type="text" name="content"/></td></tr>
  5. </table>
  6. <input type="submit" name="dodaj" value="Dodaj"/>
  7. </form>
  8.  
  9. <?php
  10. include_once('/class.comments.php');
  11. $comments = new Comments;
  12. $comments->addComment();
  13.  
  14. ?>


Jak zabrać się za metodę która będzie edytowała wybrany komentarz?

Ten post edytował adolf1945 19.08.2011, 17:40:08
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Twoja tabela komentarzy jest "zbyt skromna". Komentarz mimo wszystko powinien mieć swój unikalny identyfikator (id), jak również powinien dotyczyć, "komentować" coś, czego identyfikator również powinien się znaleźć w tabeli komentarzy. Np. tabela komentarzy dla artykułów (articles):
  1. CREATE TABLE comments (
  2. id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. article_id int(10) UNSIGNED NOT NULL,
  4. author varchar(40) NOT NULL,
  5. content text NOT NULL,
  6. PRIMARY KEY comment_id_pk (id)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8


Wtedy model/klasę komentarzy trzeba przebudować, uwzględniając id i article_id. Jeśli chodzi o edycję, to zauważ, że komentować można tylko określone komentarze. W Twoim przypadku będą to komentarze o określonym identyfikatorze (id), który należy przekazać metodzie editComment(). Zatem będzie ona wyglądać tak:
  1. public function editComment($id) {
  2. mysql_connect("localhost","root","") or die(mysql_error());
  3. $sql = "SELECT * FROM comments WHERE id = $id";
  4. $wyniki = mysql_query($sql);
  5. // wyciągamy dane i zwracamy w odpowiadającej nam formie
  6. return $dane;
  7. }

Tak zwrócone dane wypisujemy do formularza w pliku widoku.

Kilka uwag:
- nazwa klasy powinna dotyczyć pewnego, jednego obiektu, bardziej odpowiednia byłaby nazwa Comment, bo nazwa Comments wskazuje na zbiór komentarzy, a my operujemy/obsługujemy jeden komentarz,
- wewnątrz klasy nie powinieneś korzystać z tablic superglobalnych, jak $_GET, czy $_POST,
- zamiast tego możesz je przekazać jako parametr w konstruktorze
  1. public function __construct(array $formData) { }
  2. //i wywołanie
  3. $comment = new Comment($_POST);

- do walidacji/filtrowania danych powinieneś użyć osobnej klasy,
- obsługę bazy danych również mogłaby zapewnić osobna klasa.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 06:02