Mam taki pytanie mam substancje w bazie i mam takie input ((!piwo warka=200)=count=2) and (thiocodin=450) 1
I teraz jak to interpretować to tak, żeby wyszukał substancje thiocodin gdzie dawka dobowa była 450 1 oznacza to to, że te substancje był← brane tego samego dnia i ten ! oznacza że tej substacji nie było razem z thiocodinem no i = 450 oznacza dawkę a count =2 oznacza, że ta sunstancja była brana 2 razy w ciągu dnia i teraz wiem jak to zrobić w sql mam taką nadzieje że wiem natomiast nie wiem jak ten tekst rozbić na dane za pomocą funkcji str_replace.
Czyli jak bym to tak myślał
((!piwo warka=200)=count=2) and (thiocodin=450) 1
Najpierw dzielimy dany ciąg na and
podzielić ciąg znaków według ( i ) tylko funkcja explode dzieli według jednego schematu
i teraz jak jest podzielony to dzielimy na = i sprawdzamy czy przez = dany produkt nie jest w bazie w tym prrzypadku piwo warka i thiocodin natomiast po = sprawdzamy dawkę potem sprawdzamy czy ciąg za dawką i ) nie nazywa się count jeżeli tak to pobieramy wartość i jeszcze sprawdzamy czy znak przed substancją nie jest ! i na końcu sprawdzamy liczbę w tym przypadku 1 czy to jest dobre ?
Serio chcesz bawić się w parsowanie stringów i ich obsługę? zmiana jednego znaku i wszystko szlag trafi.. zmień koncepcję. Źle to masz zaprojektowane
To jak byś ty to zrobił
Baza danych, ONP, http://goldparser.org
Marcin.Miga napisał(a):
Baza danych, ONP, http://goldparser.org
To jest algorytm jak to zrobić ?
pol90 napisał(a):
Marcin.Miga napisał(a):
Baza danych, ONP, http://goldparser.org
To jest algorytm jak to zrobić ?
To jest parser..
na samej bazie da sie to tak zaprojektować by nie trzeba było nic parsować
Ale trzeba przebudowywać strkturę bazy ?
no tak..
No to wtedy to rozwiązanie nie jest dobre ja już mam dane w tej bazie to moje było chyba lepsze.
Musisz zaprojektować odpowiednią strukturę bazy, która rozłoży tego typu rzeczy na poszczegolne relacje, lub przynajmniej kolumny.
Czyli nie robisz zapisu w stylu: thiocodin=450
Tylko masz osobną kolumnę na thiocodin i osobną na liczbę 450.
Jeżeli te wartości/wpisy są dynamiczne i nie mają ustalonej sztywnej struktury, musisz zaprojektować kilka relacji połączonych ze sobą kluczem obcym.
Ta baza ma taką konstrukcję, że jest tabela grupy, substancje i produkty
Tabela grupy
id
nazwa
Tabela produkty'
id
nazwa
color
ile_procent
cena
za_ile
Tabela substancje
nazwa
rownowaznik
color
tabela przekierowanie_grup
id
id_grupy
id_substancji
Tabela przekierowanie_substancji
id
id_substancji
id_produktu
Może komuś się będzie chciało, ale ja nie zrobię za Ciebie optymalnej/znormalizowanej struktury bazy danych.
Wbij do google i poczytaj:
"normalizacja bazy danych"
"optymalizacja struktury bazy danych"
Generalnie to co masz zapakowane w ciągu znaków "((!piwo warka=200)=count=2) and (thiocodin=450) 1" powinieneś przetłumaczyć na odpowiednie kolumny i relacje, tak zebyś nie musiał się potem bawić w wyciąganie wszystkich rekordów i filtrowanie ich funkcjami PHP. Zorganizowanie tego w taki sposób ma też wiele innych zalet, o których się przekonasz, jeżeli uda Ci się to ogarnąć.