Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 8
Регистрация: 17.10.2012
Сообщений: 289

Как вывести на экран циклом?

20.05.2015, 23:34. Показов 1176. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вообщем хочу выучить MVC шаблон проектирования, пытаюсь разделить все что бы было понятно. Столкнулся с такой проблемой что у меня допустим циклом while выводит таблицу из бд, все работает хорошо. Пытаюсь разделить скрипт на 3 файла view.html model.php controller.php. Во втором файле ложу сам цикл, как его вывести в первом? может можно как-то вызвать цикл? Хочу так что бы по минимуму php кода было в view.html.
вот сама таблица:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  echo '<table border="1">';
  echo '<thead>';
  echo '<tr>';
  echo '<th>ФИО</th>';
  echo '<th>Дата занесения</th>';
  echo '<th>Редактировать</th>';
  echo '<th>Удалить</th>';
  echo '<th>Посмотреть</th>';
  echo '</tr>';
  echo '</thead>';
  echo '<tbody>';
      while($data = mysqli_fetch_array($result)){
        echo '<tr>';
        echo '<td>' . $data['FIO'] . '</td>';
        echo '<td>' . $data['Data_create'] . '</td>';
        echo "<td> <a href='http://kutirev.hol.es/redact.php?Id=".$data['Id']."&page=".$page."'><input type='button' class='bigbutton' value='Редактировать'> </td>";
        echo "<td> <a href='delete.php?Id=".$data['Id']."&page=".$page."' onclick='return confirm(\"Вы действительно хотите удалить этого сотрудника?\");'><input type='button' class='bigbutton' value='Удалить'> </td>";
        echo "<td> <a href='http://kutirev.hol.es/view.php?Id=".$data['Id']."&page=".$page."'><input type='button' class='bigbutton' value='Посмотреть'> </td>";
        echo '</tr>';
    }
    echo '</tbody>';
    echo '</table>';
и может кто посоветует учебник по этой теме? MVC что б с примерами и т.д. А то я уроки посмотрел, и статьи и не особо понял.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.05.2015, 23:34
Ответы с готовыми решениями:

Вывести на экран символы с циклом for
Здравствуйте. Нужно вывести на экран вот такую тему: ********* ******** ******* ****** ***** **** ***

Как вывести массив из БД и циклом вывести в сообщение на mail
Добрый день! Как вывести массив из БД и циклом вывести в сообщение на mail! не могу сообразить, подскажите! вот сам запрос и и фун-я...

Как объявить массив на 5 элементов, вывести на экран, проинициализировать его и снова вывести на экран?
как объявить массив на 5 элементов, вывести на экран, проинициализировать его и снова вывести на экран?

16
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
22.05.2015, 00:11
smokehawker, создай файл model.php туда помести вот этот код
Цитата Сообщение от smokehawker Посмотреть сообщение
while($data = mysqli_fetch_array($result)){
* * * * echo '<tr>';
* * * * echo '<td>' . $data['FIO'] . '</td>';
* * * * echo '<td>' . $data['Data_create'] . '</td>';
* * * * echo "<td> <a href='http://kutirev.hol.es/redact.php?Id=".$data['Id']."&page=".$page."'><input type='button' class='bigbutton' value='Редактировать'> </td>";
* * * * echo "<td> <a href='delete.php?Id=".$data['Id']."&page=".$page."' onclick='return confirm(\"Вы действительно хотите удалить этого сотрудника?\");'><input type='button' class='bigbutton' value='Удалить'> </td>";
* * * * echo "<td> <a href='http://kutirev.hol.es/view.php?Id=".$data['Id']."&page=".$page."'><input type='button' class='bigbutton' value='Посмотреть'> </td>";
* * * * echo '</tr>';
* * }
и тогда в первом файле там где должен быть этот код вставь
PHP
1
<?php require_once "model.php"; ?>
1
0 / 0 / 8
Регистрация: 17.10.2012
Сообщений: 289
22.05.2015, 01:16  [ТС]
я думал что вообще-то будет немного по другому(не так просто), что бы в model.php был только расчет, а допустим во view.php будет уже сам вывод с минимум php. Смотрел в уроках там цикл while как-то через foreach выводили во view.php, вот только я этот момент не понял немного. Хочу научиться соблюдать шаблон mvc.
0
 Аватар для lenk0belk0
7 / 7 / 5
Регистрация: 24.12.2014
Сообщений: 33
22.05.2015, 14:42
сначала надо собрать массив результата из бд:
PHP
1
2
3
4
$data_array = array();
while($data = mysqli_fetch_array($result)){
    $data_array[] = $data;
}
а потом выводите:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
if (count($data_array) >0 ) {
    echo '<tbody>';
    foreach ($data_array as $data) {
        echo '<tr>';
        echo '<td>' . $data['FIO'] . '</td>';
        echo '<td>' . $data['Data_create'] . '</td>';
        echo "<td> <a href='http://kutirev.hol.es/redact.php?Id=".$data['Id']."&page=".$page."'><input type='button' class='bigbutton' value='Редактировать'> </td>";
        echo "<td> <a href='delete.php?Id=".$data['Id']."&page=".$page."' onclick='return confirm(\"Вы действительно хотите удалить этого сотрудника?\");'><input type='button' class='bigbutton' value='Удалить'> </td>";
        echo "<td> <a href='http://kutirev.hol.es/view.php?Id=".$data['Id']."&page=".$page."'><input type='button' class='bigbutton' value='Посмотреть'> </td>";
        echo '</tr>';
    }
    echo '</tbody>';
}
Как-то так

Добавлено через 5 часов 57 минут
по поводу почитать/посмотреть посмотрите как устроены фреймворки (symfony, cakephp, codeinteger и т.д.), почитайте про шаблонизаторы (например twig, http://twig.sensiolabs.org)
вот еще статья интересная:
http://www.phpfaq.ru/tpl
1
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
22.05.2015, 18:21
Если вы хотите использовать MVC? да и вообще в шаблонах главным должен быть html а не php.
В предыдущем ответе, вам правильно подсказали что нужно собрать данные в массив, делать это нужно в модели, потом передать эти данные в контроллер и уже из контроллера передать данные в шаблон.
Только в шаблоне не должно быть никаких echo? а выглядеть должно все примерно так
PHP
1
2
3
4
5
6
7
8
<? if (count($data_array) >0 ) : ?>
<? foreach ($data_array as $data) : ?>
<tr>
<td><?=$data['FIO']; ?></td>
<td><?=$data['date_create']; ?></td>
</tr>
<? endforeach; ?>
<? endif; ?>
0
Заблокирован
22.05.2015, 18:37
Цитата Сообщение от alpex Посмотреть сообщение
Только в шаблоне не должно быть никаких echo? а выглядеть должно все примерно так
А это что?
PHP
1
<?=$data['date_create']; ?>
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
22.05.2015, 18:43
я имел ввиду вот такого
PHP
1
echo "<td> <a href='http://kutirev.hol.es/redact.php?Id=".$data['Id']."&page=".$page."'><input type='button' class='bigbutton' value='Редактировать'> </td>";
Добавлено через 1 минуту
неправильно выразился, echo должно быть для вывода переменных а не для вывода тегов
0
Заблокирован
22.05.2015, 18:53
Цитата Сообщение от alpex Посмотреть сообщение
неправильно выразился, echo должно быть для вывода переменных а не для вывода тегов
А в чём собственно разница? Вот твойц вывод и например через echo:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?
if (count($data_array) >0 )
  { 
    foreach ($data_array as $data)
      { 
        echo "<tr>
                <td>{$data['FIO']}</td>
                <td>{$data['date_create']}</td>
              </tr>";
      }
  } 
?>
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
22.05.2015, 18:56
Разница в читаемости кода, и в скорости его выполнения.
Зачем использовать php в тех местах где он не нужен?
0
Заблокирован
22.05.2015, 19:07
Цитата Сообщение от alpex Посмотреть сообщение
Разница в читаемости кода
Все мы знаем про фломастеры. Тут как говорится без комментариев.
Цитата Сообщение от alpex Посмотреть сообщение
и в скорости его выполнения.
Скорость мерял?
вот например:
PHP
1
echo '<td>'.$param.'</td>';
по скорости ни чем ни отличается от
PHP/HTML
1
<td><?=param; ?></td>
так как PHP выполняется построчно от начала файла а не от тэга <?php
и только
PHP
1
echo "<td>$param</td>";
будет совсем чуть-чуть медленние.
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
22.05.2015, 19:10
Я про двойные кавычки и написал.
В любом случае писать вот так
PHP
1
2
3
4
echo "<tr>
                <td>{$data['FIO']}</td>
                <td>{$data['date_create']}</td>
              </tr>";
это дурной тон, у меня редактор не разбирает html код внутри echo
0
Заблокирован
22.05.2015, 19:27
Цитата Сообщение от alpex Посмотреть сообщение
это дурной тон, у меня редактор не разбирает html код внутри echo
так дело в редакторе? А я то понял что так нельзя потому что:
Цитата Сообщение от alpex Посмотреть сообщение
Если вы хотите использовать MVC? да и вообще в шаблонах главным должен быть html а не php.
В предыдущем ответе, вам правильно подсказали что нужно собрать данные в массив, делать это нужно в модели, потом передать эти данные в контроллер и уже из контроллера передать данные в шаблон.
Только в шаблоне не должно быть никаких echo? а выглядеть должно все примерно так
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
22.05.2015, 19:34
Цитата Сообщение от Trukl Посмотреть сообщение
так дело в редакторе?
Да дело не столько в редакторе а сколько в здравом смысле, можно писать по разному например как в этой теме Цикл до while используя printf? чего уж мелочится в echo все писать, лучше уж сразу в printf делать
0
22.05.2015, 20:02

Не по теме:

Да я собственно без претензий, просто на ум пришла старая байка про обезьян. Иногда спрашиваешь у человека ПОЧЕМУ? А он и ответить ничего не может, кроме как - "потому что так заведено". А воду то давно отключили :D

0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
22.05.2015, 20:09
Trukl, ну так обоснуйте вы почему нужно так как написал я, а не так как было предложено ранее

Я вообще в первом посте написал, что в шаблоне главный должен быть html, потому что это шаблон.
0
Заблокирован
22.05.2015, 20:36
Ну раз речь о MVC, то начнём с того что это не какой не стандарт. Это просто стиль. А раз нет стандарта то наивно утверждать что, что то там должно быть главным. Хотя я лично не понимаю как HTML может быть главным это собственно меня и рассмешило. Я уже писал в какой то теме: "нате вам палец, отделите тёплое от мягкого". Вот и тут мягкое в пальце главнее тёплого.

А вот -
Цитата Сообщение от alpex Посмотреть сообщение
В предыдущем ответе, вам правильно подсказали что нужно собрать данные в массив, делать это нужно в модели, потом передать эти данные в контроллер и уже из контроллера передать данные в шаблон.
с этим определением MVC, я категорически согласен.

Но агитировать никого не буду. Ибо это просто стиль. Который больше для удобства нежели для скорости работы. Ну и для обучения конечно, его всем дают.

По сути главное в обучении MVC это понимание работы и взаимодействия частей программы а не сам стиль. В итоге, должно прийти понимание что и как взаимодействует. А не стремления придерживатся такого стиля везде где только можно, и делить САМ КОД на "главный" и "второстепенный".
0
22.05.2015, 21:01

Не по теме:

Шаблон - по другому можно назвать трафарет.
Так вот html это и есть этот трафарет , а в места где вырезаны буквы заливаются краской (php данные)
И написание в такой манере кода в шаблоне как раз дополнительно даст понимание взаимодействия частей программы.
А если писать все внутри echo? то со временем у "неокрепших умов в mvc" появится вопрос а почему бы мне этот html не поместить бы просто в переменную и в шаблоне просто не написать echo $table;

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2015, 21:01
Помогаю со студенческими работами здесь

Как вывести числа, которые введены циклом?
Public Sub lab999() Dim chet As Byte, nechet As Byte, sum As Integer, sum1 As Integer chet = 0 nechet = 0 sum = 0 sum1 = 0 For...

Как вывести массив типа string циклом?
Как вывести массив типа string циклом? В общем есть одномерный массив с неопределенным количеством элементов. Нужно вывести сначала...

Как вывести циклом статьи на одну кнопку?
добрый день у меня вот то кой вопрос, есть допустим 4 категорий статей на сайте в них есть также под категорий я сделал через базу...

Как вывести таблицу умножения одним циклом?
хочу изучить правильный код

Как вывести данные из двух таблиц циклом внутри цикла?
Всем привет! Прошу знатаков помочь :) В общем: я хочу вывести на страницу записи из БД, но загвоздка вся в том, что каждую выводимую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru