Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: spis alfabetyczny
Forum PHP.pl > Forum > Bazy danych > MySQL
lovefool
Witam !

Do bazy wprowadzam rekordy które rzecz jasna zaczynają się każdy na inną litere...Wyświetlane są one wszystkie w kolejności alfabetycznej. I od razu mówię, że rozwiązanie typu "like%a" "like%b" odpada ! I może teraz na przykładzie:

przykładowe rekordy:

-ananas
-arbuz
-banan
-pomarańcze
-poziomki

I chciałbym aby przy pierwszym rekordzie każdej litery alfabetu wyświetlała się ona...czyli:

A
-ananas
-arbuz

B
-banan

P
-pomarańcze
`poziomki

Mam nadzieję, że dość wyraźnie przedstawiłem problem :wink:

pozdrawiam !
BzikOS
Cytat
Mam nadzieję, że dość wyraźnie przedstawiłem problem :wink:


No właśnie nie bardzo tongue.gif
Czy chodzi Ci o pobranie wszystkich danych z bazy w kolejności alfabetycznej i w momencie wyświetlania posegregowanie ich? Jeżeli tak, to można to zrobić poprzez wygenerowanie z wyniku zapytania tablicy, np. tak:
[php:1:3da6005b3f]<?php
$alfabet = Array();

while( list( $slowo ) = @mysql_fetch_assoc( $resultat_zapytania_do_bazy ) )
$alfabet[strtoupper($slowo[0])][] = $slowo;

print_r( $alfabet );
?>[/php:1:3da6005b3f]

Pisane z palca. Czy o to chodzi?
halfik
[sql:1:536594421a]
SELECT bla bla bla... FROM cos tam ORDER BY pole1 ASC|DESC
[/sql:1:536594421a] ?
lovefool
Hehe laugh.gif
Moze faktycznie nie do końca wytłuamczyłem smile.gif


Ananas i arbuz są na literę "A" ... Więc chicałbym ją wyświetlić !
Banan na literę "B" - wyświetlić literę "B"!
Czyli w praktyce:

A
-ananas
-arbuz

B
-banan

P
-pomarańcze
-poziomki

Bo chcę uniknąć czegoś takiego, że :
[php:1:6d3f2b00d2]<?php

echo "A";
query = mysql_query("SELECT * FROM owoce WHERE nazwy LIKE 'a%'");
while ($row = mysql_fetch_array($query))
{
echo $row["nazwy"];
}

echo "B";
query = mysql_query("SELECT * FROM owoce WHERE nazwy LIKE 'b%'");
while ($row = mysql_fetch_array($query))
{
echo $row["nazwy"];
}


?>[/php:1:6d3f2b00d2]

pozdrawiam !
BzikOS
To wyciągnij wszystkie rekordy z kolumny 'nazwy' i zastosuj kod, który Ci podałem.
lovefool
Szczerze mówiąc nie wiele z tego rozumiem ... Pewnie dlatego, że pierwszy raz spotykam się z tablicami ...
W każdym razie musiałem coś pochrzanić :x

[php:1:3b750d63bd]<?php
$query = mysql_query("SELECT kategoria FROM multimedia ");
$alfabet = Array();
while( list( $slowo ) = @mysql_fetch_assoc( $query ) )
$alfabet[strtoupper($slowo[0])][] = $slowo;
print_r( $alfabet );
?>[/php:1:3b750d63bd]
z mysql_fetch_assoc wychodzą bzdury, jedynie mysql_fetch_array "niby" jest dobrze bo pokazuje pierwszą literę choć w dziwnej formie:
[php:1:3b750d63bd]<?php
Array ( [D] => Array ( [0] => dzwonki [1] => dzwonki ) [T] => Array ( [0] => teledyski [1] => teledyski [2] => teledyski [3] => teledyski [4] => teledyski ) )
?>[/php:1:3b750d63bd]

Co poradzić ?
BzikOS
Aj.. walnąłem się.. daj mysql_fetch_row zamiast fetch_array.

A postać tablicy jest najzupełniej normalna... Możesz sobie teraz z nią robić co tylko Ci się podoba... Jeżeli chcesz tylko wyświetlić to:

[php:1:ce4322d5e2]<?php
foreach( $alfabet as $litera => $slowa )
{
print( "<b>" . $litera . "<b><br>" );
foreach( $slowa as $slowo )
print( $slowo . "<br>" );
}
?>[/php:1:ce4322d5e2]
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.