phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

FAQFAQ - PIERWSZA POMOC!!  regulaminREGULAMIN  SzukajSZUKAJ  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload  katalog Forów DyskusyjnychKatalog Forów   FAQ Video tutoriale

Poprzedni temat «» Następny temat
Problem z sortowaniem wyników MySQL
Autor Wiadomość
Sebxx

Posty: 72
Wysłany: 24-09-2013, 20:35   Problem z sortowaniem wyników MySQL

Witajcie.
Piszę pewien skrypt, który wymaga połączenia z bazą danych i wybrania z niej (w tym wypadku) cen SMS'a. Chcę aby ceny były posortowane i wyświetlone w kolejności rosnącej, tj od najmniejszej ceny do największej. Więc ni z gruchy, ni z pietruchy wykonałem takie zapytanie do bazy:

Kod:

SELECT * FROM `shop_sms` ORDER BY `cena` ASC


A co dostaję ? Coś takiego:


Ten cennik generowany jest przez taki kod:
Kod:

include('./lib/db.php');
$sms = mysql_query("SELECT * FROM `shop_sms` ORDER BY `cena` ASC");
$rec = mysql_num_rows($sms);
$i=1;
while($rec=mysql_fetch_row($ogl)){
echo '<tr align="center">
<td>'.$i++.'</td>
<td>'.$rec[1].'</td>
<td>'.$rec[2].'</td>
<td>'.$rec[3].'</td>
<td>'.$rec[4].'</td>
</tr>';
}


Nie wiecie może jak "zmusić" ten skrypt aby prawidłowo wyświetlał te wartości ?
 
     
Gadatliwa Kasia 

   
Woytec


Pomógł: 2596 razy
Posty: 7679
Wysłany: 24-09-2013, 21:02   

Musisz zwrócić uwagę na typ pola "cena" i na odpowiedni znak przecinka oddzielającego liczby. Teraz sortuje alfabetycznie (liczby zaczynające się na 1, potem 2 itd.).
 
     
Sebxx

Posty: 72
Wysłany: 24-09-2013, 22:23   

Te ceny wpisane są do bazy każda w osobną rubrykę, a przecinek zastąpiony jest kropką (jeśli o to chodzi). Wygląda to tak:



Co do tego sortowania alfabetycznego - da się to jakoś przestawić na "liczbowe" ?

[ Dodano: 24-09-2013, 22:27 ]
//EDIT:

Chyba jestem na dobrej drodze. Zmieniłem typ tego pola z varchar na int i teraz sortuje jak należy, ale obcina mi wartości po przecinku (kropce). Co powinienem tam ustawić jako typ ?
 
     
Woytec


Pomógł: 2596 razy
Posty: 7679
Wysłany: 25-09-2013, 16:51   

decimal, float, double lub real.
 
     
MQs

Pomógł: 172 razy
Posty: 480
Wysłany: 25-09-2013, 18:29   

Dla pieniędzy najlepszy DECIMAL. Jeśli chodzi o rozmiar to podajesz w formacie (m,n) gdzie m to max ilość wszystkich cyfr, a n to ilość po przecinku. Np. dla (6,2) możesz wpisywać ceny w zakresie -/+9999,99.

Pamiętaj, że poprawny format liczb dla php i bazy to dziesiętne miejsca po kropce, a dane przesyłane przez formularze to ciągi (string) najczęściej z przecinkiem. Żeby nie było problemów to przed wprowadzaniem danych do bazy warto je sprawdzić.
 
     
Sebxx

Posty: 72
Wysłany: 25-09-2013, 21:06   

Mam tam funkcje, która zmienia przecinek na kropke zanim zostanie wysłana wartość dziesiętna do bazy.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!

Powered by phpBB modified by Przemo © 2003 phpBB
Strona wygenerowana w 0,05 sekundy. Zapytań do SQL: 12
Polecane serwisy

Najlepsze oprogramowanie do prowadzenia sklepu internetowegoNajlepszy program do sklepu firmowany przez Przem'a

Sklep z gadżetami

serwis laptopów

phpbb

Polisy Ubezpieczeniowe TU Europa

Design Cart - Tworzenie sklepu internetowego

dnirozwoju.pl

Ranking Hostingów HostingOnline.pl

• Zamów reklamę