Skocz do zawartości

Zbiorcze przesunięcie sekcji w opisie aukcji

Polecane posty

Dzień dobry wszystkim, a w szczególności czarodziejom SQLa! :)

 

Czy istnieje jakikolwiek sposób na zbiorcze przemieszczenie jednej z sekcji opisu aukcji (nie trwających, lecz przygotowanych do wystawienia)?

 

Jak wiemy, opcja wstawienia sekcji pozwala dodać na pozycjach 1-5 i tak samo od końca. Niestety mam sytuację, że żadna z tych opcji nie jest wystarczająca, a trzeba zmodyfikować 630 ofert...

 

W grę wchodzi dodanie sekcji na pozycji więcej niż 5 od góry, lub dodanie na pozycji 5tej, a potem przesuniecie o 3 niżej. Niestety przesuwanie ręcznie w 630 aukcjach zajmie około 2.5 godziny klikania idealnie w tempo... Nie wiem czy jestem w stanie, aż tak przejść w tryb człowieka-robota... 😅

Link to postu

Cześć, a nie lepiej poprzez szablon aukcji to zrobić. podepniesz taki szablon jako domyślny do towaru w Sello i nawet, jeżeli kiedyś będziesz potrzebował zrobić zmiany w opisie, bo np. napiszesz "Piękna hoinka z bąbkami", to w łatwy sposób będziesz mógł to poprawić, poprawiając błąd bezpośrednio w Towarze, w opisie :)

Powiem więcej jeżeli korzystasz z Subiekta Nexo (nie znam GT) i tam w pełnej charakterystyce towaru trzymasz opis, to wystarczy taki opis podzielić na sekcję, wykorzystując niestandardowy ciąg znaków, np:

#1

tutaj opis w sekcji pierwszej

#2

tutaj opis w sekcji drugiej

#3

itd...

 

Następnie w szablonie w pierwszej sekcji wpisujesz tag:

 

[Towar::Opis | substr_between=`#1--#2`]

 

Jest to pierwsza sekcja, gdzie w opisie pojawi się wszystko co zawiera się między #1, a #2

W kolejnej sekcji zastępujesz `#1--#2` na `#2--#3`, wtedy w opisie aukcji pojawi się wszystko z Subiekta, co zawiera się między znakami #2, a #3 itd...

 

I powyższym sposobem można dodać sekcję na pozycji, w Twoim przypadku 8, w 630 aukcjach, poprawiając tak naprawdę tylko jeden opis :)

Link to postu

Niestety każda aukcja jest inna, w różnych miejscach. Są to oferty komputerów, więc tu inny dysk, tam inny RAM etc... Stąd nie ma żadnego podpięcia do towarów i szablonów.

Sekcja, którą trzeba dodać jest za to taka sama dla każdej oferty, i ma trafić w to samo miejsce, a konkretnie w 10. miejsce od góry.

 

Tak koncepcyjnie, to najlepszy byłby skrypt, bazujący na tym co robi opcja wstawienia sekcji z menu zmian zbiorczych, ale zmodyfikowany w taki sposób, żeby właśnie dodać sekcję na pozycję 10. zamiast 5.

 

Problem w tym, że nie mam ani wiedzy, ani znajomości tematu na tyle głębokiej, żeby samemu rozkminić jak takie coś przeprowadzić. 😭

Link to postu

Do serwera dostępu nie mam, a dogadywanie się z szefem, o zmienianie SQL'a, to była by jeszcze większa strata czasu. 😅
Chyba po prostu przeklikam się przez te oferty, pewnie faktycznie makro ogarnę.

 

Dziękuję za wszelkie informacje.

 

P.S.
Sugestia do któregoś patcha: przerobić wybór miejsca do wstawienia nowej sekcji (w ramach zmian zbiorczych) z listy ograniczonej do kilku predefiniowanych pozycji na np. miejsce do wpisania pozycji wyrażonej liczbą? :)

Link to postu

Dobra, coś tam wymodziłem :), ale zalecam zrobienie archiwizacji bazy przed rozpoczęciem zabaw, bo może to nieodwracalnie uszkodzić opisy, gdyby coś poszło nie tak.

 

Na początek trzeba dodać do bazy nową funkcję, wykonując poniższy skrypt:

CREATE FUNCTION charindex2
(
    @TargetStr nvarchar(max), 
    @SearchedStr nvarchar(32), 
    @Occurrence int
)
RETURNS int
as
begin

	declare @pos int, @counter int, @ret int
	set @pos = CHARINDEX(@TargetStr, @SearchedStr)
	set @counter = 1

	if @Occurrence = 1 set @ret = @pos

	else
	begin
		while (@counter < @Occurrence)
		begin
			select @ret = CHARINDEX(@TargetStr, @SearchedStr, @pos + 1)
			if @ret = 0 return(@ret)
			set @counter = @counter + 1
			set @pos = @ret
		end
	end
	RETURN(@ret)
end

umożliwia ona wyszukiwanie n-tego wystąpienia fragmentu tekstu - przyda się do wyszukiwania n-tej sekcji w opisie.

 

Następnie należy zmianami zbiorczymi dodać nową sekcję na pierwszej pozycji.

 

Po tym wykonać poniższy skrypt SQL, który skopiuje pierwszą sekcję na pozycję 11 (czyli 10 bez pierwszej sekcji) dla aukcji o nazwie wpisanej na końcu (należy tam wpisać nazwę aukcji testowej, znajdującej się w aukcjach przygotowanych) oraz dla wybranego konta Allegro

update au_Allegro set aal_Description = 
 stuff(convert(nvarchar(max),aal_Description), dbo.charindex2('{"items":',aal_Description, 11), 0, 
 substring(aal_Description,dbo.charindex2('{"items":', aal_Description, 1), 
				dbo.charindex2('{"items":',aal_Description, 2) - dbo.charindex2('{"items":',aal_Description, 1)))	
from au_Allegro
where aal_AuctionId in (select au_id from au__auction
join reg__Registration on au_RegId = reg_id
where au_State = 0 and au_type = 10
and dbo.charindex2('{"items":', aal_Description, 11) <> 0
and reg_username = 'TUTAJ NAZWA KONTA'
and au_Title = 'TUTAJ PODAĆ NAZWĘ TESTOWEJ AUKCJI')

Sprawdzić czy to jest to o co chodziło.

Usunąć zmianami zbiorczymi sekcję pierwszą.

Wysłać tę aukcję do Allegro - aby upewnić się, że opis przeżył modyfikacje ;).

 

Jeśli wszystko przebiegło w porządku to można wykonać poniższy skrypt, który zmodyfikuje opisy we wszystkich przygotowanych, niegotowych do wystawienia dla wybranego konta Allegro:

update au_Allegro set aal_Description = 
 stuff(convert(nvarchar(max),aal_Description), dbo.charindex2('{"items":',aal_Description, 11), 0, 
 substring(aal_Description,dbo.charindex2('{"items":', aal_Description, 1), 
				dbo.charindex2('{"items":',aal_Description, 2) - dbo.charindex2('{"items":',aal_Description, 1)))	
from au_Allegro
where aal_AuctionId in (select au_id from au__auction
join reg__Registration on au_RegId = reg_id
where au_State = 0 and au_type = 10
and dbo.charindex2('{"items":', aal_Description, 11) <> 0
and reg_username = 'TUTAJ NAZWA KONTA')

Na koniec, można usunąć dodaną na początku funkcję

drop function charindex2

 

  • Lubię to 1
Link to postu

O, wow, ok, przetestuję.

Najpierw jednak kluczowe pytanie: skrypt kopiujący sekcję z pozycji 1 na 11 (już w wersji bez podawania konkretnej aukcji, tylko dla wszystkich) zmodyfikuje wszystkie przygotowane aukcje bez względu na konto Allegro? Czy status "gotowe do wysłania" lub "nie gotowe do wysłania" ma znaczenie? Pytam, bo pod Sello mamy podpięte 4 konta Allegro.

Link to postu

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Użytkownik forum
Odpowiedz...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...