Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie tagów z GETa
Forum PHP.pl > Forum > PHP
Gigante
Mam TAG w adresie:
  1. http://localhost/tag=fantasy


wszystko bylo by fajnie bdyby nie fakt iz jak mam polskie znaki to musze przerabiac GETa pod ogonki:
  1. <?php
  2. if (($_GET['gra'])=='przyszlosc')
  3.        $tag = 'przyszłość';
  4. ?>


Do przechowywania TAGów opracowałem już 2 rozwiązania i ich wyświetlanie:
oparte na bazie: id | tag
  1. <?php
  2. if (strpos (strtolower($_SERVER['REQUEST_URI']), 'tag='))
  3. {
  4.    $tag = $_GET['gra'];
  5.    $tag = str_replace('-', ' ', $_GET['gra']);
  6.    if (($_GET['gra'])=='sredniowieczna')
  7.        $tag = 'średniowieczna';
  8.  
  9.    $pytanie = "SELECT gry.id,gry.nazwa,gry.description,tagi.id FROM gry, tagi WHERE tag LIKE '%".$tag."%' AND gry.id=tagi.id ORDER BY nazwa";
  10.    $wynik = mysql_query($pytanie);
  11.    $ile = mysql_num_rows($wynik);
  12.  
  13.    if ($ile>0)
  14.        while($wiersz = mysql_fetch_array($wynik))
  15.        {
  16.            $nazwa = $wiersz['nazwa'];
  17.                $jaka_nazwa = $nazwa;
  18.  
  19.                echo '<div class="mini"><a href="'.URLuj($nazwa).'"><h2>'.$jaka_nazwa.'</h2></a>';
  20.            echo $wiersz['description'];
  21.            echo '</div>'."\n";
  22.        }
  23.    else
  24.        echo '<div class="blad">Przykro mi, ale TAG podany w adresie nie został dopasowany go żadnej z gier.</div>';
  25. }
  26. else
  27. {
  28.    $pytanie = "SELECT count( * ) ilosc FROM tagi GROUP BY Tag ORDER BY `ilosc` DESC LIMIT 1";
  29.    $wynik = mysql_query($pytanie);
  30.    
  31.    while($wiersz = mysql_fetch_array($wynik))
  32.    {
  33.         $max = $wiersz['0']-3;
  34.    }
  35.  
  36.    $pytanie = "SELECT tag, count(*) as ilosc FROM tagi GROUP BY tag";
  37.    $wynik = mysql_query($pytanie);
  38.    $ile = mysql_num_rows($wynik);
  39.  
  40.    while($wiersz = mysql_fetch_array($wynik))
  41.    {
  42.         echo '<a href="tag='.URLuj($wiersz[0]).'" style="font-size: '.(int)(($wiersz['1']/$max)*15+12).'px; line-height: 125%">'.$wiersz['0'].'</a>, ';
  43.  
  44.    }
  45. }
  46. ?>


oparte na 1 kolumnie w bazie i tabelkach
  1. <?php
  2. if (strpos (strtolower($_SERVER['REQUEST_URI']), '='))
  3. {
  4.    $tag = $_GET['gra'];
  5.    $tag = str_replace('-', ' ', $_GET['gra']);
  6.    if (($_GET['gra'])=='sredniowieczna')
  7.        $tag = 'średniowieczna';
  8.  
  9.    $pytanie = "SELECT id,nazwa,description FROM gry WHERE tagi LIKE '%".$tag."%' ORDER BY nazwa";
  10.    $wynik = mysql_query($pytanie);
  11.    $ile = mysql_num_rows($wynik);
  12.  
  13.    if ($ile>0)
  14.        while($wiersz = mysql_fetch_array($wynik))
  15.        {
  16.            $nazwa = $wiersz['nazwa'];
  17.                $jaka_nazwa = $nazwa;
  18.  
  19.                echo '<div class="mini"><a href="'.URLuj($nazwa).'"><h2>'.$jaka_nazwa.'</h2></a>';
  20.            echo $wiersz['description'];
  21.            echo '</div>'."\n";
  22.        }
  23.    else
  24.        echo '<div class="blad">Przykro mi, ale TAG podany w adresie nie został dopasowany go żadnej z gier.</div>';
  25. }
  26. else
  27. {
  28.    $pytanie = "SELECT tagi FROM gry";
  29.    $wynik = mysql_query($pytanie);
  30.  
  31.    while($wiersz = mysql_fetch_array($wynik))
  32.    {
  33.        $tagi= str_replace(', ', ',', $wiersz['tagi']);
  34.        $rozbij = split(',', $tagi);
  35.  
  36.        for ($i=0; $i<=15; $i++)
  37.        {
  38.            if (!empty($rozbij[$i]))
  39.            $tablica[$rozbij[$i]] = $tablica[$rozbij[$i]]+1;
  40.        }
  41.    }
  42.    while ($element = each($tablica))
  43.    {
  44.        echo '<a href="tag='.URLuj($element['key']).'">'.$element['key'].'</a>';
  45.        echo ' ( ';
  46.        echo $element['value'];
  47.        echo ' )<br />';
  48.    }
  49. }
  50. ?>


Funkcja URLuj() zamienia spacje na myślniki a ogonki obcina

Z którego rozwiązania lepiej skożystać z powyższych; jak zobic, by w adresie widniał TAG a przy probie jego znalezienia w bazie bym nie musial tworzyc dla kazdego nowego TAGa z polskim ogonkiem "poprawionego" GETa

Jeśli zadzialalo by cos takiego bylo by super... ale nie dziala sad.gif
  1. SELECT * FROM gry WHERE tagi URLuj(LIKE) '%".$_GET['gra']."%' ORDER BY nazwa
zzeus
Może lepiej poprostu zrezygnować z polskich znaków ...
Gigante
rozwiaze to miezbyt profesjonalnie ale to nie jest duzy projekt wiec tabela z tagami nie powinna przekroczyc kilkunastu kilo

id gry | tag | tag z URLa

napewno to mozna rozwiazac lepiej ale na dzien dzisiejszy moje umiejętności pozwalają mi na takie szybkie rozwiązanie
megawebmaster
Zrezygnuj z polskich znaków - przecież to jest bezsensu, żeby stwarzać sobie samemu problem. Poza tym - zamiast robić wielokrotnie if($_GET...) $tag = ... skorzystałbym ze switch'a i jazda.

Przy okazji widzę wielką niekonsekwencję - skoro URLuj() obcina ogonki to po co je dodawać? Spacje możesz sobie szybciej zamienić w PHP korzystając z str_replace i też masz gotowe... Komplikujesz sobie życie, oj komplikujesz...
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.