Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sortowanie danych
tomaszek83
post 5.09.2013, 11:09:25
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 5.09.2013
Skąd: Gorzów Wlkp.

Ostrzeżenie: (0%)
-----


Witam,

napisałem taki oto prosty kod pobierający dane z bazy:

  1. <?php
  2. $db = JFactory::getDBO();
  3. $query = $db->getQuery(true);
  4.  
  5. $query = "SELECT
  6. #__bl_players.id,
  7. #__bl_players.first_name,
  8. #__bl_players.last_name,
  9. #__bl_extra_values.fvalue,
  10. #__bl_photos.ph_filename
  11. FROM #__bl_players
  12. INNER JOIN #__bl_assign_photos
  13. ON #__bl_players.id=#__bl_assign_photos.cat_id
  14. INNER JOIN #__bl_photos
  15. ON #__bl_assign_photos.photo_id=#__bl_photos.id
  16. INNER JOIN #__bl_extra_values
  17. ON #__bl_players.id = #__bl_extra_values.uid
  18. WHERE #__bl_players.team_id = ".($params->get('team_id'))." AND #__bl_extra_values.f_id = ".($params->get('squad_number'))." AND #__bl_players.position_id = ".($params->get('pos_gk'))." ORDER BY #__bl_extra_values.fvalue ASC";
  19.  
  20. $db->setQuery($query);
  21. $players_gk = $db->loadObjectList();
  22. ?>
  23.  
  24. <div class="mod_js_squad">
  25. <h4><?php echo $params->get('pos_gk_txt'); ?></h4>
  26.  
  27. <?php foreach($players_gk as $row):
  28. $cItemId = $params->get('customitemid');
  29. $Itemid = JRequest::getInt('Itemid');
  30. if(!$cItemId){
  31. $cItemId = $Itemid;
  32. }
  33. $url = JRoute::_('index.php?option=com_joomsport&task=player&id='.$row->id.'&Itemid='.$cItemId); ?>
  34. <div class="mod_js_squad_player">
  35. <!-- <?php echo '<img style="border:1px solid #aaa;height:35px" src="media/bearleague/'.$row->ph_filename.'" title="'.$row->last_name.'" />' ?> -->
  36. <a href="<?php echo $url ?>"><?php echo $row->fvalue ?>. <?php echo $row->first_name ?> <?php echo $row->last_name ?></a>
  37. </div>
  38. <?php endforeach ?>
  39.  
  40. </div>
  41.  

$params są podawane z formularza.

I teraz mały problem. Zmienna $fvalue przechowuje numer zawodnika. Niestety w bazie jest on zdefiniowany jako pole tekstowe (nie można tego zmienić gdyż jest to komponent firmy trzeciej do którego napisałem moduł). Sortowanie wyników wygląda więc następująco (1,12,13,14,2,21,23,3,34,35... itd..). Jak to zmienić? Całość działa bez zarzutu poza tym sortowaniem.



Za wszelkie cenne uwagi z góry dziękuję.

Pozdrawiam
Tomek

Ten post edytował tomaszek83 5.09.2013, 11:41:29
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
timon27
post 5.09.2013, 12:16:29
Post #2





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Najprościej zamiast:
  1. ORDER BY kolumna

dać:
  1. ORDER BY 0+kolumna

Go to the top of the page
+Quote Post
mar1aczi
post 5.09.2013, 12:17:18
Post #3





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Do pobrania/sortowania #__bl_extra_values.fvalue wykorzystaj funkcję lpad

Ten post edytował mar1aczi 5.09.2013, 12:17:57


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
tomaszek83
post 5.09.2013, 13:23:06
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 5.09.2013
Skąd: Gorzów Wlkp.

Ostrzeżenie: (0%)
-----


Dziękuję za podpowiedzi. Poradziłem sobie troszkę inaczej. Zmodyfikowałem sortowanie w taki sposób:

  1. ORDER BY CAST( SUBSTRING_INDEX( e327t_bl_extra_values.fvalue, ' ', 1 ) AS SIGNED )";


I działa smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 09:55