[CodeIgniter] Probleem met database foreach

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen G

Jeroen G

27/10/2008 17:03:00
Quote Anchor link
Ik ben al alweer een paar uurtjes bezig met het uitzoeken hoe ik met codeigniter een pagination met foreach kan maken. Het lukt me wel met een table generator. Kan iemand me helpen?

Werkt WEL maar is NIET gewenst:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $this->table->generate($players);
?>


Werkt NIET maar is WEL gewenst:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
    <?php foreach($players as $player):?>
        <?php echo $player['name']; ?>
    <?php endforeach;?>


Model:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php class standen_model extends Model {
    function
__construct(){
        parent::Model();
    }

    function
get_standen($num, $offset) {

        $this->db->select('players.id AS playerid, players.name AS name');
        $this->db->join('players', 'players.id = leaderboard.player_id');
        $query = $this->db->get('leaderboard',$num, $offset);

        return $query;
    }
}

?>


Controller:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
class Standen extends Controller {

    function
Standen(){
        parent::Controller();
    }

    function
index() {

        // Load Pagination

            $config['base_url'] = base_url().'index.php/Standen/Index/';
            $config['per_page'] = '5';
        $config['total_rows'] = $this->db->count_all('leaderboard');
        
        $this->pagination->initialize($config);

        // Load Model

        $this->load->model('standen_model');
        $data['players'] = $this->standen_model->get_standen($config['per_page'],$this->uri->segment(3));
        
        // Load the View

        $this->load->view('standen_view', $data);
    }
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Jeroen G
 
PHP hulp

PHP hulp

22/11/2024 18:52:34
 
Arjan Kapteijn

Arjan Kapteijn

27/10/2008 18:39:00
Quote Anchor link
De uitkomst van die pagination moet je natuurlijk wel in je $data stoppen;

$this->data['pagination'] = $this->pagination->create_links();
 
Jeroen G

Jeroen G

27/10/2008 19:00:00
Quote Anchor link
Die heb ik al toegevoegd (het bovenstaande voorbeeld is niet geheel compleet) Het probleem is meer dat ik geen foreach kan toepassen op de query.

Ik heb het volgende al geprobeerd;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

         $this
->db->select('players.id AS playerid, players.name AS name');

     $query     = $this->db->get('leaderboard');

     return $query;

     foreach($query->result_array() as $row):
        
          echo $row->name;
        
     endforeach;
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
         $this
->db->select('players.id AS playerid, players.name AS name');

     $query     = $this->db->get('leaderboard');

     $rows     = $query->row_array();

     foreach($rows->result_array() as $row):
        
          echo $row->name;
        
     endforeach;
?>


p.s. ik heb de onnodige code weggelaten.
 
Arjan Kapteijn

Arjan Kapteijn

27/10/2008 19:04:00
Quote Anchor link
Je wilt een array terugkrijgen, maar die behandel je vervolgens als object?
 
Jeroen G

Jeroen G

27/10/2008 19:04:00
Quote Anchor link
Zoiets dacht ik inderdaad ook al.. Alleen hoe moet het dan wel? Ik ben een beginner met codeigniter en OOP programmeren.. :)
 
Arjan Kapteijn

Arjan Kapteijn

27/10/2008 19:09:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$this
->db->select('players.id AS playerid, players.name AS name');
$query  = $this->db->get('leaderboard');

if ($query->num_rows() > 0)
{

   foreach ($query->result() as $row)
   {

      echo $row->name;
   }
}

?>
 
Jeroen G

Jeroen G

27/10/2008 19:16:00
Quote Anchor link
Zo werkt jij inderdaad.. Alleen als ik de foreach in de view plaats dan vind ie de $query variabelen niet meer.. Vrij logisch. Ik heb deze daarom alsvolgt gedaan;

Model
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$data
['query']     = $this->db->get('leaderboard');
?>


View
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
        if ($query->num_rows() > 0) {
            foreach ($query->result() as $row) {
                    echo $row->name;
                }
        }

?>


error; Message: Undefined variable: data

Alvast bedankt voor de hulp.
 
Arjan Kapteijn

Arjan Kapteijn

27/10/2008 19:22:00
Quote Anchor link
Wat ik doe is result_array(), en die array zet ik in de $data['variabele'], vervolgens heb ik in mijn view enkel iets als;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
{variabele}
 <h2>{title}</h2>
 <p>{content}</p>
{/variabele}


Maar dat is aan jouw.
 
Jeroen G

Jeroen G

27/10/2008 19:37:00
Quote Anchor link
Heb 'm.. dankje. Dit is het geworden

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
        if ($query->row_array() > 0) {
        
            $result .= "<ul>";
            
            if ($query->num_rows() > 0) {
                foreach ($query->result() as $row) {
                        $result .= "<li>";
                        $result .= $row->name;
                        $result .= "</li>";
                }
            }


        $result .= "</ul>";
         }

        
        return $result;
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
        $data
['leaderboard'] = $this->standen_model->get_standen($rpp, $offset);
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $leaderboard;
?>
Gewijzigd op 01/01/1970 01:00:00 door Jeroen G
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.