Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z wyborem produktu podczas edycji bazy
Forum PHP.pl > Forum > Bazy danych
nowy_pehapowiec
Co zrobić, jeśli produktów jest w bazie kilka tysięcy. Wybieranie ich z rozwijanej listy jest bardzo niewygodne. Jak przy pomocy php i mysql to zrobić. Chodzi mi o sposób w jaki najwygodniej sobie zmniejszyć tą listę, ale żeby jednocześnie w miarę wygonie dało się z tego korzystać?

pozdro
ziqzaq
Może spróbuj zaimplementować sobie autocomplete (autosuggest).
Google: ajax autocomplete
Jakiś przykładowy skrypt (mootools).
Pozdrawiam.
darko
W takim przypadku polecam używać kontroli ilości pobieranych rekordów z bazy danych bezpośrednio w zapytaniu SQL za pomocą polecenia LIMIT start, end

np. select x from a where warunek1 and warunek2 order by data_dodania LIMIT poczatek, koniec

a wynik wyświetlić w postaci paginowanej (i sortowanej) listy produktów.

Ponadto przyda się możliwość wyszukiwania produktów po np. nazwie, cenie, etc.


Dobrze też byłoby wcześniej zaplanować sposób w jaki chcemy, żeby użytkownik zarządzał produktem (dodawał nowe, edytował, podglądał i usuwał istniejące pozycje)

Co do sposobu wykonania: obiektowy PHP + komunikacja z bazą za pomocą PDO (tylko obiektowo)
nowy_pehapowiec
Cytat
Dobrze też byłoby wcześniej zaplanować sposób w jaki chcemy, żeby użytkownik zarządzał produktem (dodawał nowe, edytował, podglądał i usuwał istniejące pozycje)

No właśnie z tym mam największy problem. Jak to dobrze zaplanować, żeby było przyjazne dla usera i funkcjonalne. Szczerze mówiąc to nie mam pojęcia. Opisałbyś jak jakie możliwości Ty implementujesz w swoich panelach do bazy i jak to razem łączysz?

Cytat
Co do sposobu wykonania: obiektowy PHP + komunikacja z bazą za pomocą PDO (tylko obiektowo)

PDO używam i sobie chwalę. Ale reszty nie mam obiektowej, ale to chyba nie jest jakiś duży problem? Funkcjami chyba też da się to zrobić?

pozdro
darko
Ad 1)
Jeśli rozmawiamy o panelu administracyjnym właściciela sklepu, to moim skromnym zdaniem dobrze zaprojektowane zarządzanie produktem to przede wszystkim:
- odpowiedź na pytanie co znaczy wygodne zarządzanie produktami
- kod, który jest "dobrze zarządzalny" (klasy) - co jeśli po jakimś czasie okaże się, że trzeba dokonać zmian? będziesz szukał w kodzie-spagetti i zmieniał w stu miejscach dwie linie kodu?
- czytelność prezentowanych userowi danych i zachowanie jednolitej logiki i konsekwencji w działaniu
- łatwość wprowadzania modyfikacji i dokonywania podstawowych zadań (pełna edycja)
- możliwość przerwania edycji produktu bez utraty wprowadzonych zmian i możliwość powrotu do edycji w późniejszym czasie
- opcjonalność rozumiana w sposób: jeśli czegoś na razie nie chcę dodawać do produktu, to mogę pominąć ten etap edycji i przejść do następnego tak, aby produkt został dodany do systemu
- intuicyjność interfejsu użytkownika (wszystko musi być na swoim miejscu, dokładnie tam, gdzie użytkownik się tego spodziewa)
- dbałość o użytkownika: najprościej zapomnieć na chwilę o programowaniu i postawić się na miejscu użytkownika-kompletnego-laika, który nie zna systemu, albo poprosić kolegę o dokonanie oceny,
generalnie powinieneś dążyć do tego, aby user nie musiał kilkanaście razy klikać w różne linki, a system nie prosił pięć razy o podanie tych samych danych

Podsumowując dodam, że trzeba dążyć do tego, żeby było jak najprościej, a jednocześnie trzeba zachować wysoką elastyczność i dostarczyć dużo możliwości - to zawsze jest pole kompromisu. Jeśli uda się pogodzić te aspekty - można wtedy mówić o dobrym projekcie. Polecam autentycznie usiąść przed kartką papieru i rozpisać sobie cykl logiczny pełnej edycji produktu. Później się tego trzymać w kodzie. Polecam klasy, najpierw projekt interfejsu, potem implementowanie pod interfejs, nigdy odwrotnie (tzn. projektowanie interfejsu pod gotową implementację) - wartością dodaną będzie utworzone w ten sposób kompletne i elastyczne API dostępne np. dla innych programistów.

Konkretny przykład:

Można zaprezentować listę produktów w postaci tabeli, wyciągasz z bazy pierwszych 20 rekordów, na liście umieszczasz przykładowo:
| Numer | Nazwa produktu | Producent | Podgląd | Cena | (cokolwiek jeszcze) |
1. Testowy produkt 1 Testowa corp. <tutaj miniaturka zdjęcia> 1000 zł (cokolwiek jeszcze)
2. Testowy produkt 2 Testowa2 corp. <tutaj miniaturka zdjęcia> 2000 zł (cokolwiek jeszcze)
(...)
20. Testowy produkt 20 Testowa20 corp. <tutaj miniaturka zdjęcia> 2000 zł (cokolwiek jeszcze)

Jeśli natomiast masz na myśli po prostu widok Klienta sklepu, to nie potrzebujesz edycji, a paginacji i sortowania wyników.

Ad 2)
Oczywiście, że funkcjami da się obsłużyć PDO, ale czy nie lepiej byłoby mieć wszystkie funkcje obsługi PDO w jednej klasie np. SQL questionmark.gif?
Przy większym projekcie ostatecznie i tak przeprosisz się z programowaniem obiektowym.


Riklaunim
Najprościej to stronicowana lista elementów (tak jak stronicują się posty na forach). Jeżeli to ma być koniecznie selectbox to tak jak wspomnieli poprzednicy - autouzupełnienie (autocompleater), który wyszukuje produkty po frazie wpisywanej przez użytkownika i wyświetla kilkanaście pasujących wyników. jQuery ma sporo takich rozwiązań do wykorzystania.
nowy_pehapowiec
OK, już zrobiłem stronicowanie.

Co do wyboru produktu to nie musi być selectbox. To było mi najprościej zrobić, teraz przerobiłem na zwykłe input typu circle, wyświetlam po 100 na stronie. Czy jeszcze jakoś bez użycia javascript można to usprawnić? Właśnie zaczynam naukę javascript i dopiero poznaje podstawy. Czy po zapoznaniu się z podstawami języka lepiej od razu przejść na korzystanie z jakiejś biblioteki? Jeśli tak to która będzie najlepsza jquery a może prototype? Albo od razu ajax? Nigdy nie programowałem nic jako client-side i jestem zupełnie zielony w tym temacie.

pozdro
Riklaunim
Cytat(nowy_pehapowiec @ 6.10.2009, 13:57:09 ) *
Czy po zapoznaniu się z podstawami języka lepiej od razu przejść na korzystanie z jakiejś biblioteki? Jeśli tak to która będzie najlepsza jquery a może prototype? Albo od razu ajax? Nigdy nie programowałem nic jako client-side i jestem zupełnie zielony w tym temacie.

pozdro

AJAX nie jest językiem, tylko asynchroniczym wysyłaniem żądań do serwera. Obecnie najpopularniejsze jest raczej jQuery, prototype czasy świetności ma już za sobą i warto zacząć zabawę z JS właśnie z jQuery, a nie czystym JSem. Dla przykładu trochę fajnych zastosowań/wtyczek tej biblioteki:
http://www.noupe.com/ajax/37-more-shocking...ry-plugins.html
http://www.ajaxline.com/30-best-jquery-plugins-may-2009
http://speckyboy.com/2008/07/21/20-amazing...uery-resources/
http://www.queness.com/post/360/10-rare-an...-jquery-plugins
nowy_pehapowiec
Czyli przyswoić sobie podstawy javascript. A potem od razu jquery i skrypty pisać już od razu w jquery? Wiesz ja nie wiem jak to jest z javascript ale jeśli w czystym php mogę napisać funkcję w 200 linijkach albo użyć jakiegoś rozszerzenia to jednak wybieram czysty php. Nie wiem czemu ale takie przyzwyczajenie z języka c. No ale nie ważne zabieram się za jquery.

pozdro
Riklaunim
Cytat(nowy_pehapowiec @ 7.10.2009, 02:12:56 ) *
Wiesz ja nie wiem jak to jest z javascript ale jeśli w czystym php mogę napisać funkcję w 200 linijkach albo użyć jakiegoś rozszerzenia to jednak wybieram czysty php.

Przez co tworzysz aplikacje wolniej, mniej wydajniej i na mniejszą skalę niż programista korzystający z frameworka i szeregu gotowych klas i/lub komponentów dobrej jakości (ZF, EZ Components, binarne rozszerzenia na pecl itd.) winksmiley.jpg
Pluginy do jQuery są po to by ich używać. Po co odkrywać koło na nowo próbując bez dogłębnej znajomości JS/jQuery napisać identyczną funkcjonalność? Odkrywanie koła na nowo jest dobre w zastosowaniach uniwersyteckich, a nie w realnych projektach, gdzie jest deadline i liczy się działająca aplikacja, a nie ile razy użyłeś swojej superfunkcji.
nowy_pehapowiec
Masz racje, tylko, że jak dla mnie nauka frameworka bywa dłuższa niż napisanie krótkiej funkcji. Ale na dłuższą metę i przy większych projektach to nie mam szans. Czas się polubić z jakimś frameworkiem. JEśli idzie o javascript ro już wiem, że jqueryy mi polecasz i tak też zacząłem go przyswajać. A z php, który jest warty wejścia w niego? Który daje najwięcej bez masy zbędnych zawiłości?


pozdro
Riklaunim
CodeIgniter, Kohana, CakePHP, lub Zend Framework - w zależności, który bardziej ci podpasuje. A frameworka można śmiało stosować w "małych" projektach.
nowy_pehapowiec
Riklaunim

Przejrzałem strony tych frameworków i wiki. Nie orientuje się w tym i każdy teraz dla mnie wygląda tak samo. Są jakies istotne plusy/minusy tych frameworków? Np łatwość/szybkość nauki, prostota konfiguracji, wydajność? Który wybrać?

Co do jquery to był super wybór! Dzięki za radę.


pozdro
Riklaunim
Ja startowałem z CodeIgniter, potem przeszedłem na Django. Obecnie istnieje też Kohana - niejako nowsza wersja CI zrobiona pod PHP5 only.
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.