Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ładne linki + zapytania do bazy
Gigante
post 23.03.2011, 13:59:59
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 29.09.2006
Skąd: Oława

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


Witam

Problem wyglada tak:
Strona ma miec ladne linki np: strona.pl/ladny-link (osiagam to przy pomocy .htaccess-a)
Po wejsciu na nia trzeba zadac pytanie do bazy aby pobrac dane odpowiadajace takiemu adresowi
Czy zapisaywac w bazie "ladny-link" i poprzez select wczytywac dane odpowiadajace takiemu ciagowi czy moze macie inne pomysly tak by nie obciazac bazy zbednymi danymi?
A moze da sie to ominac nie zapisujac dancych do bazy i uzywajac tylko ID
Dodam ze adres jest generowany wedle tytulu dla danej podstrony i pole tytul w bazie jest zapisany jako: Ładny link

Obecnie uzywam zapytania w stylu:
  1. $pytanie = "SELECT id,tytul FROM tabela";
  2. $wynik = mysql_query($pytanie);
  3.  
  4. // przeksztalc je wedle 'wzoru' i porownaj czy adres nie jest rowny z któryms z przekszalcnych wpisow
  5. while($wiersz = mysql_fetch_array($wynik))
  6. {
  7. if (URLuj($wiersz['tytul']) == $_GET['gra'])
  8. $id = $wiersz['id'];
  9. }

w ten sposob wyciagam ID dnago wpisu i wedle nigo pobieram dane do wysiwtlana na stronie

funkcja URLuj() przetwarza tak tytul aby byl "przetrwaialny" w pasku adresu.
Go to the top of the page
+Quote Post
erix
post 23.03.2011, 14:01:09
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Czy zapisaywac w bazie "ladny-link" i poprzez select wczytywac dane odpowiadajace takiemu ciagowi czy moze macie inne pomysly tak by nie obciazac bazy zbednymi danymi?

A co w tym złego? Szukasz konkretnego ciągu znaków zamiast niepotrzebnie marnować moc procesora.


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

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
Gigante
post 23.03.2011, 14:25:55
Post #3





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 29.09.2006
Skąd: Oława

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


ale to zajmuje miejsce w bazie... lepiej jest miec kilka kilo wiecej w bazie niz meczyc procka?
Go to the top of the page
+Quote Post
erix
post 23.03.2011, 14:41:55
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
lepiej jest miec kilka kilo wiecej w bazie niz meczyc procka?

Co to jest kilka kilo...

Jak trochę więcej się w bazie rozepchniesz, to nie będzie to tak wpływać, jak np. efekt digga/wykopu na procka.

Poza tym, wiele systemów portalowych coś takiego implementuje (Wordpress na pewno, ogólnie - Google: post slug). Lepiej pomęczyć CPU tylko przy tworzeniu/modyfikacji niż przy odczytach, których jest setki, o ile nie tysiące razy więcej.


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

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
sn1p3r
post 23.03.2011, 15:37:38
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 9.03.2011

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


Możesz robić tak, jak robią inni - czyli miksusa, w urlu masz łady tekst oraz "jakby" ukryte ID

http://sport.gadu-gadu.pl/5586918835261068...-podziekuj-i-ty
zobacz, że

http://sport.gadu-gadu.pl/5586918835261068749/

też działa

W ten sposób interesuje Cię tylko to id "ukryte" w linku, treść nie jest ważna.

Jeśli site będzie "mało" odwiedzany, to rób jak Ci wygodniej, łatwiej.
Jeśli będziesz miał duży ruch, to pamiętaj, że wybranie danych z bazy "po id" będzie działać szybciej niż "po nazwie" - kwestie indeksów na polach typu int oraz text.

Oczywiście nie możesz mieć dwóch takich samych tytułów, gdy będziesz "szukał" po nazwie (nie po id) smile.gif


--------------------
Michał Gruchała
scaleIT.pl
Go to the top of the page
+Quote Post
Gigante
post 23.03.2011, 15:52:35
Post #6





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 29.09.2006
Skąd: Oława

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


Site juz dziala od ponad 2 lat na zasadzie jaka opisalem powyzej

Jej ogladalnosc na dobe siega 4-5k z czego kazdy srednio przeglada 6 podstron

ID w adresie nie bedzie juz takim ladnym adresem jak bez ID smile.gif dlatego pozostane prawdopodobnie przy opcji zapisu ID + tytul + adres + [reszta]

Chyba ze ktos ma jeszcze inny pomysl podejscia do tej kwestii ?
Go to the top of the page
+Quote Post
erix
post 23.03.2011, 15:53:49
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
też działa

W ten sposób interesuje Cię tylko to id "ukryte" w linku, treść nie jest ważna.

Jeśli site będzie "mało" odwiedzany, to rób jak Ci wygodniej, łatwiej.

I to jest bardzo złe podejście, bo wystarczy, że ktoś linka pomyli i masz duplicate content.


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

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
nospor
post 23.03.2011, 19:10:56
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
I to jest bardzo złe podejście, bo wystarczy, że ktoś linka pomyli i masz duplicate content.
Eeee tam...
wystarczy, że ustawisz właściwy canonical i/lub przekierujesz na właściwy adres.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
erix
post 23.03.2011, 19:24:14
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No tak, ale i tak musisz sprawdzić, czy to jest właściwy slug. wink.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
nospor
post 23.03.2011, 19:32:52
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No tak. A jaki to problem sprawdzić? A poza tym tak czytam ten temat i czytam i naprawdę nie wiem o co Wy tu się "kłócicie" wink.gif


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
erix
post 23.03.2011, 19:37:49
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




O cenne kilobajty. biggrin.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
nospor
post 23.03.2011, 19:42:32
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Aaa.... kilobajty...no tak, wszystko jasne smile.gif popieram, jestem za a nawet przeciw wink.gif

@Gigante
Ten kod :
  1. while($wiersz = mysql_fetch_array($wynik))
  2. {
  3. if (URLuj($wiersz['tytul']) == $_GET['gra'])
  4. $id = $wiersz['id'];
  5. }

to jakieś nieporozumienie. Pobierasz z bazy wszystko tylko po to by znaleźć jeden rekord. Tak się nie robi. To jest szczyt nieoptymalnosci... no dobra, nie szczyt, są gorsze skrypty... Nie mniej jednak to jest złe, be, nunu,paskudztwo.. smile.gif


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Gigante
post 24.03.2011, 08:33:44
Post #13





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 29.09.2006
Skąd: Oława

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


To "paskudztwo" lada chwila zostanie zlikwidowane wink.gif Wybralem opcje bez ID w adresie (a to ze nie moga sie powtarzac to wiem, jetem tego w pelni swiadomy i taki tez jest zamysl strony by title byly unikalne).


Mam jeszcze jedno pytanie:
Czytalem gdzies/kiedys ze opcja 1 dziala szybciej:
  1. SELECT user FROM uzytkownik WHERE id=123456789

  1. SELECT user FROM uzytkownik WHERE id='123456789'

Mit czy prawda? Oczywiscie mowa o przekazywaniu wartosci liczbowych typu INT

Ten post edytował Gigante 24.03.2011, 08:37:06
Go to the top of the page
+Quote Post
nospor
post 24.03.2011, 08:37:51
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jeśli coś jest liczbą to ma to być liczba a nie tekst. Niezależnie od tego czy działa szybciej czy nie wink.gif Uczmy się pisać poprawnie.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kiler129
post 25.03.2011, 07:21:54
Post #15





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Ciekawy temat ale mam jedno pytanie - jeśli dajemy tekst bez id, np. http://domain.tld/nowe-programy i zakładamy, że to artykuł to co zrobić w wypadku zmiany nazwy? Nie zmieniać sluga czy też sprawić, że wszystkie linki przestaną działać?
Wydaje mi się, że mniejszym złem są linki http://domain.tld/a42-nowe-programy. Wtedy można sprawdzić id oraz slug, jeśli id znalazł ale slug inny to robi pernament redirect (302 jak dobrze pamietam?) i wtedy mamy wilka sytego i owcę całą - nie ma duplikatu dla google oraz linki są zawsze ważne.


--------------------
flexiCMS v2 [|||||||+--] 75% done
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: 24.07.2025 - 21:44