#php #html
#php #HTML
Вопрос:
Привет, у меня есть эта страница php, которая в основном выглядит по-разному в зависимости от пользовательского ввода. Если пользователь вошел в систему, я вывожу html-таблицу, представляющую вошедшего в систему пользователя. Если пользователю не удалось войти в систему, я вывожу html-таблицу, представляющую пользователя, не вошедшего в систему, т.е. Некоторый красный текст и тому подобное. Проблема в том, что прямо сейчас я делаю это, выводя (функция php echo) HTML-строки. Это действительно плохо, и если мне нужно что-то изменить, это боль в * ss.
Есть ли у меня какой-нибудь способ создать html-файл, который содержит только таблицу, а затем вывести ее?
Или, может быть, я мог бы создать полную html-страницу, но вывести только ее табличную часть?
Заранее спасибо
Ответ №1:
Ну, а пока вы можете просто создать файлы, а затем include
поместить их на страницу.
Более надежная система обычно требует лучшего дизайна с самого начала.
Комментарии:
1. Почему, потому что она короткая? Это дает краткое и точное решение проблемы OP. Не все ответы должны содержать код или быть длиной в 10 строк.
2. Хм, но если я включу html-файл целиком, это не испортит остальную часть страницы?
3. @user3742045 Вам не нужно писать всю HTML-страницу, только ту часть, которая вам нужна, то есть таблицу (без doctype, head, body и т. Д.). Затем включите ее в нужное место.
4. @ChristianGollhardt Я не знаю названной функции PHP
read
.5. @ChristianGollhardt Я тоже не знаком с этой техникой. Пожалуйста, просветите меня.
Ответ №2:
Похоже, вы спрашиваете, можете ли вы INCLUDE
создать файл с помощью оператора if. Что-то вроде:
if ($user == "loggedin") include ("loggedin.php");
Ответ — нет. Я пробовал это.
Если вы хотите сделать HTML-разметку более чистой (под которой я подразумеваю не повторять 1 строку за раз), что вы можете сделать, это использовать heredocs:
$loggedin = <<<someText
<table><tbody><tr><td>Hello $username</td></tr></tbody></table>
someText;
if ($user == "loggedin") echo $loggedin;
Вам даже не нужно сохранять ее как переменную, вы просто повторяете ее:
echo <<<someMore
<table><tbody>
<tr>
<td>You last logged in $logdate</td>
</tr>
</tbody>
</table>
someMore;
Heredocs будут отображаться на странице точно так, как вы их ввели, за исключением того, что вы можете использовать переменную PHP внутри них. Вы даже можете использовать переменные массива внутри heredoc следующим образом:
echo <<<somearrays
{$arrayname1[$i]}<br>
{$arrayname2[5]}<br>
{$arrayname3[7]}<br>
somearrays;
Чтобы уточнить: вы либо говорите echo
, либо $variable =
затем вводите <<< (ключевое слово для heredoc)
введите имя heredoc (somearrays в этом примере)
завершите свой HTML-текст
именем heredoc и точкой с запятой
Ответ №3:
Вы можете создавать разные HTML-файлы и выводить желаемый с помощью:
echo file_get_contents( 'Path/to/your/specific file/' );
ссылка на file_get_contents
API http://php.net/file_get_contents
Редактировать:
Как вы можете следовать из приведенных ниже комментариев, я считаю, что include
это лучшее решение
Комментарии:
1. @SecondRikudo и по какой причине?!
2. Потому что это именно то
include
, для чего нужно. Нет смысла загружать весь файл в память.3. Это действительно, это правильно, но это бесполезно . Нет абсолютно никакой причины загружать весь файл в память только для его вывода. А что, если файл весит 100 МБ? Вы бы потратили 100 МБ или ОЗУ на запрос? Черт возьми, нет. Не говоря уже о том, что произойдет, если во включенном файле будет некоторый PHP-код. Она будет выведена на страницу.
4. Что ж, это имеет больше смысла, и я могу это понять, если вы сформулируете это так, честно говоря, я не думал об этом таким образом, теперь я могу только согласиться с вами, спасибо за подсказку 🙂