Znam podstawy php, mysql. Pisze stronkę i wychodzi całkiem nieźle, ale mam kilka pytań:
Dotychczas robiłem każdy formularz i każdy kod mysql w osobnych plikach - czyli np. newrecord.php i newrecorddo.php tak samo z edit i wyświetlaniem.
Jednak powoli dostrzegam, że robi się bałagan. I teraz pytanie, Jak to zrobić? Czy może wszystkie formularze do jednego pliku i na podstawie warunku wyświetlić odpowiedni i tak samo z kodem przetwarzającym, czy wrzucić wszystko do jednego pliku (czyli np. post.php odpowiada za wszystko związane z userami)?
Chciałbym aby to było w miarę optymalnie. Dodam iż nie chcę na razie korzystać z frameworków.
Wyświetlanie - Zdaje sobie sprawę że w przypadku np. artykułów czasem tytuł się powtarza, dlatego w adresie oprócz aliasu jest też id. Jednak np. nazwa użytkownika nie może sie powtarzać, bo rejestracja się nie dokończy. Czyli mam tylko jednego usera o tym nicku. Teoretycznie przy profilach userów w adresie url mogę wyświetlać i nick usera i jego id, ale duże lepiej prezentuje się sam nick. Czy jest duży narzut czasowy i wydajnościowy w przypadku wyświetlania czegoś o aliasie/nicku niż w przypadku id?
W swoim CMSie mam jeden formularz do dodawania i edycji. Np mam moduł podstron gdzie formularz jest wykorzystywany podczas dodawania i edycji. W przypadku dodawania wyświetla się pusty formularz i wszystkie dane można wprowadzić. W przypadku edycji ustawiam zmienną $edit=1 którą sprawdzam np w znaczniku form aby wyświetlić odpowiednią ścieżkę w actcion w stylu:
Czyli formularz leci do odpowiedniej funkcji która obsługuje albo update albo insert. Przy edycji wczytuję dane z bazy np do $podstrony a później mam:
U mnie się sprawdza i jest zawsze jeden formularz mniej.
2 Co do nazw użytkowników, pytanie jakie znaki dopuszczasz w nazwach i czy żadne znaki nie będą stwarzały problemów. Szczerze mówiąc nie wiem jak będą różnice czasu, najlepiej zmierz czasy i zobacz czy będzie to zauważalne, choć wątpię.
U mnie jeden moduł to jeden plik, jedna klasa a w niej każda metoda to inny powiedzmy podmoduł… Czyli np klasa podstrony gdzie mam funkcje dodaj, edytuj, usun itp.
Wydaje mi się że jest to bardziej przejrzyste bo mam katalogi które są nazwami modułów a w nich jeden plik php gdzie jest cały kod + pliki html czyli widoki np formularze czy szablony jakiś podstron które wywołuje przez php.
Czy komunikaty o sukcesie danej funkcji pobiera się z odpowiedzi zapytania (np. if (zap) echo “OK”; else “Błąd”; ) czy też podaje się je ręcznie ?
Pytam, bo gdy w jednym pliku mam i formularz i kod oraz próbuję w odpowiedzi JS dać odpowiedź z zapytania -strona się przeładowuje i wyświetla przez php informacja zamiast ajax w divie info.
<?php
if (isset($_GET['action'] == 'add.user')) {
if (isset($_POST['submit'])) {
$name = $_POST['name'];
$pass = $_POST['pass'];
$query = mysql_query("INSERT INTO users SET username='$name', password='$pass'");
if($query) {
echo "Dodano.";
} else {
echo "Nie dodano.";
}
}
?>
Natomiast jest problem gdy chce ajaxem przesłać form i odpowiedź wyświetlić: gdy i form i kod php mam w jednym pliku przesyłanie ajax nie działa - a gdy są w oddzielnych jest w porządku.