Kup coś taniego a dobrego!

2

Cześć!
Stworzyłem stronę na której każdy może znaleźć dla siebie sprzęt (laptop, komputer, telefon itp.).
Znacie ten dialog?
- Młody, weź poszukaj mi jakiegoś laptopa. Takiego fajnego wiesz.

Teraz każdy wasz wujek, ojciec czy dziadek wejdzie na taką stronę i wybierze sobie sprzęt.

Aktualna wersja jeszcze nie będzie otwarta aż tak dla świata (więc raczej nie sugerujcie się zamieszczonymi tam aukcjami).

Jak to działa?
Kilka osób ma specjalne przywileje (ale mają szczęście ;p) mogą dodawać nowe aukcje za pomocą formularza (klik). Dane są przechowywane w bazie danych a później wyświetlane z zadanymi kryteriami. Ta strona pośredniczy w zakupie sprzętu. Sam wiem jak z własnych doświadczeń kupić dobry i tani sprzęt - jeszcze trudniej jest to zrobić osobie które kompletnie nie zna się na tym. Podsumowując, ta strona pomaga osobą "zielonym" kupić dobry i tani sprzęt (nawet używany).

Technicznie
Strona napisana jest w PHP (niestety). Baza danych to MySql. Do frontedu użyłem Bootmetro (klik).

Plany

  • przepisać całość na Pythona/RoR/coś innego,
  • dodać automatyczne pobieranie daty aukcji

Jeżeli masz jakieś pytania, propozycje, opinie to napisz ;)
Raczej na ocenie kodu mu nie zależy ponieważ będę całość przepisywał w innym języku ;)

STRONA | Projekt na Githubi'e

0

Em, nie widzisz nic złego w tym, że kilka razy w kodzie powtarzasz

    $password = "#";
    $database = "#";
    $server   = "#";

?

Poza tym, jak zwykle - MVC, MVC i raz jeszcze, MVC.

1

Ale jaki jest sens tego softu, bo chyba nie ogarniam idei o_O

0

Czym to się różni w zamyśle od allegro/olx ?

0

brakuje ci doctype w kodzie

0

Struktura aplikacji jest płaska jak stół. Nie za bardzo jest co oceniać jeżeli chodzi o kod.

0

Nowy skrypt strony już jest i można go zobaczyć na Githubie.

TODO:

  1. Zastanowić się nad nazwą.
  2. Poszukać lub napisać framework'a do front-endu.
  3. Załatwić serwer & domenę.
  4. Nowy panel administratora z hasłem zatwierdzającym które jest pobierane z bazy danych.

Oczywiście jeżeli masz chęć współpracować to daj mi znać w postaci prywatnej wiadomości.

1

1.Nie nazywaj parametrów w sposób $AUCTION. Boli w oczy i wbrew pozorom - zmniejsza czytelność kodu.
2.uploadAuction to część aukcji, a nie bazy danych i właśnie w klasie aukcji powinna się znajdować.
3.getData zwraca kod HTML - fe. Nie mieszaj bazy danych z widokiem.
4.Masz strasznie obszerną metodę getDateTime, która robi więcej niż jedną rzecz - źle. Parsowanie kodu HTML powinno być wykonywane już w konstruktorze (tzn. jako osobna, prywatna metoda wywoływana z konstruktora), a dane przypisywane do pól w stylu private $image, $price, $dateTime;, aby metody nie musiały się tym osobno zajmować.
No i ten wielki switch tam. Jak gdyby tablica nie wystarczyła.
5.Inicializing DOM document;

  • inicializing? co?
  • DOM document - a to co ma znaczyć? ;P Document Object Model Document.
0

Aktualizacja v2
Cześć,
projekt jeszcze jest i będzie kontynuowany.

Co się zmieniło?
Dla normalnego użytkownika zmienił się głównie wygląd - używam Bootstrap'a. Zmieniły się jeszcze plany co do projektu. Projekt nie będzie promowany - piszę go tylko dla nauki i przyjemności (w następnej aktualizacji powiem jeszcze co z tym).

Mniejsze zmiany:

  • zmieniony format wyświetlania danych - od teraz używam tabelki do tego (w poprzednich commitach widać że próbowałem dziwnych rzeczy ;d),
  • nowa klasa (View) odpowiedzialna za wyświetlanie wiadomości (np. czy dodawanie nowego rekordu się powiodło)
  • kilka nowych metod w pozostałych klasach
  • oraz kilka innych o których już nie pamiętam

Teraz każdy może dodawać aukcje lecz nie są one dodawane zaraz do głównej tabeli lecz znajdują się w tymczasowej. Później jakiś moderator dostaje listę w ładnym panelu i może zdecydować czy aukcja jest poprawnie dodana itp. Jeśli zatwierdzi rekord przechodzi do głównej tabeli z której wyświetlane są wyniki.

Strona techniczna
Dodawanie - formularz zostaje przesyłany do pliku added.php gdzie jest zapytanie do bazy danych (do tymczasowej tabeli). Rekord jest w tej tabeli do wygaśnięcia aukcji lub może zostać przeniesiony do głównej gdy moderator zobaczy że wszystko jest poprawnie.
Wyświetlanie - jest to zwykłe zapytanie z "obróbką" danych.
Przenoszenie - również nie ma tutaj filozofii - zwykłe zapytanie.

Możecie poszukać dziur na tej stronie i dać mi znać tutaj lub dodając jakiś rekord do bazy danych ;)
Na wszystkie komentarze, zastrzeżenia czy pytania czekam ;)

Strona główna | Github

Zdałem sobie sprawę jak mało zmian zaszło w tym projekcie.

0

Fajnie, tylko że link do strony w pierwszym poście nie działa :P

1
  • php to nie jest zasób (asset), zatem nie powinien znajdować się w katalogu assets.
  • showMessage przyjmuje jakieś magiczne idki zamiast enumów. Tzn. pomijam już w ogóle to, że powinno przyjmować treść wiadomości, a nie id.
  • nadal brak podziału na MVC.
  • https://github.com/MagicznyHubert/aukcje/blob/master/v2/assets/php/auction.php#L39 w dalszym ciągu ogromny switch zamiast mapy.
  • uploadAuction czy moveAction to opcje dotyczące aukcji, a nie połączenia i w takiej klasie powinny się znajdować. Podobnie zresztą jak getData i te inne wszystkie metody.
0
Patryk27 napisał(a):
  • php to nie jest zasób (asset), zatem nie powinien znajdować się w katalogu assets.
  • showMessage przyjmuje jakieś magiczne idki zamiast enumów. Tzn. pomijam już w ogóle to, że powinno przyjmować treść wiadomości, a nie id.
  • nadal brak podziału na MVC.
  • https://github.com/MagicznyHubert/aukcje/blob/master/v2/assets/php/auction.php#L39 w dalszym ciągu ogromny switch zamiast mapy.
  • uploadAuction czy moveAction to opcje dotyczące aukcji, a nie połączenia i w takiej klasie powinny się znajdować. Podobnie zresztą jak getData i te inne wszystkie metody.
  • Poprawiłem u siebie lokalnie - czeka na commit.
  • Szybciej i krócej będzie podając id lub enum.
  • Nie jest to aż takie duże żeby stosować MVC - pomyślę.
  • Możesz powiedzieć coś więcej o tej mapie?
  • Klasa Connection służy do obsługi wszystkich zapytań do bazy danych; klasa Auction jest bardziej jako kontener na dane - tutaj nie widzę problemu ;)

Dziękuje Ci za tą odpowiedź ;)

2

Szybciej i krócej będzie podając id lub enum.

Programs must be written for people to read, and only incidentally for machines to execute. ~Abelson & Sussman, Structure and Interpretation of Computer Programs

Możesz powiedzieć coś więcej o tej mapie?

$months = [
  'Styczeń' => 1,
  'Luty' => 2, 
  ...
];

echo $months['Luty']; // 2

Klasa Connection służy do obsługi wszystkich zapytań do bazy danych; klasa Auction jest bardziej jako kontener na dane - tutaj nie widzę problemu

http://pl.wikipedia.org/wiki/Zasada_jednej_odpowiedzialno%C5%9Bci

1 użytkowników online, w tym zalogowanych: 0, gości: 1