|
|
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo
|
|
Problem z sortowaniem wyników MySQL |
Autor |
Wiadomość |
Sebxx
Posty: 72
|
Wysłany: 24-09-2013, 19: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: 7676
|
Wysłany: 24-09-2013, 20: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, 21: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: 7676
|
Wysłany: 25-09-2013, 15:51
|
|
|
decimal, float, double lub real. |
|
|
|
|
MQs
Pomógł: 172 razy Posty: 480
|
Wysłany: 25-09-2013, 17: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, 20:06
|
|
|
Mam tam funkcje, która zmienia przecinek na kropke zanim zostanie wysłana wartość dziesiętna do bazy. |
|
|
|
|
|
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
|
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,09 sekundy. Zapytań do SQL: 11 | |
|
|