FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Nykomling
|
Hejsan...
Jag har lite problem... Jag lagrar alla som kommer till min sida från någon utomstående sida... Nu vill jag enkelt göra en ny tabell i SQL där jag lagrar URL:er och antalet träffar från varje URL... Mitt problem är att jag inte vill ha med argumenten i URL:erna, alltså allt efter ? och frågetecknet.... Jag provade med något enkelt som: Kod:
$sql = "SELECT *". " FROM hits_outside". " WHERE http_referer REGEXP '^http[s]*://[a-zA-Z0-9-/]*'"; Går detta att göra, alltså i SQL frågan gruppera efter URL utan argument utan att på förhand behandla databasen eller behandla efteråt i PHP? Jag kanske rentav ska ta alla rader, och i PHP kolla en och en och ta bort argumenten och lagra det? Tacksam för svar, om någon nu förstår hur jag menade! :P |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Flitig postare
|
Prova med:
Kod:
SELECT LEFT(http_referer, LOCATE('/',http_referer,9)-1) as URL, COUNT(*) as ANTAL FROM hits_outside GROUP BY URL ORDER BY ANTAL DESC; |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Nykomling
|
Det där fungerade i flesta fallen, men inte på länkar som t.ex
http://www.google.se ![]() Om man använder regexps i MYSQL.... Kan man inte få ut det som matchade? På samma sätt som om jag använder (i PHP) preg_match( "/^[abc]*$/", "abba", $preg_matches ); Alltså det som hamnar i $preg_matches.....? |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Flitig postare
|
Ok, nu är ju inte "http://www.google.se" en korrekt referer, men liknande brukar ju dykar upp, lite beroende på vilken (skräp-)browser som används.
Enklaste sättet att fixa ditt problem är att du adderar en "/" i slutet på varje referer innan du lägger dem i din tabell. Alternativt provar du om inte detta: Kod:
SELECT LEFT(http_referer, GREATEST((1-(LOCATE('/',http_referer,9)>0))*LENGTH(http_referer)-1,LOCATE('/',http_referer,9)-1)) as URL, COUNT(*) as ANTAL FROM hits_outside GROUP BY URL ORDER BY ANTAL DESC; Som svar på: Citat:
"The regular expression support in MySQL seems to be based on traditional-style regex (like ereg() in PHP), not the more sophisticated regular expression matching found in Perl or PHP's preg_match()." |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Nykomling
|
Citat:
Jag har gjort om så jag sköter detta med PHP, för jag vill nämligen ha allt fram till argumenten, men iofs, med din nya kodsnutt och byta ut "/" med "?" så borde det fungera... Men det fungerar fint nu oxxå, inte lika fin kod då men, acceptabel för det lilla jag gör där... Tack ändå för hjälpen, är inte så insatt på MySQL's mindre använda (för mig iaf) kommandon... Ang. MySQL's REGEXP.... Det är lite synd, men men, säkert någon bra tanke bakom det! Tack igen, //Lorens |
||
![]() |
![]() |
Svara |
|
|