Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: grupowanie wyników
Forum PHP.pl > Forum > PHP
seba15290
Witam, mam skrypt który pobiera z bazy danych rekordy i grupuje alfabetycznie:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3.  
  4. <head>
  5. <title>Wyniki wyszukiwania</title>
  6. <meta name="GENERATOR" content="Quanta Plus">
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  8. </head>
  9. <body>
  10. <?php
  11. include ('./mysql_connect.php');
  12. $zapytanie = "select * from kraj as k, people as p, adresy as a where p.id_people=a.id_pe
    ople and k.id_kraj=a.id_kraj order by p.nazwisko, p.imie;"
    ;
  13.  
  14.  
  15. if (!mysql_query($zapytanie))
  16. print "Nie udało sie odczytac danych z tabeli"; 
  17.  
  18. $wynik = mysql_query($zapytanie)
  19. or die('Błąd zapytania'); 
  20.  
  21. $ile_znalezionych=mysql_num_rows($wynik);
  22. echo "Biogramy ($ile_znalezionych)";
  23.  
  24. echo "<table cellpadding=\"0\" border=0 align=\"center\">";
  25.  echo "<tr>";
  26. //echo "<td>".imie,' ',i,' ',nazwisko."</td>";
  27. echo "</tr>";
  28.  
  29. while($r = mysql_fetch_array($wynik)) {
  30.  
  31. $cat=$r['id_people'];
  32. $nazwisko=$r['nazwisko'];
  33.  
  34.  
  35. $data = array($nazwisko);
  36. $lastLetter = null;
  37. foreach ($data as $name){
  38. $firstLetter = strtoupper(substr($name,0,1));
  39. if ($firstLetter != $lastLetter){
  40. $lastLetter = $firstLetter;
  41. echo "<td><b>$firstLetter</b></td><br />";
  42.  }
  43. echo "<tr>";
  44. echo "<td><a href=\"biogram.php?id_cat={$cat}\">".$name, ' ', $r['imie']."</a></td><br />";
  45. echo "</tr>";
  46.  
  47. }
  48. }
  49.  
  50.  
  51.  echo "</table>";
  52.  
  53.  
  54.  
  55.  
  56. ?>
  57.  
  58. </body>
  59. </html>

Problem w tym, że gdy mam np. dwie osoby których nazwiska zaczynaja się na tą samą literę to także mam dwie litery:
np.
K
Kowalski Jan
K
Kowalski Adam
Nie wiem jak zrobić aby to K pojawiało się tylko raz. Będę wdzięczny za pomoc.
Darti
Zrób sobie tablicę z pierwzych liter (wszystkich) i zastosuj array_unique()
seba15290
Cytat(Darti @ 21.10.2007, 13:20:29 ) *
Zrób sobie tablicę z pierwzych liter (wszystkich) i zastosuj array_unique()

Nie bardzo wiem jak, próbowałem robić wg przykładów na tej stronie array_unique() ale nie wychodzi. sciana.gif
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.