![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 0 Dołączył: 12.12.2006 Skąd: Pszów Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam problem z zoptymalizowaniem pewnego algorytmu Sytuacja jest taka: W tabeli jest pole nazwa, na które składa się nazwa produktu jego kolor i rozmiar. jest to jako jeden string np. "ABIE blue 34" I teraz jak wchodzi się na dany produkt w sklepie pod obrazkiem i opisem pokazują się lista produktów z tego samego modelu czyli np: "Abie blue 36" "Abie red 34" itd. Teraz cały pis pogrzebany w tym że potrzeba przy tej liście zrobić przy każdym produkcie zrobić obrazek z prezentacją koloru. Czyli np przed ABIE red 34 mały obrazek 68x18 w kolorze czerwonym. Kolor jest pobierany z nazwy produktu przez funkcje strstr() Problem jest taki że tych kolorów jest około 600....i jeśli skrypt za każdą pętlą która wyświetla produkt na liście ma badać 600 warunków żeby przypisać obrazek to serwer szlag trafi.... Jak byście to inaczej rozwiązali? Od razu mówię że modyfikacja bazy danych odpada....z tego względu że pracujemy na aplikacji shoper.pl które nie jest mi aż tak dobrze znana a poza tym jak to zmienię i dodam sobie np kolumnę z nazwą koloru to jak potem będę importować produktu ( co robię codziennie), albo będę robić aktualizację sklepu (co jakiś czas wychodzą łatki) to może się nieźle namieszać. może padniecie na coś lepszego co tak nie będzie zabijać serwera. -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Od razu mówię że modyfikacja bazy danych odpada....z tego względu że pracujemy na aplikacji shoper.pl które nie jest mi aż tak dobrze znana W tym skrypcie aż strach zmieniać... ;/ Cytat może padniecie na coś lepszego co tak nie będzie zabijać serwera. Jeśli chodzi o shopera, to trzeba by było chyba przepisać skrypt, który odpowiada właśnie za obrazki (uniemożliwia on bezpośrednie wyświetlanie przez serwer). Cytat Problem jest taki że tych kolorów jest około 600....i jeśli skrypt za każdą pętlą która wyświetla produkt na liście ma badać 600 warunków żeby przypisać obrazek to serwer szlag trafi.... Trochę nie zrozumiałem? 600 rodzajów dla każdego buta? To nie można by było zrobić tablicy z kolorami...? Ew. kwadracik z kolorem + styl. Uściślij nieco. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 0 Dołączył: 12.12.2006 Skąd: Pszów Ostrzeżenie: (0%) ![]() ![]() |
każdy produkt może mieć zasadniczo jeden z 600 ogólnych z góry zdefiniowanych kolorów (bo występują też mixy kolorów ale są one liczone jako jeden np pomarańczowo/czarny
przykład tego można zobaczyć tutaj: http://sklep.hannah.pl/APACHE_SUMMER_2009_...aven_-9207.html (widze ze coś źle zgrane i jeden obrazek za mały ale to sie poprawi). Kilka kolorów dodałem tak jak to opisałem wcześniej, ale dodawać wszystkie 600...masakra ![]() Ściślej: jest 600 kolorów i każdy ma swoja nazwę, są produkty i w każdej nazwie produktu znajduje się nazwa koloru która jest szukana opcją strstr jeśli w nazwie znajdzie się ta nazwa koloru to ładowany jest jego obrazek Cos jeszcze wyjasnić? -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
A ten sklep t onie ma atrybutów dla produktów?
Przecież tu jest podstawowy błąd logiczny zrobiony - z artybutów powinno się generować nazwę, a nie z nazwy wyciągać atrybuty. -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
tak jak powiedzial kolega:
zrobic tablice z kluczami i wartoscia koloru, a potem przez div ze stylem to wyswietlac; $kolor['blue']='0000ff' $kolor['red']='ff0000' $kolor['green']='00ff00' $kolor['black']='000000' i teraz echo "<div style='width:10px; height: 10px; background-color: #".$kolor[tu to co przez substr wyciagasz].";'></div> *tablice specjalnie zapisalem tak aby ladniej wygladalo;) -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
@scanner: to jest shopper
![]() ![]() @Avatarus: tak jak ci maly_swd pokazal - tablica + wyciagniecie nazwy koloru z nazwy produktu -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 0 Dołączył: 12.12.2006 Skąd: Pszów Ostrzeżenie: (0%) ![]() ![]() |
fakt rozwiązanie wydaje się być logiczniejsze, nie trzeba ileś tam razy sprawdzać koloru i potem go dopasowywać.
dlatego lubię to forum, konkretni ludzie , szybkie myślenie Dzięki -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
~dr_bonzo:
Cytat A ten sklep t onie ma atrybutów dla produktów? Tak się składa, że akurat ma; w domyślnej instalacji nawet. ;p Ale to nie zmienia faktu, że to wciąż Shoper. ![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 0 Dołączył: 12.12.2006 Skąd: Pszów Ostrzeżenie: (0%) ![]() ![]() |
ma atrybuty ale strasznie to mozolne.
nie da się np zobić modelu....każdy produkt tam traktowany jest jak coś totalnie osobnego. to mnie drażni.... nie można zrobić modelu, podzielić go na kolory i rozmiary....strasznie źle przystosowany do tej branży jest. jednak klops...teraz się za to zabrałem ale zapomniałem powiedzieć o jednym fakcie Kolor nie jest położony na jakieś konkretnej pozycji W bazie wygląda to tak: Abie blue 34 Noresund Red XL Wrapper Antracite S Jak widać nie da się jasno określić gdzie zaczyna się kolor W takim wypadku cały algorytm małego_swd przestaje być przydatny. Jak byście sobie inaczej z tym problemem poradzili? -------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
explode" title="Zobacz w manualu PHP" target="_manual po spacjach i każdego wyrazu szukasz w tej tablicy.
![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 0 Dołączył: 12.12.2006 Skąd: Pszów Ostrzeżenie: (0%) ![]() ![]() |
też nie da rady bo są takie produkty jak Thin Air Mandarin
![]() Nie mogę wymyślić jak to optymalnie ugryźć. -------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
No sory, to zostaje tabela/tablica z nazwami produktów + kolory.
Albo korzystasz z "atrybuty" w shoperze i jakoś do tego dopinasz. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 0 Dołączył: 12.12.2006 Skąd: Pszów Ostrzeżenie: (0%) ![]() ![]() |
jedyne co przychodzi mi do głowy to zmuszenie admina poprzedniego poprzedniego sklepu (zintegorwany z systemem magazynowym który używamy do dziś) żeby zrobił mi listę produktów w postaci:
Kod produktu | Kolor Kod produktu jest unikalny na poziomie modelu, koloru i rozmiaru. Kolory w poprzedniej aplikacji są w osobnej komórce więc nie będzie chyba problemu. Wtedy jak będzie już taka lista to zrobi się z tego tablicę $kolor[kod_produktu]="_kolor_" i powinno działać. -------------------- |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 455 Pomógł: 69 Dołączył: 23.10.2004 Skąd: Oświęcim Ostrzeżenie: (0%) ![]() ![]() |
A nie możesz wziąć przedostatniej wartości z tablicy po explode?
-------------------- |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 0 Dołączył: 12.12.2006 Skąd: Pszów Ostrzeżenie: (0%) ![]() ![]() |
a jak? skoro ciągi nie są jasno rozgraniczone.
Nie wiem jak napisać skrypt który jest w stanie z tych 2 przykładowych ciągów wyciągnąć kolor: Abie Red 34 Thin Air Blue == Gdzie Abie i Thin Air to mode, Red i Blue to kolor a 34 i == to rozmiar (== oznacza że nie ma rozmiaru bo jest produkowany tylko w jednym rozmiarze) -------------------- |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 455 Pomógł: 69 Dołączył: 23.10.2004 Skąd: Oświęcim Ostrzeżenie: (0%) ![]() ![]() |
Ten post edytował ADeM 22.07.2009, 16:09:20 -------------------- |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 0 Dołączył: 12.12.2006 Skąd: Pszów Ostrzeżenie: (0%) ![]() ![]() |
w rezultacie zmienna ta wypluje "Thin" o ile się nie mylę, a to mi niestety nic nie daje.
-------------------- |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 455 Pomógł: 69 Dołączył: 23.10.2004 Skąd: Oświęcim Ostrzeżenie: (0%) ![]() ![]() |
W rezultacie wypluje "Blue"... Sprawdź krok po kroku co robi mój kod.
Ten post edytował ADeM 22.07.2009, 16:28:05 -------------------- |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 0 Dołączył: 12.12.2006 Skąd: Pszów Ostrzeżenie: (0%) ![]() ![]() |
racja..ale tak jak mówiłem kilka postów wyżej.
Model może się składać z 2 a nawet 3 wyrazów, ale nie musi. Mamy modele np: Troll Wrapper Free and Mad Target S Thin Air z tego powodu dzielenie przez exploda po spacji nic nie da moim zdaniem. -------------------- |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem w czym problem. Jeśli masz wszystkie rekordy wpisane w taki sposób
Kod [model (może być kilka wyrazów)] [kolor] [rozmiar] Kolor jest ciągiem od przedostatniej spacji do ostatniej. -------------------- Moja gra - scraby.io
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 13:17 |