Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak napisać klasę do edycji i dodawania rekordów
Forum PHP.pl > Forum > Przedszkole
arzach
Mam taki prosty kodzik i chciałbym napisać go obiektowo by potem wykorzystać go w innych projektach a nie ciągle powtarzać ten sam kod co mam teraz. Proszę na naprowadzenie jak powinna być napisana taka klasa.
  1. $result = mysql_query("");
  2. while($data = mysql_fetch_assoc($result)) // pobieram dane z bazy i generuje linki do edycji i kasowania
  3. {
  4. echo "<a href='".basename($_SERVER['PHP_SELF'])."?edit_id=".$data['id']."'>edytuj</a>";
  5. echo "<a href='".basename($_SERVER['PHP_SELF'])."?del_id=".$data['id']."'>usun</a>";
  6. }
  7.  
  8.  
  9. if(isset($_POST['seve'])){ // sprawdzam czy zostal wyslany formularz
  10.  
  11. if(isset($_POST['edit_id']) && isnum($_POST['edit_id'])){ // sprawdzam czy $_POST['edit_id'] istnieje jak tak edutuje dane jak nie dodaje nowe
  12.  
  13. $result = mysql_query("UPDATE tabela SET mailname='".$_POST['mailname']."' WHERE id='".$_POST['edit_id']."'");
  14.  
  15. } else {
  16.  
  17. $result = mysql_query("INSERT INTO tabela (mailname) VALUES ('".$_POST['mailname']."')");
  18.  
  19. }
  20.  
  21. }
  22.  
  23. echo "<form name='userform' method='post' action='".basename($_SERVER['PHP_SELF'])."'>\n";
  24. echo "<table>\n<tr>\n";
  25. echo "<td>Mail:</td>\n";
  26. echo "<td><input type='text' name='mailname' value='".(isset($_GET['edit_id']) ? $edit['mailname'] : "")."'/></td>\n";
  27. echo "</tr>\n<tr>\n";
  28.  
  29. if (isset($_GET['edit_id']) && is_int($_GET['edit_id'])){
  30.  
  31. $edit = mysql_query("");
  32. $edit = mysql_fetch_assoc($edit);
  33. echo "<input type='hidden' name='edit_id' value='".$_GET['edit_id']."' />"; // Przesyłam ukryte id do edycji
  34.  
  35. }
  36.  
  37. echo "<td align='center' colspan='2'>\n";
  38. echo "<input type='submit' name='seve' value='".(isset($_GET['edit_id']) ? "Edytuj" : "Zapisz")."' /></td>\n";
  39. echo "</tr>\n</table>\n</form>\n";
  40.  
CuteOne
Klasa? do tego potrzebował byś całego frameworka... zobacz sobie na Symfony, Zend lub Kohana
szczemp
znowu bez przesady
nie trzeba całego frameworka
ja do tego napisałbym jakąś klasę do tworzenia formularzy
  1. $formularz = new Formularz;
  2. $formularz->startForm();
  3. $formularz->showInput();
  4. ..
  5. $formularz->endForm()

do tego przyda się walidacja jego pól
  1. $walidacja = new Walidacja();
  2. $walidacja->email();
  3. ..
  4. if ($walidacja->isValid()) {
  5. //walidacja udana
  6. }
  7. else {
  8. //walidacja nie udana
  9. echo $walidacja->showErrors();
  10. }

no coś do obsługi bazy danych
albo użyć biblioteki PDO
Crozin
@szczemp: No to potrzebuje frameworka (biblioteki) do tworzenia formularzy oraz sprawdzania poprawności danych. Dane z/do bazy również przydałoby się mieć w postaci obiektowej, tak więc i bez ORM-a się nie obejdzie. Innymi słowy może sobie to wszystko poskładać z różnych, indywidualnych bibliotek, albo skorzystać z jednego "pełnego frameworka WWW".
szczemp
dokładnie słowo biblioteka tu bardziej pasuje niż framework, bo jeśli framework np taki zend ma bardzo rozbudowaną strukturę katalogów, a projekt nie jest wielki i nie potrzebuje zaawansowanych funkcji, to lepiej napisać taką klasę od formularzy i sobie ją używać
wiadomo, że są lżejsze frameworki od zenda i któryś arzach może sobie wybrać do małych projektów
Crozin
@szczemp: Framework/biblioteka to w sumie w wielu przypadkach synonimy.
Cytat
np taki zend ma bardzo rozbudowaną strukturę katalogów, a projekt nie jest wielki i nie potrzebuje zaawansowanych funkcji, to lepiej napisać taką klasę od formularzy i sobie ją używać
Niespecjalnie lepiej, tj. ja przynajmniej nie potrafię znaleźć jakiś pulsów.
Cytat
wiadomo, że są lżejsze frameworki od zenda i któryś arzach może sobie wybrać do małych projektów
Dla małych projektów wielkość czy "ociężałość" takiego Zena jest kompletnie bez znaczenia.
arzach
Ja bym chciał napisać klasę ale nie do generowania formularzy tylko taką która odbierze dane z formularza i doda je do bazy bądź edytuje. Chodzi mi tylko o na kierowanie jakby to miał wyglądać.
Połączenie z bazą już sobie sam ogarnę. Nie chciał bym wykorzystywać frameworka bo to ma być do małych projektów.
Crozin
Cytat
[...] bo to ma być do małych projektów.
To tym bardziej powinieneś skorzystać z czegoś gotowego.

A uprzedzając odpowiedź. Nie, nie dasz rady teraz zrobić sobie jednej klasy, która to będzie robić, bo tego nie da się zrobić dobrze przy pomocy jednej klasy. OOP ma to do siebie, że wymaga całego "ekosystemu" by miało jakiekolwiek sensowne użycie, a na stworzenie takiego środowiska nie masz w tej chwili szans. Skorzystaj z gotowych narzędzi (to jest w sumie ważniejsza umiejętność niż OOP), naucz się ich obsługiwać, rozbudowywać je, a własne twórz tam gdzie gotowców nie ma, bądź nie spełniają swojego zadania.
Mephistofeles
Silex - framework w sam raz do małych projektów.
Masz do dyspozycji komponenty Symfony, w tym Forms, Validator, a nie trzeba tworzyć całej struktury aplikacji.
Poczytaj dokumentację Symfony, Doctrine i będziesz wiedział jak to powinno wyglądać.
szczemp
Cytat(Crozin @ 11.06.2012, 15:54:38 ) *
Dla małych projektów wielkość czy "ociężałość" takiego Zena jest kompletnie bez znaczenia.

dla projektu nie jest ale dla serwera już może być
dużo plików = dużo operacji co zajmuje czas i prąd:))
Mephistofeles
Nie przesadzaj, nie optymalizuj na siłę. Framework pozwala na wygodne pisanie czytelnych aplikacji, więc czemu mam go nie używać? Narzut będzie bez znaczenia dla małego projektu.
Przejmujesz się zużyciem energii? To nie Ty płacisz rachunki tongue.gif, a nie słyszałem jeszcze o hostingu płatnym w zależności od poboru mocy.
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.