Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyszukanie raz tekstu w tekście
Buffalo
post 30.04.2006, 11:09:38
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 30.04.2006

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


Hi!
Szukam funkcji, która zamieniałaby wystąpienie danego ciągu w stringu na inny, ale tylko raz (pozostałe wystąpienia ignorowała). Str_replace niestety zamienia każde pojawienie się odpowiedniego ciągu.
Proszę o pomoc! smile.gif

PS
Robię mały sklepik internetowy (na zaliczenie:) i jest mi to usuwanie potrzebne do usuwania id produktów danego klienta przechowywanych w bazie. Tabela ma format (id_klienta, id_produktow), przy czym id_produktow są zapisywanie w formacie " id1 id2 id3 ". Jest to w ogóle sensowne? smile.gif Jak to się robi profesjonalnie? smile.gif
Go to the top of the page
+Quote Post
mike
post 30.04.2006, 11:21:30
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Buffalo @ 2006-04-30 12:09:38)
PS
Robię mały sklepik internetowy (na zaliczenie:) i jest mi to usuwanie potrzebne do usuwania id produktów danego klienta przechowywanych w bazie. Tabela ma format (id_klienta, id_produktow), przy czym id_produktow są zapisywanie w formacie " id1 id2 id3 ". Jest to w ogóle sensowne? smile.gif Jak to się robi profesjonalnie? smile.gif

Boże Ty widzisz a nie grzmisz.
Kto tak bazy projektuje :/

Poprawnie powinienes użyć tabeli łączącej:

clients
id | name | surname | ... i jakieś inne pola

products
id | ... i jakieś inne pola

clients_has_products
id_client | id_product

W tabeli clients_has_products oba pola sa kluczami obcymi z tabel clients i products odpowiednio.
Go to the top of the page
+Quote Post
LBO
post 30.04.2006, 11:34:09
Post #3





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Jeżeli nie potrzebujesz tej funkcji/procedury w SQL to podpowiem Tobie, jakie funkcje php potrzebujesz - bo gotowca nie dostaniesz.
strpos" title="Zobacz w manualu php" target="_manual
strlen" title="Zobacz w manualu php" target="_manual
i najważniejsza
substr_replace" title="Zobacz w manualu php" target="_manual
W substr_replace musisz pogłówkować nad wykorzystaniem strpos" title="Zobacz w manualu php" target="_manual i strlen" title="Zobacz w manualu php" target="_manual jako parametrów.

cheers

Ten post edytował LBO 30.04.2006, 11:35:23
Go to the top of the page
+Quote Post
Buffalo
post 30.04.2006, 12:14:42
Post #4





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 30.04.2006

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


mike_mech : nie napisałem wszystkiego smile.gif Oczywiście mam 3 tabelki. Pytałem tylko, jak najlepiej zapisywać dane w tej trzeciej. Twoja koncepcja to osobny wiersza dla każdej pary id_klienta i id_produktu? Po co niepotrzebnie mnożyć wiersze? winksmiley.jpg

LBO : myślałem, że jest taka wbudowana funkcja. Widzę, że niestety sam będę się pobawić. Thx!
Go to the top of the page
+Quote Post
mike
post 30.04.2006, 12:24:16
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Buffalo @ 2006-04-30 13:14:42)
Twoja koncepcja to osobny wiersza dla każdej pary id_klienta i id_produktu? Po co niepotrzebnie mnożyć wiersze? winksmiley.jpg

Po to by mechanizmy wyszukiwania były dużo prostsze.
Moje zapytanie wyszukujące produkty dla klienta zajmie duuużo mniej czasu niż Twoje.

Juz nie mowiąc o tym że nie będe miał żadnych problemow z podstawymi operacjami. Ty masz problem już nawet z usuwaniem tongue.gif
Ciekaw jestem jak podasz klientowi ile ma produktów?

Wyznacznikim dobrej bazy nie jest ilość wierszy, tylko konstukcja tabel, króte ułatwiają operacje i szybkość tych operacji.
Go to the top of the page
+Quote Post
Buffalo
post 30.04.2006, 12:51:52
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 30.04.2006

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


No niby tak, ale tabelka może rozrosnąć się do dość pokaźnych rozmiarów. Ty pewne powiesz, że po zamówieniu można je usunąć lub przenieść:) A ilość produktów? count($produkty) smile.gif
Ale ok, chyba zmienię konstrukcję tabeli smile.gif
Go to the top of the page
+Quote Post
LBO
post 30.04.2006, 13:06:35
Post #7





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Cytat
No niby tak, ale tabelka może rozrosnąć się do dość pokaźnych rozmiarów.
Jeżeli ma się rozrosnąć to to zrobi - właśnie wtedy najważniejsza jest konstrukcja bazy danych. By wielkośc tabel nie wpływała znacznie na wykonywanie zapytań.
Cytat
Ty pewne powiesz, że po zamówieniu można je usunąć lub przenieść
Dokładnie, po to @mike_mech podał taką konstrukcję, by ułatwić to.
Cytat
A ilość produktów? count($produkty)

Nie do końca... po to są bazy danych, żeby na nie zrzucić część zadań, a nie paprać się z tym w php.
  1. SELECT COUNT(*)
  2.  
  3. FROM clients_has_products
  4.  
  5. WHERE id_client = $id_client

P.S.
Cytat
Ale ok, chyba zmienię konstrukcję tabeli

Zmieniaj, zmieniaj - nie wyjdziesz na tym źle.

Ten post edytował LBO 30.04.2006, 13:07:50
Go to the top of the page
+Quote Post
lunlog
post 30.04.2006, 20:40:08
Post #8





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 19.04.2006

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


No i w tym momencie powiem że ten temat bardzo mi się przydał biggrin.gif
Nie praktycznie ale merytorycznie.

Dzięki.
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 13.06.2025 - 16:30