Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2011, 23:54   #1
romanet
Пользователь
 
Регистрация: 11.01.2011
Сообщений: 13
По умолчанию Цикл выводит только одну запись из базы

Привет всем нужна ваша помощь уже весь день пишу одну функцию и не могу понять почему она работает некорректно. Суть такова вытягиваю из одной таблицы массив индефикаторив по которым должен пройти выборка из другой таблицы и пишу следующие действия
PHP код:
    public function get_friends_id($friends)
        {
              
                 foreach (
$friends as $frends)
       {
           
$friends_id $frends['friends_id'];
           
$this->db->where('anccet_id'$friends_id);
           
$query $this->db->get('anccet');
            return 
$query->result_array();                                 
           }
    } 
но к сожалению с такой записью выводит только 1 запись
romanet вне форума Ответить с цитированием
Старый 06.07.2011, 12:37   #2
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Учимся дебажить, хотя бы примитивно
1. Что приходит в функцию?? var_dump($friends)
2. Какой запрос получается var_dump($query)
3. Что получаем в итоге var_dump($query->result_array())
P.S. Если хотите сделать выборку из двух таблиц, то зачем тут пхп ??? читаем мат. часть про join в mysql и наслаждаемся жизнью
Cronos20 вне форума Ответить с цитированием
Старый 06.07.2011, 14:41   #3
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

У вас return стоит внутри цикла foreach. Он прекращает работу функции при первом же проходе. Пересмотрите структуру функции.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 06.07.2011, 22:04   #4
romanet
Пользователь
 
Регистрация: 11.01.2011
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Johnatan Посмотреть сообщение
У вас return стоит внутри цикла foreach. Он прекращает работу функции при первом же проходе. Пересмотрите структуру функции.

Я пробовал и внутри и не только. Всеравно вывод только 1 из записей не могу понять почему. Относительно того что писал перед вами какой тип этот в читабельный и пхп здесь не используется здесь все идет по принципу sql за 1 лишь исключением я извлекаю из базы все поля которые приравниваются полю первой таблицы и массива данных другого поэтому мне и надо пропускать все через фореч. Сам прикол что все работает и при видруци массива есть все данные но на вывод идет только 1 запись. И честно говоря я впервые написал на форумах о возникновения проблемы и кроме массы вопросов и каких глупуватих ответов я не получил никакой конкретной инфи типа смотри ты тут загнался зделай так и все будет пахать! Одним словом только время потратил.
romanet вне форума Ответить с цитированием
Старый 06.07.2011, 22:32   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от romanet Посмотреть сообщение
И честно говоря я впервые написал на форумах о возникновения проблемы и кроме массы вопросов и каких глупуватих ответов я не получил никакой конкретной инфи типа смотри ты тут загнался зделай так и все будет пахать! Одним словом только время потратил.
Согласен на все 100% - книжки и мануалы читать гораздо полезнее...

Этим вам, для начала, и нужно заняться - чтоб вы выполняли в своем коде осознанные действия, а не работали "методом тыка":
Цитата:
Я пробовал и внутри и не только.
По сабжу - воспользуйтесь советом Cronos20 - выведите var_dump результат работы вашей функции(прямо в Контроллере, сразу после её вызова) - так вы сможете понять, корректно ли работает ваша функция.
Возможно, результат её работы дополнительно обрабатывается в Контроллере или в Отображении.

PS: вообще зря вы без уверенного знания PHP хватаетесь за фреймворк - сказки это всё, что с фреймворком хорошо знать PHP не нужно...
Andkorol вне форума Ответить с цитированием
Старый 07.07.2011, 11:58   #6
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Цитата:
И честно говоря я впервые написал на форумах о возникновения проблемы и кроме массы вопросов и каких глупуватих ответов я не получил никакой конкретной инфи типа смотри ты тут загнался зделай так и все будет пахать! Одним словом только время потратил.
Вам уже сказали что сделать надо. Видно руки не из того места растут.
ssdm вне форума Ответить с цитированием
Старый 08.07.2011, 12:03   #7
romanet
Пользователь
 
Регистрация: 11.01.2011
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Согласен на все 100% - книжки и мануалы читать гораздо полезнее...

Этим вам, для начала, и нужно заняться - чтоб вы выполняли в своем коде осознанные действия, а не работали "методом тыка":

По сабжу - воспользуйтесь советом Cronos20 - выведите var_dump результат работы вашей функции(прямо в Контроллере, сразу после её вызова) - так вы сможете понять, корректно ли работает ваша функция.
Возможно, результат её работы дополнительно обрабатывается в Контроллере или в Отображении.

PS: вообще зря вы без уверенного знания PHP хватаетесь за фреймворк - сказки это всё, что с фреймворком хорошо знать PHP не нужно...
Я вивів даний масив і в контролері і навіть в виді однак є нюанс якй я не розумі. А точніше на знаю як зробити вся сють в наступному:

Я прописую в модель функцію з таким видом
PHP код:
        public function get_friends_id($friends)
        {
    
$retval = array();
    foreach (
$friends as $frends) {
        
$friends_id $frends['friends_id'];
        
$this->db->where('anccet_id'$friends_id);
        
$query $this->db->get('anccet');
        
$retval $query->result_array(); 
      
   
   
    }
     return 
$retval;
   
        } 
то мені присилає лише 1 запись і це зрозумло чому.
Правильно буде прописати так

PHP код:
        public function get_friends_id($friends)
        {
    
$retval = array();
    foreach (
$friends as $frends) {
        
$friends_id $frends['friends_id'];
        
$this->db->where('anccet_id'$friends_id);
        
$query $this->db->get('anccet');
        
$retval[] = $query->result_array(); 
      
   
   
    }
     return 
$retval
} але в цьому випадку ідентифікатори прописуються автоматично від 0 і далі.
Звісно можна вивести дані знаючт ідентифікатор, однак в масиві вивлду я цого ідентифікаторі не знаю тай не правильно виводити на вгад ось таким чином я вивожу
PHP код:
 <?php foreach ($friends_array as $ancet_contetn): ?> 
<div id="drug1"><div class="pf"><div ><a  href="<?=base_url()."index.php/peges/shortstory/$ancet_contetn[anccet_id]";?>"><img class="ramka"  src="<?=$ancet_contetn['img_url'];?>" alt="<?=$ancet_contetn['last_name'];?>" /></a></div>
<div class="fonddr"></div>
<div class="dobd"><div class="ddr"><a id="vuv_anket_hor" href="<?=base_url()."index.php/peges/shortstory/$ancet_contetn[anccet_id]";?>"><?=$ancet_contetn['last_name'?></a></div><img src="/image/ddr.png" width="87" height="18" alt=""></div></div>
<div class="novd"><a href="#">Новый друг</a></div>
<div class="butd"><a href="#"><img src="/image/button.png" width="87" height="19" alt=""></a></div>
<div class="dobav"><a href="#">Добавить</a></div></div>
<?php endforeach; ?>
однак такий вигляд не правильний тому як має бути $ancet_contetn[0][0]['last_name'] таким чином мены виведе першу запись в масиві однак це не логічно і не правильно задавати ідентифікатори так як їх може бути і 100 і 1000. Питання в тому як вивести потрібні мені дані без вказання ідентифікатора або через цикл. Я не є профі, але на рівні середньо пхп знаю і не треба мене грузити фразами руки криві. Просто я на роботі і не можу зразу слідкувати за усіма відповідями які мені дають. Якщо хтось знає причину мого проколу і потрібно більш детально її обговорити то я можу залишити аську і біль детально обсудимо все там.
romanet вне форума Ответить с цитированием
Старый 08.07.2011, 12:35   #8
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Сделайте то что вам сказал Cronos20 и выложите на форум то что эти команды выводят( только эти данные запихните в тег цитаты или кода , что бы разобрать их удобнее было).
Плюс покажите как вы инициализируете $friends_array.
ssdm вне форума Ответить с цитированием
Старый 08.07.2011, 12:47   #9
romanet
Пользователь
 
Регистрация: 11.01.2011
Сообщений: 13
По умолчанию

Цитата:
Сообщение от ssdm Посмотреть сообщение
Сделайте то что вам сказал Cronos20 и выложите на форум то что эти команды выводят( только эти данные запихните в тег цитаты или кода , что бы разобрать их удобнее было).
Плюс покажите как вы инициализируете $friends_array.
$shortstory['friends_array'] = $this->shortstory_model->get_friends_id($friends);
romanet вне форума Ответить с цитированием
Старый 08.07.2011, 12:56   #10
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Нда. Вот вы ругаетесь что вам не помогают.
Но в то же время на простой вопрос
Цитата:
Сделайте то что вам сказал Cronos20 и выложите на форум то что эти команды выводят( только эти данные запихните в тег цитаты или кода , что бы разобрать их удобнее было).
Плюс покажите как вы инициализируете $friends_array.
.
отвечаете
Цитата:
$shortstory['friends_array'] = $this->shortstory_model->get_friends_id($friends);
.
Как вам после этого можно помочь ?
ssdm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделить только одну цифру dx2001 Microsoft Office Excel 6 30.05.2011 17:42
Возвращает только одну запись.... Cartman18 БД в Delphi 5 15.09.2010 16:53
printf выводит только два %s(строки) Mal4ishnik PHP 1 13.10.2009 00:01
passthru выводит только одну строку motorway PHP 5 07.07.2009 21:27
Не выводит значения из базы данных Linel PHP 13 26.02.2009 12:47