Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Sotrowanie wyników
coder()
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 3.05.2007

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


Witam.
Wiem zę większosć z Was ma w tym momencie, po przeczytaniu tematu, odzielenia odpowiedzi w stylu "To już było wiele razy użyj opcji szukaj".

Jednak ja nie znalazłem odpowiedzi na mój problem.
Więc przejdę do rzeczy:

Mam skrypt który pobiera pojedyńcze litery z bazy danych i robi z nich linki (coś jak słownik że wybiera się literę po czym wyświetlana jest cała lista wyrazóe na ta literę).

Pobrane pojedyńcze litery są sortowane wg kolejności alfabetycznej. Niestety wszystko jest dobrze dokóki nie pojawią się słowa takie jak "łoś", "żeby" itp. które mają na początku polski znak. A mianowicie wyświetlana jest tylko litera Ł i jest ona na samym końcu alfabetycznego uszeregowania a nie po literze L jak powinno być. Litery Ś Ż Ą wogóle nie są wyświetlane.
oto skrypt który mi pobiera, sortuje i wyświetla wyniki:
  1. <?php
  2. $zapytanie = "SELECT DISTINCT firstletter FROM phrases ORDER BY firstletter ASC";
  3. $query = mysql_query($zapytanie) or die(mysql_error());
  4.  
  5. while($row = mysql_fetch_assoc($query)){
  6. echo '<a href="index.php?ms=' . $_GET[ms] . '&c=1&l=' . $row[firstletter] . '">' . mb_strtoupper($row[firstletter], "UTF-8") . '</a> ';
  7. }
  8. ?>


Teraz jeśli chodzi o samo wyświetlanie wyrazów po kliknięciu na link. Wszystkie wyrazy takie jak "śruba" i "żeby" są w kategoriach gdzie nie powinny być czyli zamiast w Ś i Ż umieszczone są w S i Z.
A oto skrypt wyświetlający wyniki po kliknięciu na literę:
  1. <?php
  2. function show($litera){
  3. $zapytanie = "SELECT * FROM phrases WHERE firstletter='$litera' ORDER BY firstletter ASC";
  4.  
  5. $query = mysql_query($zapytanie) or die(mysql_error());
  6. while($row = mysql_fetch_array($query)){
  7. if ($row[used] == 1) {
  8. echo '<font color="red"><b>' . $row[phrase] . '</b></font><br />';
  9. } else {
  10. echo '<font color="green"><b>' . $row[phrase] . '</b></font><br />';
  11. }
  12. }
  13. }
  14. ?>


Czy jest jakis sposób na te 2 powyższe problemy??
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
coder()
post
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 3.05.2007

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


Zgadza się... temat podobny był. Niestety moje wyniki w bazie danych muszą pozostać niezmienione ponieważ na tej tabeli jest oparte kilkka innych skryptów które przezd dodaniem, pobraniem itp. sprawdzają czy dane słowo znajduje się w bazie (z polskimi znakami). Nie ekonomicznym było by dodawanie do każdego skryptu dodatkowych funkcji które zmienią mi polskie litery na zwykłe lub tez tworzenie dodatkowej kolumny z bazie danych. Sprawa jeszcze by przeszła w przypadku bazy danych z małą ilością wierszy. U mnie jest ich około 4 mln więc przy zapytaniu dla chociażby 1% wyników z tego znacznie obciążyło by serwer a co za tym idzie zwiększyło by czas oczekiwania na wynik skryptu.

Czy jest jakiś inny sposób który pozwoli mi na właściwe uszeregowanie wyników bez ingerowania w bazę danych??

________

A co do drugiego problemu to czy jest jakiś sposób na rozróżnianie przez skrypt liter S i Ś itp??

Zapomniałem dodać ze używam kodowania UTF-8 wiec częsć rozwiązań z tamtego tematu nie przejdzie u mnie.

Ten post edytował coder() 13.01.2008, 08:46:29
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: 8.10.2025 - 05:36