+ Antworten
Ergebnis 1 bis 2 von 2

Thema: mehrdimensionale arrays

  1. #1
    Neu an Board Avatar von Niels85
    Registriert seit
    26.01.2009
    Ort
    Buchholz in der Nordheide
    Alter
    26
    Beiträge
    51
    Bedankte sich
    1
    Erhielt 9 Danksagungen
    in 6 Beiträgen

    Standard mehrdimensionale arrays

    Hallo zusammen ich habe eine Tabelle in der Kategorien gespeichert sind und eine Tabelle Produkte in der Datenbank die zu einer Kategorie gehört.

    Ich will nun alle Kategorien aussuchen und die Produkte dazu und in einem array speichern und diese mit return zurück geben.

    Mein Modul sieht so aus
    PHP-Code:
    class ProdukteModelProdukt extends JModel
    {
        function 
    getProdukt$options )
        {
            
    $id            = @$options;
            
    $select     'm.kategorie,m.id';
            
    $from        '#__products_kategorie AS m ';
            
    $wheres[]     = 'm.published = 1';
            
    $wheres[]     = 'm.id ='.$id;
            
    $parent     'm.parent ='.$id;        
            
    $order[]     =  'parent, ordering';

            
    $query "SELECT " $select .
                    
    "\n FROM " $from .
                    
    "\n WHERE " implode"\n  AND "$wheres ).
                    
    "\n OR ".$parent
                    
    "\n ORDER BY " implode"\n  AND "$order );

            
    $this->_db->setQuery$query );
            
    $result $this->_db->loadObjectList();

            for (
    $i=0$n=count($result); $i $n$i++)    {
                
    $row = &$result[$i];
                
    $query ='SELECT produkt FROM #__products_produkt WHERE art='.$row->id;
                
    $this->_db->setQuery$query );
                
    $produkte $this->_db->loadObjectList();
                
                if (
    $produkte){
                    for (
    $b=0$c=count($produkte); $b $c$b++)    {
                        
    $result[$i] = array_merge($result[$i],array($produkte[$b]));
                    }
    //for                    
                
    }//if

                
    unset($produkte);
            }
    //for
            
    return @$result;
        }    

    das return geht an view.html.php
    PHP-Code:
    <?php
    jimport
    'joomla.application.component.view');
    class 
    ProdukteViewProdukt extends JView
    {
        function 
    display($tpl null)
        {
            
    $document =& JFactory::getDocument();
            
    $document->addStyleSheet('components/com_produkte/assets/css/produkt.css');
            
    $cid     JRequest::getVar'cid' );
            
    $model      = &$this->getModel();
              
    $rows     $model->getProdukt($cid);
            
    $this->assignRef('rows'  $rows);
            
    parent::display($tpl);
        }    
    }
    ?>
    die Ausgabe sieht in Moment so aus
    wenn ich mir nun rows mit print_r in default.php ausgeben lasse sieht es so aus
    PHP-Code:
    Array ( 
           [
    0] => stdClass Object ( [kategorie] => Brötchen [id] => 28 
           [
    1] => Array ( [kategorie] => Weizenbrötchen [id] => 29 
                          
    [0] => stdClass Object ( [produkt] => Schnittbrötchen 
                          [
    1] => stdClass Object ( [produkt] => Dänische Brötchen 
                        ) 
          ) 

    möchte aber gerne das hier haben 
    Array ( 
                [
    0] => stdClass Object ( [kategorie] => Brötchen [id] => 28 
                [
    1] => stdClass Object ( [kategorie] => Weizenbrötchen [id] => 29
                          
    Array (
                                  [
    0] => stdClass Object ( [produkt] => Schnittbrötchen 
                                  [
    1] => stdClass Object ( [produkt] => Dänische Brötchen 
                          ) 
                )
          ) 
    Geändert von Niels85 (21.09.2010 um 17:52 Uhr)

  2. #2
    Neu an Board Avatar von Niels85
    Registriert seit
    26.01.2009
    Ort
    Buchholz in der Nordheide
    Alter
    26
    Beiträge
    51
    Bedankte sich
    1
    Erhielt 9 Danksagungen
    in 6 Beiträgen

    Standard

    Hab das Problem gelöst da Joomla acuh mit Objecten arbietet heißt $row-> und nicht $row[] habe ich einfach
    ein neues Objekt eingefügt in dem ein Array aus einer MySql Abfrage erzeugt wird.

    PHP-Code:
    class ProdukteModelProdukt extends JModel
    {
        function 
    getProdukt$options )
        {
            
    $id            = @$options;
            
    $select     'm.*';
            
    $from        '#__products_kategorie AS m ';
            
    $wheres[]     = 'm.published = 1';
            
    $wheres[]     = 'm.id ='.$id;
            
    $parent     'm.parent ='.$id;        
            
    $order[]     =  'parent, ordering';

            
    $query "SELECT " $select .
                    
    "\n FROM " $from .
                    
    "\n WHERE " implode"\n  AND "$wheres ).
                    
    "\n OR ".$parent
                    
    "\n ORDER BY " implode"\n  AND "$order );

            
    $this->_db->setQuery$query );
            
    $result $this->_db->loadObjectList();
           
    // in $result sind die Kategorien abgelegt
            
    for ($i=0$n=count($result); $i $n$i++)    {
                 
    /*speicher nun die einzelnen arrays denkfehler bzw. die objekt da durch das 
    [$i]  das array aufglöst ist in $row, somit kann ich auf die einzelnen objekte mit 
    $row->objektname zugreifen*/         
                 
    $row = &$result[$i]; 
          
                
    $query ='SELECT * FROM #__products_produkt WHERE art='.$row->id;
                
    $this->_db->setQuery$query );
                
    $produkte $this->_db->loadObjectList();
                
    /* wenn zu der Kategorie Produkte gefunden wurden, häng sie als Obejekt produktliste an*/
                
    if ($produkte){
                    
    $result[$i]->produktliste $produkte;
                }
    //if
               //lösche das array $produkte
                
    unset($produkte);
            }
    //for
            
    return @$result;
        }    

    Die Ausgabe sieht nun wie folgt aus
    PHP-Code:
    Array (
                    [
    0] => stdClass Object ( [kategorie] => Brötchen [id] => 28 )
                    [
    1] => stdClass Object ( [kategorie] => Weizenbrötchen [id] => 29   
    /*neu*/     [produktliste] => Array ( 
                         [
    0] => stdClass Object ( [produkt] => Schnittbrötchen )
                         [
    1] => stdClass Object ( [produkt] => Dänische Brötchen 
                         [
    2] => stdClass Object ( [produkt] => Baguettebrötchen 
                         ) 
                     )  
               ) 

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein