Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pobieranie tagów z GETa
Gigante
post
Post #1





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

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


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 (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
  1. SELECT * FROM gry WHERE tagi URLuj(LIKE) '%".$_GET['gra']."%' ORDER BY nazwa


Ten post edytował Gigante 18.11.2008, 09:42:20
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 08:27