Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Problem z optymalnym algorytmem
Avatarus
post
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.


--------------------
Go to the top of the page
+Quote Post
erix
post
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!
Go to the top of the page
+Quote Post
Avatarus
post
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 biggrin.gif

Ś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ć?


--------------------
Go to the top of the page
+Quote Post
scanner
post
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.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
maly_swd
post
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..
Go to the top of the page
+Quote Post
dr_bonzo
post
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 tongue.gif kropka smile.gif
@Avatarus: tak jak ci maly_swd pokazal - tablica + wyciagniecie nazwy koloru z nazwy produktu


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Avatarus
post
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


--------------------
Go to the top of the page
+Quote Post
erix
post
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. tongue.gif


--------------------

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!
Go to the top of the page
+Quote Post
Avatarus
post
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?


--------------------
Go to the top of the page
+Quote Post
erix
post
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. tongue.gif


--------------------

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!
Go to the top of the page
+Quote Post
Avatarus
post
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 biggrin.gif gdzie "Thin Air" to nazwa modelu a mandarin to kolor

Nie mogę wymyślić jak to optymalnie ugryźć.


--------------------
Go to the top of the page
+Quote Post
erix
post
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!
Go to the top of the page
+Quote Post
Avatarus
post
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ć.


--------------------
Go to the top of the page
+Quote Post
ADeM
post
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?


--------------------
Go to the top of the page
+Quote Post
Avatarus
post
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)


--------------------
Go to the top of the page
+Quote Post
ADeM
post
Post #16





Grupa: Zarejestrowani
Postów: 455
Pomógł: 69
Dołączył: 23.10.2004
Skąd: Oświęcim

Ostrzeżenie: (0%)
-----


  1. <?php
  2.    $tekst = 'Thin Air Blue ==';
  3.    $tablica = explode( ' ', $tekst );
  4.    $ilosc = count( $tablica );
  5.    echo $tablica[ $ilosc-2 ];
  6. ?>


Ten post edytował ADeM 22.07.2009, 16:09:20


--------------------
Go to the top of the page
+Quote Post
Avatarus
post
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.


--------------------
Go to the top of the page
+Quote Post
ADeM
post
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


--------------------
Go to the top of the page
+Quote Post
Avatarus
post
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.


--------------------
Go to the top of the page
+Quote Post
#luq
post
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
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 13:17