[mysql] Sortowanie?

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Stef@n
Nowy
Nowy
Posty: 40
Rejestracja: sob lut 15, 2003 12:33 pm
Lokalizacja: Nowy Targ
Kontakt:

[mysql] Sortowanie?

Post autor: Stef@n »

Czesc!
Dopiero sie ucze wiec prosze o pomoc!
Mam taki skrypt:

Kod: Zaznacz cały

<? 
mysql_connect ("localhost", "root", "") or 
die ("Nie mozna sie połaczyc"); 
mysql_select_db ("baza") or 
die ("Nie mozna sie połaczyc"); 

$wynik = mysql_query ("SELECT * FROM lista;") or 
die ("Bład"); 

print "<TABLE CELLPADDING=0 BORDER=1>"; 
print "<TR><TD><B>Nr.</B></TD><TD><B>Imię</B></TD><TD><B>Nazwisko</B></TD>"; 
print "<TD><B>Wiek</B></TD></TR>\n"; 

while ($rekord = mysql_fetch_array ($wynik)) { 
$id = $rekord[0]; 
$imie = $rekord[1]; 
$nazwisko = $rekord[2]; 
$wiek = $rekord[3]; 

print "<TR><TD>$id</TD><TD>$imie</TD><TD>$nazwisko</TD><TD>$wiek</TD></TR>\n"; 
} 
print "</TABLE>"; 

?> 
 
I nie wiem jak zrobic zeby po kliknieciu np na nazwisko sortowało np. alfabetycznie lub liczbami.
Prosze was o pomoc!
Seth
Przelotem
Przelotem
Posty: 225
Rejestracja: ndz lis 03, 2002 6:01 pm
Kontakt:

Re: [mysql] Sortowanie?

Post autor: Seth »

Musisz w zapytaniu dodac polecenie SORT BY i odpowiednia nazwe kolumny po ktorej ma byc sortowany wynik.
Najlepiej do linku ktor ma posortowac wg daneego kryterium dodaj np: sort_by= i podczas ladowania strony sprawdzaj przez empty( $_GET['sort_by'] ) czy przekazano ten parametr jezeli tak to zadaj odpowiednie zapytanie do bazy.
Stef@n
Nowy
Nowy
Posty: 40
Rejestracja: sob lut 15, 2003 12:33 pm
Lokalizacja: Nowy Targ
Kontakt:

Re: [mysql] Sortowanie?

Post autor: Stef@n »

Zrobiłem pare i zadne nie działa!
1)

Kod: Zaznacz cały

<?php 
mysql_connect ("localhost", "root", "") or   
die ("Nie mozna sie połaczyc");   
mysql_select_db ("baza") or   
die ("Nie mozna sie połaczyc");   
if (!in_array($_GET['cowybrane'], array('id', 'imie', 'nazwisko', 'wiek')))  
  $_GET['cowybrane'] = 'id';  
$wynik = mysql_query ("SELECT * FROM lista ORDER BY $_GET['cowybrane'];") or   
die ("Bład");   

print "<TABLE CELLPADDING=0 BORDER=1>";   
print "<TR> 
<TD><B><a href=\"1.php?cowybrane=id\">Nr.</a></B></TD> 
<TD><B><a href=\"1.php?cowybrane=imie\">Imię</a></B></TD> 
<TD><B><a href=\"1.php?cowybrane=nazwisko\">Nazwisko</a></B></TD> 
<TD><B><a href=\"1.php?cowybrane=wiek\">Wiek</a></B></TD></TR>\n";   

while ($rekord = mysql_fetch_array ($wynik)) {   
$id = $rekord[0];   
$imie = $rekord[1];   
$nazwisko = $rekord[2];   
$wiek = $rekord[3];   

print "<TR><TD>$id</TD><TD>$imie</TD><TD>$nazwisko</TD><TD>$wiek</TD></TR>\n";   
}   
print "</TABLE>";   
?> 
Wyskakuje

Kod: Zaznacz cały

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\apache\htdocs\\karty\2.php on line 8
2)

Kod: Zaznacz cały

<? 
mysql_connect ("localhost", "root", "") or 
die ("Nie mozna sie połaczyc"); 
mysql_select_db ("baza") or 
die ("Nie mozna sie połaczyc"); 
if(!$cowybrane){$cowybrane="id";} 
$wynik = mysql_query ("SELECT * FROM lista ORDER BY '".$_GET['cowybrane']."'") or 
die (mysql_error()); 

print "<TABLE CELLPADDING=0 BORDER=1>"; 
print "<TR> 
<TD><B><a href=\"1.php?cowybrane=id\">Nr.</a></B></TD> 
<TD><B><a href=\"1.php?cowybrane=imie\">Imię</a></B></TD> 
<TD><B><a href=\"1.php?cowybrane=nazwisko\">Nazwisko</a></B></TD> 
<TD><B><a href=\"1.php?cowybrane=wiek\">Wiek</a></B></TD></TR>\n"; 

while ($rekord = mysql_fetch_array ($wynik)) { 
$id = $rekord[0]; 
$imie = $rekord[1]; 
$nazwisko = $rekord[2]; 
$wiek = $rekord[3]; 

print "<TR><TD>$id</TD><TD>$imie</TD><TD>$nazwisko</TD><TD>$wiek</TD></TR>\n"; 
} 
print "</TABLE>"; 

?> 
Tutaj nie sortuje odswieza sie tylko.
Seth
Przelotem
Przelotem
Posty: 225
Rejestracja: ndz lis 03, 2002 6:01 pm
Kontakt:

Re: [mysql] Sortowanie?

Post autor: Seth »

rany to juz drugi raz ten sam problem :roll: ;)

Kod: Zaznacz cały

<?php 
mysql_connect ("localhost", "root", "") or die ("Nie mozna sie połaczyc"); 
mysql_select_db ("baza") or die ("Nie mozna sie połaczyc"); 

if( !$_GET['cowybrane'] )
{
  $cowybrane = 'id';
}
else
{
  $cowybrane=$_GET['cowybrane'];
}

$wynik = mysql_query ( "SELECT * FROM lista ORDER BY ".$cowybrane ) or 
die (mysql_error()); 
?>
<TABLE CELLPADDING=0 BORDER=1>
<TR><TD><B><a href="1.php?cowybrane=id">Nr.</a></B></TD> 
<TD><B><a href="1.php?cowybrane=imie">Imię</a></B></TD> 
<TD><B><a href="1.php?cowybrane=nazwisko">Nazwisko</a></B></TD> 
<TD><B><a href="1.php?cowybrane=wiek">Wiek</a></B></TD></TR>
<?php 
while ( $rekord = mysql_fetch_array( $wynik ) )
{ 
print "<TR><TD>$rekord[0]</TD><TD>$rekord[1]</TD><TD>$rekord[2]</TD><TD>$rekord[3]</TD></TR>\n"; 
} 
?> 
</TABLE>
ODPOWIEDZ