Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: циклы в mysqli

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Coder1994
Отправлено: 17 Ноября, 2010 - 17:30:51
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




Здравствуйте! У меня возникла проблема с выводом цикла из БД посредством mysqli
PHP:
скопировать код в буфер обмена
  1. <?
  2. include_once 'config.php'; # в конфиге коннектимся к БД
  3. $input = $mysqli->query("SELECT * FROM `users` ORDER BY `id` DESC LIMIT 10");
  4. while ($us = $input->fetch_array($input)){
  5. $us = get_user($us['id']);
  6. echo '<a href="/user_profile.php?id='.$us['id'].'">'.$us['nick'].'</a><br />';
  7. }
  8.  
  9. include_once 'inc/foot.php';
  10. ?>

Можете указать где ошибка?
 
 Top
Мелкий Супермодератор
Отправлено: 17 Ноября, 2010 - 17:58:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Ну что сразу бросается в глаза: $input->fetch_array($input) у метода другой параметр, а именно - тип возвращаемого массива.


-----
PostgreSQL DBA
 
 Top
Coder1994
Отправлено: 18 Ноября, 2010 - 14:07:03
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?
  2. include_once 'config.php'; # в конфиге коннектимся к БД
  3. $input = $mysqli->query("SELECT * FROM `users` ORDER BY `id` DESC LIMIT 10");
  4. while ($us = $input->fetch_array){
  5. $us = get_user($us['id']);
  6. echo '<a href="/user_profile.php?id='.$us['id'].'">'.$us['nick'].'</a><br />';
  7. }
  8.  
  9. include_once 'inc/foot.php';
  10. ?>

сделал так, ошибка не лезет,но вывода нет
 
 Top
Мелкий Супермодератор
Отправлено: 18 Ноября, 2010 - 14:17:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А скобки у метода куда дели? Это всё-таки метод, а не член класса.


-----
PostgreSQL DBA
 
 Top
CenapaTop
Отправлено: 18 Ноября, 2010 - 14:19:29
Post Id



Частый гость


Покинул форум
Сообщений всего: 166
Дата рег-ции: Авг. 2009  


Помог: 1 раз(а)




PHP:
скопировать код в буфер обмена
  1. while ($us = $input->fetch_array()){ ...

опоздал

(Отредактировано автором: 18 Ноября, 2010 - 14:20:23)

 
 Top
Zend
Отправлено: 18 Ноября, 2010 - 14:35:15
Post Id


Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




В конечном итоге, должно выглядеть так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. include_once 'config.php'; # в конфиге коннектимся к БД
  4. $input = $mysqli->query("SELECT * FROM `users` ORDER BY `id` DESC LIMIT 10");
  5. while ($us = $input->fetch_array() ){
  6. $us = get_user($us['id']);
  7. echo '<a href="/user_profile.php?id='.$us['id'].'">'.$us['nick'].'</a><br />';
  8. }
  9. include_once 'inc/foot.php';
  10. ?>
  11.  
 
 Top
Coder1994
Отправлено: 18 Ноября, 2010 - 14:58:38
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




и ещё вопрос,а можете посоветовать какую-нибудь функцию постраничной навигации (функцию,а не кусок кода)?
 
 Top
OrmaJever Модератор
Отправлено: 18 Ноября, 2010 - 15:00:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




из этого куска кода функцию можно написать самому
http://php.su/articles/?cat=exam...les&page=062

(Отредактировано автором: 18 Ноября, 2010 - 15:01:06)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Coder1994
Отправлено: 18 Ноября, 2010 - 15:36:16
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




я пытался это кусок переписать в функцию,не увенчалось успехом,вывода вообще никакого не было, вот код, может найдёте ошибку?
PHP:
скопировать код в буфер обмена
  1. function pages(){
  2. // Переменная хранит число сообщений выводимых на станице
  3. $num = $user['elements'];
  4. // Извлекаем из URL текущую страницу
  5. $page = $_GET['page'];
  6. // Находим общее число страниц
  7. $total = intval(($posts - 1) / $num) + 1;
  8. // Определяем начало сообщений для текущей страницы
  9. $page = intval($page);
  10. // Если значение $page меньше единицы или отрицательно
  11. // переходим на первую страницу
  12. // А если слишком большое, то переходим на последнюю
  13. if(empty($page) or $page < 0) $page = 1;
  14.   if($page > $total) $page = $total;
  15. // Вычисляем начиная к какого номера
  16. }
  17. function pager(){
  18. if ($page != 1) $pervpage = '<a href="?page=1"><<</a>
  19.                               <a href="?page='. ($page - 1) .'"><</a> ';
  20. // Проверяем нужны ли стрелки вперед
  21. if ($page != $total) $nextpage = ' <a href="?page='. ($page + 1) .'">></a>
  22.                                   <a href="?page=' .$total. '">>></a>';
  23.  
  24. // Находим две ближайшие станицы с обоих краев, если они есть
  25. if($page - 2 > 0) $page2left = ' <a href="?page='. ($page - 2) .'">'. ($page - 2) .'</a> | ';
  26. if($page - 1 > 0) $page1left = '<a href="?page='. ($page - 1) .'">'. ($page - 1) .'</a> | ';
  27. if($page + 2 <= $total) $page2right = ' | <a href="?page='. ($page + 2) .'">'. ($page + 2) .'</a>';
  28. if($page + 1 <= $total) $page1right = ' | <a href="?page='. ($page + 1) .'">'. ($page + 1) .'</a>';
  29.  
  30. // Вывод меню
  31. echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
  32. }

а вот код файла с тестом функции постр. навигации:
PHP:
скопировать код в буфер обмена
  1. <?
  2. include_once 'config.php';
  3. include_once 'functions/functions.php';
  4. include_once 'functions/true_user.php';
  5. $title = 'Пользователи сайта';
  6. include_once 'inc/head.php';
  7.  
  8. title();
  9. userint();
  10. $posts = $mysqli->query("SELECT * FROM `users`");
  11. $posts = $posts->num_rows;
  12. $start = $page * $num - $num;
  13. $query = "SELECT `id`, `nick` FROM `users` ORDER by ID DESC IMIT $start, $num";
  14. if ($result = $mysqli->query($query)) {
  15.     while ($row = $result->fetch_assoc()) {
  16.         printf ("%s (%s)\n", $row["id"], $row["nick"]);
  17.     }
  18.     $result->close();
  19. }
  20. pager();
  21.  
  22. include_once 'inc/foot.php';
  23. ?>
 
 Top
JustUserR
Отправлено: 18 Ноября, 2010 - 22:31:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Coder1994 Возможной причиной возникновения неправильного постраничного отображения содержимого в вашем случае - является некорректное использование контекстом представления переменных В частоности обеспечивающая предварительную конфигурацию и выбор позиции отображения информационных полей функция - использует сохранение обработанных параметров в локальным переменных - которые не является доступными для чтения после проведения ее вызова - и при интерполяции в строковую константу SQL-запроса обеспечивают интерпретацию как нулевые значения В качестве возможного решения применимо использования общедоступного глобального массива $_GLOBALS для установки целевых параметров - или оператора global реализующего соответствующую ссылку


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
OrmaJever Модератор
Отправлено: 18 Ноября, 2010 - 23:57:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Coder1994 вы себе щас ставите планы не по вашим знаниям. Я бы посоветовал зделать чтото по проще.
Coder1994 пишет:
я пытался это кусок переписать в функцию,не увенчалось успехом,вывода вообще никакого не было

Что бы функция чтото вывела должен быть return в конце...


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
JustUserR
Отправлено: 19 Ноября, 2010 - 19:25:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




OrmaJever пишет:
Что бы функция чтото вывела должен быть return в конце...
Приведенная автором темы реализация приложение не требует использования операции возврата значения в функции - поскольку архитектура функциональных элементов предполагает сохранение полученных значений в переменных величиных глобальной области видимости


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Coder1994
Отправлено: 20 Ноября, 2010 - 16:50:14
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




взял другую функцию
PHP:
скопировать код в буфер обмена
  1. # Функция постраничной навигации
  2. function page($k_page=1){
  3. $page=1;
  4. if (isset($_GET['page'])){
  5. if ($_GET['page']=='last')$page=intval($k_page);elseif(is_numeric($_GET['page'])) $page=intval($_GET['page']);}
  6. if ($page<1)$page=1;
  7. if ($page>$k_page)$page=$k_page;
  8. return $page;}
  9.  
  10. function k_page($k_post=0,$k_p_str=10){ // Высчитывает количество страниц
  11. if ($k_post!=0){$v_pages=ceil($k_post/$k_p_str);return $v_pages;}
  12. else return 1;}
  13.  
  14. function str($link='?',$k_page=1,$page=1){ // Вывод номеров страниц (только на первый взгляд кажется сложно ;))
  15. if ($page<1)$page=1;
  16. echo "<div class=\"pages\">\n";
  17.  
  18. echo "Страницы:<br />\n";
  19. if ($page!=1)echo "<a href=\"".$link."page=1\">1</a>";else echo "<b>1</b>";
  20. for ($ot=-3; $ot<=3; $ot++){
  21. if ($page+$ot>1 && $page+$ot<$k_page){
  22. if ($ot==-3 && $page+$ot>2)echo " ..";
  23. if ($ot!=0)echo " <a href=\"".$link."page=".($page+$ot)."\">".($page+$ot)."</a>";else echo " <b>".($page+$ot)."</b>";
  24. if ($ot==3 && $page+$ot<$k_page-1)echo " ..";}}
  25. if ($page!=$k_page)echo " <a href=\"".$link."page=last\">$k_page</a>";elseif ($k_page>1)echo " <b>$k_page</b>";
  26. echo "</div>\n";
  27. }

код файла:
PHP:
скопировать код в буфер обмена
  1. <?
  2. include_once 'config.php';
  3. include_once 'functions/functions.php';
  4. include_once 'functions/true_user.php';
  5. $title = 'Пользователи сайта';
  6. include_once 'inc/head.php';
  7.  
  8. title();
  9. userint();
  10. $k_post = $mysqli->query("SELECT * FROM `users`");
  11. $k_post = $k_post->num_rows;
  12. $k_page = k_page($k_post,$user['elements']);
  13. $page = page($k_page);
  14. $start = $user['elements']*$page-$user['elements'];
  15. $query = "SELECT `id`, `nick` FROM `users` ORDER BY `id` DESC LIMIT $start, $user[elements]";
  16. if ($result = $mysqli->query($query)) {
  17.     while ($row = $result->fetch_assoc()) {
  18.         printf ("%s (%s)\n", $row["id"], $row["nick"]);
  19.     }
  20.     $result->close();
  21. }
  22. if ($k_page>1)str("users_list.php?",$k_page,$page);
  23.  
  24. include_once 'inc/foot.php';
  25. ?>

всё равно вывода нет, $user['elements'] = 10

(Отредактировано автором: 20 Ноября, 2010 - 16:50:51)

 
 Top
OrmaJever Модератор
Отправлено: 20 Ноября, 2010 - 16:56:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Coder1994 а вы пробовали понять в чём дело и какая строка работает не так?
Какую ошибку возвращает бд?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Coder1994
Отправлено: 20 Ноября, 2010 - 17:00:21
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




ошибки вообще нет, просто переменная $page почему-то равна нулю
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB