Pracuję nad komponentem MVC i pobieram dane z dwóch tabel w joomla 2.5, ale miałem problem, że istnieją różne rodzaje taryf dla informacji o locie, więc kiedy wyświetla dane wyjściowe w tabeli, pokazuje zduplikowane wartości, tutaj jest przykładowy kod

Pytanie

$query->select('f.flight_name,f.flight_code,f.flight_dep_date,f.flight_ari_date,f.flight_dep_time,f.flight_ari_time,f.flight_dep_city,f.flight_ari_city,f.flight_child_id,d.flight_id,d.fair_type,d.fair');
        $query->from('#__fairinfo as f,#__faredescription as d');
             $query->where('f.flight_child_id = d.flight_id');

Z uwagi

<?php foreach($this->items as $i => $value):
?>
    <tr class="row<?php echo $i % 2; ?>">
        <td>
            <?php echo $value->flight_child_id; ?>
        </td>
        <td>
            <?php echo JHtml::_('grid.id', $i, $value->flight_child_id); ?>
        </td>
        <td><?php echo $value->flight_name; ?></td> 
            <td><?php echo $value->flight_code; ?></td>
            <td><?php echo $value->flight_dep_date; ?></td>
            <td><?php echo $value->flight_ari_date; ?></td>
            <td><?php echo $value->flight_dep_time; ?></td>
            <td><?php echo $value->flight_ari_time; ?></td>
            <td><?php echo $value->flight_dep_city; ?></td>
           <td><?php echo $value->flight_ari_city; ?></td>
           <td><?php    
         echo $value->fair_type; 
             echo $value->fair; ?>
            </td>
         </tr>
<?php endforeach; ?>

Tutaj jest wystawiony

4 G8-334    G8-334  2012-05-22  2012-05-22  11:10:00    13:05:00    MUMBAI (TERMINAL 1B)    NEW DELHI (TERMINAL 1D)     GoSmart7,566.00 INR  
4 G8-334    G8-334  2012-05-22  2012-05-22  11:10:00    13:05:00    MUMBAI (TERMINAL 1B)    NEW DELHI (TERMINAL 1D)     GoFlexi7,829.00 INR
4 G8-334    G8-334  2012-05-22  2012-05-22  11:10:00    13:05:00    MUMBAI (TERMINAL 1B)    NEW DELHI (TERMINAL 1D)     GoBusiness9,718.00 INR
4 G8-334    G8-334  2012-05-22  2012-05-22  11:10:00    13:05:00    MUMBAI (TERMINAL 1B)    NEW DELHI (TERMINAL 1D)     GOPROMO(ROUNDTRIP)7,136.00 INR
4 G8-334    G8-334  2012-05-22  2012-05-22  11:10:00    13:05:00    MUMBAI (TERMINAL 1B)    NEW DELHI (TERMINAL 1D)     GoSpecial Sold out/Not

Wiersze 4 są drukowane 5 razy, ponieważ istnieje pięć rodzajów taryf

0
mishi 31 sierpień 2012, 08:41

2 odpowiedzi

Najlepsza odpowiedź

Proszę zrób tak

$query->select('f.flight_child_id,f.flight_name,f.flight_code,f.flight_dep_date,f.flight_ari_date,f.flight_dep_time,f.flight_ari_time,f.flight_dep_city,f.flight_ari_city,f.flight_child_id');
        $query->from('#__fairinfo as f');                

Z uwagi

<?php foreach($this->items as $i => $value):
?>
    <tr class="row<?php echo $i % 2; ?>">
        <td>
            <?php echo $value->flight_child_id; ?>
        </td>
        <td>
            <?php echo JHtml::_('grid.id', $i, $value->flight_child_id); ?>
        </td>
        <td><?php echo $value->flight_name; ?></td> 
            <td><?php echo $value->flight_code; ?></td>
            <td><?php echo $value->flight_dep_date; ?></td>
            <td><?php echo $value->flight_ari_date; ?></td>
            <td><?php echo $value->flight_dep_time; ?></td>
            <td><?php echo $value->flight_ari_time; ?></td>
            <td><?php echo $value->flight_dep_city; ?></td>
           <td><?php echo $value->flight_ari_city; ?></td>
           <td><?php 
                $model = $this->getmodel('Your model name');
                echo nl2br($model->functionname($value->flight_child_id));
            ?></td>
         </tr>
<?php endforeach; ?>

Funkcja modelu.

functionname($id) {
        $db     = JFactory::getDBO();
        $query->select('d.flight_id,d.fair_type,d.fair');
        $query->from('#__faredescription as d');
        $query->where('d.flight_id ='.$id);
        $db->setQuery( $query );
        $rows    = $db->loadObjectList();
        foreach($rows as $row) {
            $rowss[] = $row->fair_type.','.$row->fair;
        }
        $row    = implode("\n", $rowss);
            return $row;
 }
1
rynhe 31 sierpień 2012, 10:40

Powód zduplikowanej wartości: Twoja tabela #__fairinfo ma jeden wiersz, a tabela #__faredescription ma 4 wiersze, więc tylko jej zduplikowana wartość jest wyświetlana

Wygląda na to, że Twoje oczekiwania są takie

4 G8-334    G8-334  2012-05-22  2012-05-22  11:10:00    13:05:00    MUMBAI (TERMINAL 1B)    NEW DELHI (TERMINAL 1D)     GoSmart7,566.00 INR  
                                                                                                                        GoFlexi7,829.00 INR
                                                                                                                        GoBusiness9,718.00 INR
                                                                                                                        GOPROMO(ROUNDTRIP)7,136.00 INR
                                                                                                                        GoSpecial Sold out/Not

Dobrze ?

0
rynhe 31 sierpień 2012, 09:23