web-dev-qa-db-fra.com

php codeigniter nombre de lignes

Je suis nouveau dans codeigniter, je veux compter toutes les lignes de la table de base de données mais la requête ne récupère pas le nombre exact de lignes . Voici le modèle

public function countRow(){
$query = $this->db->query("SELECT *,count(id) AS num_of_time FROM home");
    // print_r($query->result());
    return $query->result();
}

et c'est le contrôleur

public function countTotalrow(){
     $data['query'] = $this->home_model->countRow(); 
}

c'est la vue

foreach ($num_of_time as $row){
    <span><?php print_r($row->id);?></span>
7
Nilab

Vous pouvez utiliser la fonction d'assistance $query->num_rows()

Il renvoie le nombre de lignes renvoyées par la requête. Vous pouvez utiliser comme ceci:

$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_rows();
23
marcosh

Pour compter toutes les lignes d'une table:

echo $this->db->count_all_results('table_name');

Pour compter les lignes sélectionnées dans la table:

echo $this->db->where('name', $name)->count_all_results('table_name');
1
Umair Sultan

C'est ce qui est fait qui a résolu le même problème. Je l'ai résolu en créant une fonction qui renvoie le résultat de la requête ainsi:

function getUsers(){
$query = $this->db->get('users');
return $query->result();
}

// Le code ci-dessus peut aller dans le user_model ou quel que soit votre modèle.

Cela me permet d'utiliser une fonction pour le résultat et le nombre de lignes renvoyées.

Utilisez ce code ci-dessous dans votre contrôleur où vous avez besoin du nombre ainsi que du tableau de résultats ().

//This gives you the user count using the count function which returns and integer of the exact rows returned from the query.
$this->data['user_count'] = count($this->user_model->getUsers());

//This gives you the returned result array.
$this->data['users'] = $this->user_model->getUsers();

J'espère que ça aide.

1
TechMaestro

remplace la requête dans votre fonction modèle avec cette

$query = $this->db->query("SELECT id FROM home");

en vue:

echo $query->num_rows();
1
Kelvin Barsana
public function number_row()
 {
    $query = $this->db->select("count(user_details.id) as number")
                       ->get('user_details');              
      if($query-> num_rows()>0)
      {
          return $query->row();
      } 
      else
      {
          return false;
      } 
   }
0
Avigit.M

Si vous voulez vraiment compter toutes les lignes. Vous pouvez utiliser ceci dans la fonction de modèle:

$this->db->select('count(*)');
$query = $this->db->get('home');
$cnt = $query->row_array();
return $cnt['count(*)'];

Il retourne une valeur unique, c'est-à-dire le nombre de lignes

0
user1587985

Essayez ceci :) J'ai créé mon modèle sur compter tous les résultats

dans library_model

function count_all_results($column_name = array(),$where=array(), $table_name = array())
{
        $this->db->select($column_name);
        // If Where is not NULL
        if(!empty($where) && count($where) > 0 )
        {
            $this->db->where($where);
        }
        // Return Count Column
        return $this->db->count_all_results($table_name[0]);//table_name array sub 0
}

Votre contrôleur ressemblera à ceci

public function my_method()
{
  $data = array(
     $countall = $this->model->your_method_model()
  );
   $this->load->view('page',$data);
}

Puis appelez simplement le modèle de bibliothèque dans votre modèle

function your_method_model()
{
        return $this->library_model->count_all_results(
               ['id'],
               ['where],
               ['table name']
           );
}
0
Fel

Pour compter toutes les lignes d'une table:  

Manette:  

function id_cont() {
   $news_data = new news_model();
   $ids=$news_data->data_model();
   print_r($ids);
}

Modèle:  

function data_model() {
    $this->db->select('*');
    $this->db->from('news_data');
    $id = $this->db->get()->num_rows();
    return $id;
}
0

Vous pouvez essayer celui-ci 

    $this->db->where('field1',$filed1);
    $this->db->where('filed2',$filed2);
    $result = $this->db->get('table_name')->num_rows();
0
Hariharan.P