Witam,
napisałem taki oto prosty kod pobierający dane z bazy:
<?php
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query = "SELECT
#__bl_players.id,
#__bl_players.first_name,
#__bl_players.last_name,
#__bl_extra_values.fvalue,
#__bl_photos.ph_filename
FROM #__bl_players
INNER JOIN #__bl_assign_photos
ON #__bl_players.id=#__bl_assign_photos.cat_id
INNER JOIN #__bl_photos
ON #__bl_assign_photos.photo_id=#__bl_photos.id
INNER JOIN #__bl_extra_values
ON #__bl_players.id = #__bl_extra_values.uid
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";
$db->setQuery($query);
$players_gk = $db->loadObjectList();
?>
<div class="mod_js_squad">
<h4>
<?php echo $params->get('pos_gk_txt'); ?></h4>
<?php foreach($players_gk as $row):
$cItemId = $params->get('customitemid');
$Itemid = JRequest::getInt('Itemid');
if(!$cItemId){
$cItemId = $Itemid;
}
$url = JRoute::_('index.php?option=com_joomsport&task=player&id='.$row->id.'&Itemid='.$cItemId); ?>
<div class="mod_js_squad_player">
<!--
<?php echo '<img style="border:1px solid #aaa;height:35px" src="media/bearleague/'.$row->ph_filename.'" title="'.$row->last_name.'" />' ?> -->
<a href="
<?php echo $url ?>">
<?php echo $row->fvalue ?>.
<?php echo $row->first_name ?> <?php echo $row->last_name ?></a>
</div>
<?php endforeach ?>
</div>
$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