Autor Zpráva
Andrej.B
Profil
Zdravim,

Mam polozky v databaze v alterantivnom BOM.
Napriklad

Alterantiva *
KP425/040/KK8
KP425/080/KK8

Alterantiva 1
KP425/040/TT8
KP425/080/TT8

Alternativa 2
KP425/040/PP8
KP425/080/PP8


Potrebujem si zobrat to "/040/", vlastne je to vzdy medzi // z Alternativy * a pozriet ci sa to nachadza v
alterantive 1 a 2 a zobrazit tie polozky ktore obsahuju /040/ cize KP425/040/TT8 a KP425/040/PP8.

Ako toho dosiahnut?

Dakujem
Kajman
Profil
where sloupec like '%/040/%'
Andrej.B
Profil
To je to, ze ja vobec neviem, co tam bude. moze tam byt hocico /120/ or /180/ or /090/

Vyberie nadradenu polozku napriklad.
TR899123F3LDS
ta obsahuje

v alternative * = KP425/040/KK8, KP425/080/KK8 , TH154, HBSGHS554
v alternative 1 = KP425/040/TT8, KP425/080/TT8 , TH154, HBSGHS554 atd.
v alternative 2 = KP425/040/PP8, KP425/080/PP8 , TH154, HBSGHS554 atd.

cize v knecnom zobrazeni to potrebujem ako:

TR899123F3LDS
- KP425/040/KK8 * - zobrazi zakladnu alterativu
- - - KP425/040/TT8 1 - prida alternativu z 1
- - - KP425/040/PP8 2 - prida alternativu z 2

- KP425/080/KK8 *
- - - KP425/080/TT8 1
- - - KP425/080/PP8 2

Tie dve su rovnaka kategoria, ostatne su ine kategorie a tak si ich rozdelujem podla kategorii a nieje problem, teraz mi to spadne do rovnakej casti aj /040/ aj /080/ - su to vlastne sirky materialu

Teraz to mam ako:

TR899123F3LDS
- KP425/040/KK8 * - zobrazi zakladnu alterativu
 - - - KP425/040/TT8 1 - prida alternativu z 1
 - - - KP425/040/PP8 2 - prida alternativu z 2
 - - - KP425/080/TT8 1
 - - - KP425/080/PP8 2

- KP425/080/KK8 *
 - - - KP425/080/TT8 1
 - - - KP425/080/PP8 2
 - - - KP425/040/TT8 1 
 - - - KP425/040/PP8 2 


Najskor si budem musit najst co obsahuje vlastne ta alternativa v *

preg_match_all('#/([^/]*)/#', $input, $matches);

ukaze mi co je vlastne v tej alterantive co idem hladat. najde /040/ a mal by som hladat v tej dalsej alternative a zobrazil vsetko, co obsahuje ak tam je ten string /040/ napriklad. Neviem ci to je zrozumitelne.

Dakujem
Andrej
Kajman
Profil
Pokud je šírka důležitá vlastnost, měla by být v samostatném sloupci. Např. ji tam můžete parsovat při ukládání. Vypadá to, že by Vám ten samostatný sloupec ušetřil práci a databázi se také určitě uleví.
juriad
Profil
Mluvíš o databázi, ale nepopisuješ její strukturu, naopak se snažíš o nějaké parsování textu v PHP. Souhlasím s Kajman, že by sis měl opravit databázi a provést výpočet přímo tam.

Ale k tvé otázce. Osobně bych se vyhnul preg funkcím, toto jde provést mnohem jednodušeji:
<?php
$sirka = explode('/', 'KP425/040/KK8')[1]; # "040"
$stejna_sirka = strpos('KP425/040/TT8', '/' . $sirka . '/') !== false; # true
Andrej.B
Profil
Kajman:
Pokud je šírka důležitá vlastnost, měla by být v samostatném sloupci. Např. ji tam můžete parsovat při ukládání. Vypadá to, že by Vám ten samostatný sloupec ušetřil práci a databázi se také určitě uleví.

To je to, co absolutne nedokazem ovplyvnit. Nedokazem napisat aplikaciu, ktora by mi to pri vkladani do Db urobila. Su to CSV a moja odbornost nieje tak vysoko a casovo tiez nie.
V inom treade ste mi uz navrhovali tiez nieco podobne ohladne impoortovania csv, ale to je iny level.


juriad:

Dakujem, perfektne, funguje ako ma.
Kajman
Profil
Na to stačí klidně jeden příkaz update, který uděláte po importu.
UPDATE tabulka
SET    sirka = Substring_index(Substring_index(sloupec, '/', 2), '/', -1)
WHERE  sirka IS NULL
       AND sloupec LIKE '%/%/%' 

Přijde mi, že jste si ukosl moc velké sousto. Možná bude lepší, když projekt přenecháte někomu kompetentnějšímu.
Kcko
Profil
Kajman:
Přijde mi, že jste si ukosl moc velké sousto. Možná bude lepší, když projekt přenecháte někomu kompetentnějšímu.
Souhlas. Tazatel se ptá defakto na elementární věci a základní operace. Přijdou pravděpodobně horší věci a řešit každý požadavek (v podstate celý) na diskusi vypadá dost divně, nedejbože, aby se k tomu zadavatel nějak doklikal.
Andrej.B
Profil
Kajman, Kcko:

Velke susto? To urcite. :)
Najskor len jednoducha vec, co bude ukazovat nejake reporty a potom si kazdy dava poziadavky a bobtna to. Nerobim programatora, co sa tym zivy, to by som uz zomrel davno od hladu :)

Dakujem za pomoc, vyskusam si ten Update
juriad
Profil
Pokud má Andrej.B dostupnou relativně novou MySQL databázi, mohl by použít i generované sloupce. Pak by si mohl snadno transparentně parsovat kódy produktů a nemusel by se o to vůbec start v PHP.
Andrej.B
Profil
juriad:
je to od 5.7, ale vypada to dobre celkom.

MySQL version: 5.5.5-10.3.29-MariaDB-0ubuntu0.20.10.1 through PHP extension MySQLi
blaaablaaa
Profil
juriad:
Případně tohle může řešit triggerem v sql, pokud import probíhá mimo jeho režii.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0