Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie?
Forum PHP.pl > Forum > Bazy danych > MySQL
Stef@n
Czesc!
Dopiero sie ucze wiec prosze o pomoc!
Mam taki skrypt:
[php:1:43603d99bf]<?php
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>";

?>[/php:1:43603d99bf]

I nie wiem jak zrobic zeby po kliknieciu np na nazwisko sortowało np. alfabetycznie lub liczbami.
Prosze was o pomoc!
adwol
Cytat
I nie wiem jak zrobic zeby po kliknieciu np na nazwisko sortowało np. alfabetycznie lub liczbami.
Prosze was o pomoc!

Zrób sobie tytuł kolumny jako link w którym będziesz miał jako parametr pole po którym należy sortować. A potem w sqlu:
[sql:1:d172692f0e]SELECT * FROM lista ORDER by nazwisko[/sql:1:d172692f0e]
Tylko sprawdzaj co dostałeś w tym parametrze (czy napewno jest to nazwa pola z bazy), żebyś sobie nie zrobił dziury w skrypcie. winksmiley.jpg
Stef@n
Mozesz sie bardziej rozpisacbo nie wiem do konca?


[php:1:65e8cb14a6]<?php
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 $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>";



?>[/php:1:65e8cb14a6]
Wyskakuje: "Bład".
Cos jest chyba nie tak z tym, ale co?questionmark.gif
Kod
$wynik = mysql_query ("SELECT * FROM lista ORDER BY $cowybrane;") or

die ("Bład");
adwol
Cytat
Wyskakuje: "Bład".
Cos jest chyba nie tak z tym, ale co?questionmark.gif
Kod
$wynik = mysql_query ("SELECT * FROM lista ORDER BY $cowybrane;") or

die ("Bład");

Jaki błąd? Wymień od razu sobie wszystkie wystąpienia
[php:1:b559acceae]$cowybrane[/php:1:b559acceae]
na
[php:1:b559acceae]$_GET['cowybrane'][/php:1:b559acceae]
bo to chyba jest problemem.

A samo sprawdzanie, zamiast
[php:1:b559acceae]<?php
if(!$cowybrane){$cowybrane="id";}
?>[/php:1:b559acceae]
zrób
[php:1:b559acceae]<?php
if (!in_array($_GET['cowybrane'], array('id', 'imie', 'nazwisko', 'wiek')))
$_GET['cowybrane'] = 'id';
?>[/php:1:b559acceae]
Stef@n
Czyli cały skrypt jak ma wygldac cały?
Bo cos mi nadal nie działa.
Seth
Dostales wskazowki, wiec jezeli nadal Ci zle dziala to podaj gdzie i co.
Stef@n
Ja zrobiłem tak:
[php:1:43e1edd3e2]<?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>";
?>[/php:1:43e1edd3e2]

Wyskakuje taki bład:
Cytat
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:apachehtdocskarty2.php on line 8

I jak myslicie co zas zle zrobiłem ? sad.gif
Seth
Zamiast:
[php:1:cb7fd28a1d]$wynik = mysql_query ("SELECT * FROM lista ORDER BY $_GET['cowybrane'];")...[/php:1:cb7fd28a1d]
daj:
[php:1:cb7fd28a1d]$wynik = mysql_query ("SELECT * FROM lista ORDER BY $_GET[cowybrane]")...[/php:1:cb7fd28a1d]
Stef@n
To co wyzej sad.gif questionmark.gif?
Cytat
[php:1:0e6fad2c11]<?php
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 $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>";



?>[/php:1:0e6fad2c11]
Wyskakuje: "Bład".
Cos jest chyba nie tak z tym, ale co?questionmark.gif
Kod
$wynik = mysql_query ("SELECT * FROM lista ORDER BY $cowybrane;") or

die ("Bład");
Seth
http://forum.webinside.pl/viewtopic.php?p=1413#1413
dziala ? winksmiley.jpg
uboottd
Tajemniczy blad... grrr...

[php:1:4b53ac4254]
$wynik = mysql_query ("SELECT * FROM lista ORDER BY $cowybrane;") or die ("Bład");
[/php:1:4b53ac4254]

zamien na

[php:1:4b53ac4254]
$wynik = mysql_query ("SELECT * FROM lista ORDER BY $cowybrane;") or die (mysql_error());
[/php:1:4b53ac4254]

A skrypt Ci prawde powie...

A pewnie sie okaze ze wlasciwym rozwiazaniem jest:

[php:1:4b53ac4254]
$wynik = mysql_query ("SELECT * FROM lista ORDER BY ".$_REQUEST['$cowybrane']) or die (mysql_error());
[/php:1:4b53ac4254]
KaMeLeOn
Tu jest problem z zapisem wiersza...
Nie:
[php:1:08572a8339]<?php
mysql_connect ("localhost", "root", "") or
die ("Nie mozna sie połaczyc");
?>[/php:1:08572a8339]
Tylko:
[php:1:08572a8339]<?php
mysql_connect ("localhost", "root", "") or die ("Nie mozna sie połaczyc");
?>[/php:1:08572a8339]
Stef@n
Dałem tak!
[php:1:f941a05b90]<?php
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 ".$_REQUEST['$cowybrane']) or die (mysql_error());


print "<TABLE CELLPADDING=0 BORDER=1>";
print "<TR>
<TD><B><a href="4.php?cowybrane=id">Nr.</a></B></TD>
<TD><B><a href="4.php?cowybrane=imie">Imię</a></B></TD>
<TD><B><a href="4.php?cowybrane=nazwisko">Nazwisko</a></B></TD>
<TD><B><a href="4.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>";

?>[/php:1:f941a05b90]

I wychodz:
Kod
You have an error in your SQL syntax near '' at line 1
[/quote]
Seth
Cytat

sprawdzales to ?
Stef@n
Niedziała!!!
wychodzi:
Kod
Unknown column 'id' in 'order clause'
Seth
wiec po co podajesz w swoim kodzie: $cowybrane="id" skoro takiej kolumny wogole nie ma ?
Stef@n
Dzieki za poswiecenie o Sorki za ten bład miało byc zamiast id to nr.
SETH ten kod nie działa przyciska sie, ale nie sortuje tylko odswieza.
Seth
hmm... podaj jakie kolumny masz w bazie
Stef@n
nr | imie | nazwisko | wiek |

chyba o to chodzi?
Seth
Sprubuj tego. Wszystko powinno byc dobrze.
[php:1:aad72f406f]<?php
// Plik 1.php

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

if( empty( $_GET['order_by'] ) )
{
$order_by = 'nr';
}
else
{
$order_by = $_GET['cowybrane'];
}

$wynik = mysql_query( "SELECT * FROM lista ORDER BY ".$order_by ) or die (mysql_error());
?>

<TABLE CELLPADDING=0 BORDER=1>
<TR><TD><B><a href="1.php?order_by=nr">Nr.</a></B></TD>
<TD><B><a href="1.php?order_by=imie">Imię</a></B></TD>
<TD><B><a href="1.php?order_by=nazwisko">Nazwisko</a></B></TD>
<TD><B><a href="1.php?order_by=wiek">Wiek</a></B></TD></TR>

<?php
while ( $rekord = mysql_fetch_array( $wynik ) )
{
print "<TR><TD>$rekord[nr]</TD><TD>$rekord[imie]</TD><TD>$rekord[nazwisko]</TD><TD>$rekord[wiek]</TD></TR>n";
}
?>

</TABLE>[/php:1:aad72f406f]
piechu
<?php
mysql_connect( 'localhost', 'root', '' ) ;
mysql_select_db( 'movie' );

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

$wynik = mysql_query( "SELECT * FROM aaa ORDER BY ".$order_by ) or die
(mysql_error());
?>


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

<?php
while ( $rekord = mysql_fetch_array( $wynik ) )
{
print
"<TR>
<TD>$rekord[id]</TD>
<TD>$rekord[imie]</TD>
<TD>$rekord[nazwisko]</TD>
<TD>$rekord[wiek]</TD>
</TR>n";
}
?>

</TABLE>

id | imie | nazwisko | wiek
i po wsisnieciu ktorego kolwiek sortowania wyskakuje "You have an error in your SQL syntax near '' at line 1"
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.