CodeIgniter выводит кратные одной и той же строки - PullRequest
0 голосов
/ 07 марта 2012

Как сохранить оператор foreach для вывода нескольких строк в одной строке? Мне нужно просто вывести все строки, которые соответствуют требованию Sql, один раз. Есть идеи?

$query  = $this->db->query("SELECT * FROM churchMembers WHERE cMuserId = '{$userid}'");
$row = $query->row();
$membersChurchId = $row->cMchurchId;
$query = $this->db->query("SELECT wp.entryData, u.firstname, u.userid
                           FROM wallPosts wp, users u
                           WHERE wp.wpChurchId = '{$membersChurchId}'");
foreach ($query->result() as $row) {
    echo $row->entryData.nl2br("\n");
}

Ответы [ 3 ]

1 голос
/ 07 марта 2012

Обновление

После обсуждения проблемы возникла проблема с запросом. Правильный запрос в вашем случае будет

$query = $this->db->query("SELECT wp.entryData, u.firstname, u.userid FROM users u INNER JOIN wallPosts wp on wp.postingUserid = u.userid WHERE wp.wpChurchId = '{$membersChurchId}'");

Я думаю, что вы подходите к этому неверно. Если вам нужно вывести все строки, которые соответствуют вашим требованиям, за один раз, то вам нужно создать функцию, которая читает строки и формирует выходные данные. Но вы все равно будете использовать foreach

function buildAll($result) {
     $output = "";
     foreach($result as $row) { 
         $output .= $row->entryData."<br />"; //no need for nl2br("\n")
     }
     return $output;
}

Теперь включите эту функцию в помощник или что угодно, используйте ее в своем коде, например

$query = $this->db->query("SELECT wp.entryData, u.firstname, u.userid
                           FROM wallPosts wp, users u
                           WHERE wp.wpChurchId = '{$membersChurchId}'");

echo buildAll($query -> result()); //in one show

Однако метод, который я написал выше, хорош только тогда, когда вы используете функцию более одного раза

1 голос
/ 23 августа 2012

Хммм .. У меня тоже есть эта проблема ... Я не нашел решения о том, как избавиться от дублирующих элементов в массиве.но у меня есть временное лекарство от нашей проблемы.

используйте это:

foreach ($query->result() as $key => $row) {
    if($key%2 == 1){
        echo $row->entryData.nl2br("\n");
    }
}
0 голосов
/ 07 марта 2012

Вот что я предлагаю:

1) измените foreach на $ key => $ row и напечатайте $ key и $ row. Я помню, иногда я получал повторяющиеся записи, где одна строка $ имела ключ $, а другая - нет. Если это проблема, попробуйте result_array() вместо result(). Предполагая, что это выглядит нормально, я бы сделал ....

2) Убедитесь, что cMuserId и wpChurchId являются первичными ключами. В противном случае они могут иметь повторяющиеся записи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...