Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: parsowanie adresu
Forum PHP.pl > Forum > PHP
GrayHat
otoz link generuje sie po przeparsowaniu pola title z bazy danych np: title = Witaj świecie to link wyglada: strona.pl/witaj_swiecie
i teraz pytanie: jak to zrobic w druga strone czyli: SELECT *</u></u> FROM tabela WHERE title = 'witaj_swiecie' zwroci 0 poniewaz witaj_swiecie != Witaj świecie.
na php.pl cos takiego jest np:
php.pl/artykuly/aplikacje_internetowe/architektura/session_handler_czesc_i

:/
atomik
Spróbuj zamiast
Cytat
SELECT * FROM tabela WHERE title = 'witaj_swiecie'

wpisać
Kod
SELECT * FROM tabela WHERE title LIKE 'witaj swiecie'

Powinno pomóc.
GrayHat
nie rozumiesz...
chodzi o pobranie wyniku z bazy ktorego title jest sparsowany aby mogl byc wyswietlony jako link...
kszychu
A nie mozesz w bazie trzymac jakiegos pola, które jednoznacznie by to definiowało? np. pole id, które może być typu varchar i zawierać wartość 'witaj_swiecie'?
ebe
Cytat
where title = 'witaj_swiecie'


funkcjami mysql'owymi (manual), zamieniasz wszystko na małe litery, usuwasz polskie ogonki, zamieniasz spacje na _ i wywalasz wysztkie inne znaki poza literami i cyframi

Cytat
where inna(pierwsza_funkcja(' ','_',title)) = 'witaj_swiecie'


nie pamiętam tych funkcji ale to nie problem sprawdzić, a znaleźć tam można odpowiedniki stringowych funkcji z php
GrayHat
Cytat(kszychu @ 2005-09-09 14:41:14)
A nie mozesz w bazie trzymac jakiegos pola, które jednoznacznie by to definiowało? np. pole id, które może być typu varchar i zawierać wartość 'witaj_swiecie'?

jest pole ID ale musze to zrobic zeby wygladalo w stylu nazwa.pl/tytul.htm a nie nazwa.pl/id/tytul.html
a co do dodania kolejnego pola np parsed_title to odpada bo trzeba by przekonwertowac ok 90 000 wynikow :/

jak to jest zrobione w php.pl?? snitch.gif
dr_bonzo
Cytat
a co do dodania kolejnego pola np parsed_title to odpada bo trzeba by przekonwertowac ok 90 000 wynikow :/

Wlasnie o tym mialem napisac. Ale to jest TYLKO smile.gif 90k rekordow -- raz to zrobisz i bedzie po klopocie.
kszychu
Cytat(GrayHat @ 2005-09-09 13:48:13)
a co do dodania kolejnego pola np parsed_title to odpada bo trzeba by przekonwertowac ok 90 000 wynikow :/

Jeśli trzeba by to robić ręcznie to faktycznie sporo, ale jeśli zapuścić autoamt to chwil kilka cool.gif
GrayHat
kszychu pomozesz przy automacie??
kszychu
Nie chce mi się pisać gotowca, bo nie pamiętam już stabdardowych funkcji obsługi mysqla biggrin.gif
W skrócie:
1. Dodaj pola parsed_title i parsed_artist najlepiej varchar(255)
2. Wykonaj zapytanie "SELECT id, artist, title FROM twoja_tabela", zwróci ci to wszystkie rekordy
<pętla while>
3. Obrób w pętli wartości artist i title:
  1. <?php
  2.  
  3. $parsed_artist = parsuj($artist);
  4. $parsed_title = parsuj($title);
  5.  
  6. $sql = "UPDATE twoja_tabela SET parsed_artist = '{$parsed_artist}', parsed_title = '{$parsed_title}' WHERE id = '{$id}'";
  7. // i wykonaj to zapytanie na bazie
  8.  
  9. ?>


Teraz funkcja parsująca:
  1. <?php
  2.  
  3. function parsuj($tekst) {
  4. $iso88592=array (32,161,198,202,163,209,211,166,172,175,177,230,234,179,241,243,182,188,191);
  5. $pl =array (95,65, 67, 69, 76, 78, 79, 83, 90, 90, 97, 99, 101,108,110,111,115,122,122);
  6.  
  7. for($i = 0; $i < 19; $i++) {
  8. $tekst=str_replace(Chr($iso88592[$i]),Chr($pl[$i]),$tekst);
  9. }
  10.  
  11. return $tekst;
  12. }
  13. ?>


Powinno działać.

P.S. Coś mamy problemy z gg :-/
GrayHat
  1. <?
  2. function parsuj($tekst) {
  3. $iso88592=array (32,161,198,202,163,209,211,166,172,175,177,230,234,179,241,243,182,188,191);
  4. $pl =array (95,65, 67, 69, 76, 78, 79, 83, 90, 90, 97, 99, 101,108,110,111,115,122,122);
  5.  
  6. for($i = 0; $i < 19; $i++) {
  7. $tekst=str_replace(Chr($iso88592[$i]),Chr($pl[$i]),$tekst);
  8. }
  9.  
  10. return $tekst;
  11. }
  12.  
  13. mysql_connect("localhost","root","x");
  14. mysql_select_db("teksty");
  15.  
  16. $sql = "SELECT id, artist, title FROM piosenki ORDER BY id DESC LIMIT 10";
  17. $res = mysql_query($sql);
  18. while ($row = mysql_fetch_array($res)){
  19. echo parsuj($row['title'])."<br>";
  20. }
  21. ?>


takie cus juz zrobilem tylko ze to nie dziala na utf-8 ;/

edit:

  1. <?
  2. $utf8=array ("Ś","ś","Ć","ć","","ę","Ą","ą","Ż","ż","Ź","ź","Ń","ń","Ó","ó","Ł","ł","`","'",'"',"-"," ");
  3. $pl =array ("s","s","c","c","e","e","a","a","z","z","z","z","n","n","o","o","l","l","","","","","_");
  4. ?>


tak to zrobilem :|

i nadal nie dziala :/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.