Strona 1 z 1

Wyświetlanie rekordów - alfabetycznie

: sob kwie 30, 2005 2:53 pm
autor: Grzegorz Komsta
Mam pewien problem z wyświetlaniem rekordów z bazy. Mam skrypt php, który odpowiada za obsługę komisu motocyklowego. Jeden z plików wyświetla na stronie głownej 5 rekordów z bazy (5 motocykli). Chciałem to posortować alfabetycznie, ale niezbyt ma to ochotę działać.

Wszystko w kodzie wygląda na poprawne i wszystko działa, ale nie sortuje i czsami nawet zmienia kolejnośc wyświetlania przy odświeżaniu strony.

W czym może tkwić błąd? Wklejam kod odpowiadający za wyświetlanie rekordów:

Kod: Zaznacz cały

<?PHP
$conn = mysql_connect('db.st.interia.pl', '46302', 'y1NGihKMFx66'); // uchwyt połšczenia
mysql_select_db('db46302', $conn); //wybór bazy

function exec_query($query)
	{
	global $conn;
	$result_q = mysql_query($query, $conn); //wysyła zapytanie
	return $result_q;
	}

$query = "SELECT * FROM oferta WHERE sprzedany = 'f' ORDER BY 'opis_krotki' 'asceding'";
$result = exec_query($query);
var_dump($result); 
$num_rows = @mysql_num_rows($result);
?>
i za wyświetlanie:

Kod: Zaznacz cały

<?PHP
if(!$num_rows)
	{
	?>
	<TABLE STYLE="width: 100%" BORDER=0 CELLSPACING="5" CELLPADDING=0>
		<TR>
		<TD STYLE="width: 100%; color: #FFFFFF" VALIGN="middle" ALIGN="center"  BGCOLOR="#000000"><H1>Brak ofert</H1></TD>
		</TR>
	</TABLE>
	<?PHP
	}
else
	{
	?>
	<p>Oferta aktualna:
	<TABLE STYLE="width: 400" BORDER=0 CELLSPACING=5 CELLPADDING=0>
		
	<?PHP
	// -------------- ten fragment określa jakie rekordy na podstawie zmiennej str majš być wyświetlone -----------------------------

	if ($str == "undefined")	// jeśli ten plik nie został wywolany przez siebie samego zmienna str będzie undefined, (ku pamięci - funkcja dalej)
		$num_begin = $str = 0;
	else
		$num_begin = $str;
	$num_end = $num_begin + 5;

	if ($num_end > $num_rows) // ustala ilość rekordów na ostatniej stronie, gdy true
		$num_end = $num_rows;
	else
		$num_end = $num_begin + 5;

//-------------------------------------------------------------------------------------------------------------------------------

	for($num_begin; $num_begin < $num_end; $num_begin++)
		{
		?>
		<TR valign="middle">
		<TD bgcolor="#000000" ALIGN=center width="110"><img src="zdjecia/<?PHP echo	mysql_result($result, $num_begin, "nazwa_pliku1"); ?>" STYLE="width: 28mm;"></TD>
		<td bgcolor="#000000" width="230" style="font-family: Verdana; font-size: 11px; color: #9f9f9f; font-weight: bold; text-align: left; margin: 5"><?PHP echo mysql_result($result, $num_begin, "opis_krotki"); ?> </TD>
		<td  bgcolor="#000000" align="center"><A HREF="javascript:dalej('3','<?PHP echo mysql_result($result, $num_begin, "id"); ?>');">więcej »</A></TD>
		</TR>
		<?PHP
		}

	?>
	<TR valign="middle">
	<TD STYLE="width: 50%" ALIGN=center BGCOLOR="#000000" COLSPAN=3>
	<hr size="1" color="gray">
	<?PHP
	$strona = floor($num_rows/5); //wstępna ilość stron
	if($strona == $num_rows/5) //dokładna ilośc stron - jeśli zmienna strona po zaokršgleniu jest równa "num_rows/5" oznacza to że jest równa ilość rekordów np 10 lub 25 itp
		$ilosc_stron = $strona;
	else
		$ilosc_stron = $strona+1; //jesli warunek nie spełniony to jest nierówna ilość wierszy np 22 i na ostatniej stronie jest dwa rekordy

	if ($str > 0)
		{
		?>
		<A HREF="javascript:dalej('11','','<?PHP echo $str-5;?>');"><< Poprzednia</A>
		 
		<?PHP
		}

	$str_zm = 0;

	for ($i=1; $i<=$ilosc_stron; $i++)
		{
		?>
		<A <?PHP if($str_zm == $str) echo "STYLE=\"color: #9f9f9f;\""; ?> HREF="javascript:dalej('11','','<?PHP echo $str_zm; ?>');">[<?PHP echo $i; ?>]</A>
		<?PHP
		$str_zm = $str_zm + 5;
		}

	if (!($str == ($str_zm - 5)))
		{
		?>
		 
		<A HREF="javascript:dalej('11','','<?PHP echo $str+5;?>');">Następna >></A>
		<?PHP
		}
		?>
	</TD>
	</TR>
</TABLE>

<?PHP
	}	//end else
?>
Dzięki z góry za wszelkie porady!

Re: Wyświetlanie rekordów - alfabetycznie

: ndz maja 01, 2005 7:50 pm
autor: adax2000
no tak, chciałem ci pomóc więc przerzuciłem ten skrypt w całości jak leci do jednego pliku db2.php na swój serwer utworzyłem odpowiednią bazę i tabelę i jakie było moje rozczarowanie ten plik znowu działa jak trzeba. sporo w nim jest dziwact, rzeczy które mogłyby uchodzić za błąd ale jeśli działa to jak ci tu pomóć.

może problem jak zwykle leży gdzie indziej piszesz wklejam kod, wklejam kod, czy te dwa skrypty są w jednym pliku i w tej kolejności, może usterki powoduje inna część, brak tu jest tej funkcji w javascripcie ale uruchamiałem to w postaci np.: db2.php?str=5 i działało świetnie.

to co mogę w tej chwili doradzić to zrób tak jak ja umieść w jednym pliku wyłącznie to co było w twoim poście i w tej kolejności, nie linkuj, nie includuj niczego nawet tego javascriptu uruchom wpisz na sztywno w przeglądarce raz np. db2.php potem
db2.php?str=5 i powiedz mi czy wtedy nie działa.

uwagi jakie mogę ci podać odrazu (im mniej będziesz miał linijek kodu tym szybciej znajdziesz błąd)

1.czy 'ascending' to nazwa pola?! jeśli tak, to powinien być przedtym przecinek
jeśli nie, a chodziło ci o porządek sortowania to ASC (te trzy litery bez apostrofów)

2. zamiast floor użyj ceil zaokrągla w górę więc dużo uprości twój algorytm
a, że 0 nie zaokrągli w górę, nie jest u ciebie problemem bo napoczątku sprawdzasz czy liczba rekordów jest > od 0;

3. mógłbym tak bez końca, ale to ci nie pomoże, a może nudzi więc na tym poprzestanę nara

Re: Wyświetlanie rekordów - alfabetycznie

: pn maja 02, 2005 11:29 am
autor: Grzegorz Komsta
To ASC to w nawiasach jest przez przypadek.

Kod nie ja pisałem, tylko kolega i trochę kiespko działało, więc poprosił mnie o poprawkę i potwierdziłeś moje przypuszczenia, że kod pomimo, że skomplikowany to działa, ale ze swojej bazy jak wyświetla, to zaczyna fiksować.

Być może coś w bazie jest nie tak. Poszukam.

Dzięki!