Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sortowanie wg tabel sql
Forum PHP.pl > Forum > Bazy danych
lovefool
weźmy taki przykład tabeli (2 kolumny):

[ksiązka] [potop]
[ksiązka] [krzyzacy]
[ksiązka] [wolodyjowski]
[film] [identify]
[film] [matrix]

wynik powinien się wyświetlić w następujący sposób:

ksiazka:
-potop
-krzyzacy
-wolodyjowski

film:
-identify
-matrix


ktoś ma pomysł jak coś takiego zrobić ? oczywiście rekordy będą miały różną postać więc
  1. <?php
  2. WHERE kolumna1 = ksiązka
  3. ?>
nie wchodzi w grę
dr_bonzo
Przydala by sie struktura tabeli.
  1. SELECT *
  2. FROM `tabela` ORDER BY typ_produktu ASC/DESC, tytul_produktu ASC/DESC

EDIT: usunalem ten <span>
lovefool
struktura ?! tabela ma dwie kolumny, co o niej jeszcze można napisać ?
ORDER BY także nie jest tym o co mi chodzi ponieważ jak juz także pisałem rekordy z 1 kolumny nie będą zawsze miały postać "ksiazka" lub "film". Może tam być cokolwiek innego!
Chodzi po prostu o to, że wynik ma być uzależniony od 1 kolumny; ręcznie gdybym to chciał robić wyglądało by to tak:

  1. <?php
  2.  
  3. echo &#092;"ksiązka:\";
  4. $q = mysql_query(&#092;"SELECT kolumna2 FROM tabela WHERE kolumna1='ksiazka' \");
  5. while ($row = mysql_fetch_array($q)) {
  6. echo $row[&#092;"kolumna2\"];
  7. }
  8.  
  9. ?>

tak samo pozniej dla "film" itp itd. Ale mnie chodzi o automatyczne generowanie (sortowanie) tych wyników
kszychu
Wydaje mi się, że nie zrobisz tego w mysqlu. Musisz obrobić to w php.
Fipaj
A może w jednej tabeli kategorie, a w drugiej produkty itp?

Wtedy wyglądało by to jakoś tak:
  1. <?php
  2.  
  3. $db = mysql_connect(&#092;"localhost\", \"aaaaaaaa\", \"bbbbbb\");
  4. mysql_select_db(&#092;"moja_baza\");
  5. $zapytanie1 = mysql_query (&#092;"SELECT * FROM kategorie\");
  6. while ($wiersz = mysql_fetch_array($zapytanie1)) {
  7. print ($wiersz['nazwa'] &#092;":n\");
  8. $zapytanie2 = mysql_query (&#092;"SELECT * FROM produkty WHERE kategoria = $wiersz['nazwa']\");
  9. while ($wiersz2 = mysql_fetch_array($zapytanie2)) {
  10. print ($wiersz2['nazwa']);
  11. }
  12. }
  13. mysql_close ($db);
  14.  
  15. ?>


mogą być błędy, pisałem na szybko, ale...
lovefool
Cytat(kszychu @ 2005-02-25 12:57:44)
Wydaje mi się, że nie zrobisz tego w mysqlu. Musisz obrobić to w php.

zdaję sobie z tego sprawę, dlatego umieściłem topic w php winksmiley.jpg

w każdym razie już kiedyś miałem coś podobnego w swoich rękach... z tą różnicą, że poniższy skrypt wyświetlał pierwszą literę jednej kolumny, ale zasada działąnia myślę, jest najbliższa temu co chcę osiągnąć:

  1. <?php
  2.  
  3. if($q=mysql_query(&#092;"SELECT nazwy FROM piosenki ORDER BY nazwy ASC \")) 
  4. { 
  5. $query = mysql_query(&#092;"SELECT nazwy FROM piosenki ORDER BY nazwy ASC\"); 
  6.  
  7.  $alfabet = Array(); 
  8.  while( list( $slowo ) = @mysql_fetch_row( $query ) ) 
  9.  $alfabet[strtoupper($slowo[0])][] = $slowo; 
  10.  foreach( $alfabet as $litera => $slowa ) 
  11.  { 
  12.  
  13.  print( &#092;"<b>\" . $litera . \"</b><br>\" ); 
  14.  foreach( $slowa as $slowo ) 
  15.  {
  16.  print( $slowo ); 
  17.  }
  18. }
  19. } 
  20. ?>
kłulik
Tak może być?
  1. <?php
  2.  
  3. $sql = 'SELECT DISTINCT kolumna1 FROM tabela';
  4. $rs = mysql_query($sql);
  5. while($row=mysql_fetch_array($rs)){
  6. echo '<b>'.$row[0].':</b><br />';
  7. $sql2 = &#092;"SELECT kolumna2 FROM tabela WHERE kolumna1='\".$row[0].\"'\";
  8. $rs2 = mysql_query($sql2);
  9. while($row2 = mysql_fetch_array($rs2)){
  10. echo '&nbsp;&nbsp;&nbsp; - '.$row2[0].'<br />';
  11. }
  12. }
  13. ?>
lovefool
pewnie, że może być kłulik smile.gif w zasadzie to Twoj post od Fipaja niewiele się różni poza jednym małym wyjątkiem - DISTINCT ! Szczerze powiedziawszy pierwszy raz się z tym spotkałem i przyznam, że wiele rzeczy to rozwiazuje winksmiley.jpg dzieki
Bakus
php->Bazy danych
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.