HTML이 PHP "if"문에 포함될 수 있습니까?


120

가능한 경우 PHP if 문 안에 HTML을 포함하고 싶습니다. 왜냐하면 HTML이 PHP if 문이 실행되기 전에 나타날 것이라고 생각하기 때문입니다.

데이터베이스의 테이블에 액세스하려고합니다. 데이터베이스의 모든 테이블을 나열하는 풀다운 메뉴를 HTML로 만들고 풀다운에서 테이블을 선택하면 제출 버튼을 누릅니다.

isset 함수를 사용하여 제출 버튼이 눌 렸는지 확인하고 PHP에서 루프를 실행하여 데이터베이스의 테이블 내용을 표시합니다. 이 시점에서 전체 테이블이 있지만이 테이블에 대해 더 많은 쿼리를 실행하고 싶습니다. 따라서 내가 if 문 내에서 더 많은 HTML을 실행하려는 이유입니다. 궁극적으로 테이블의 내용을 업데이트 (1 개 이상의 행 또는 여러 행)하거나 삭제 (1 개 이상의 행)하려고합니다. 내가하려는 것은 테이블의 열에 해당하는 또 다른 풀다운을 만들어 테이블 검색을 더 쉽게 만들고 테이블의 내용을 업데이트하거나 삭제할지 여부에 해당하는 라디오 버튼을 만드는 것입니다.


3
솔루션 여기를 참조하십시오 php.net/manual/en/control-structures.alternative-syntax.php
PUK

답변:


371
<?php if($condition) : ?>
    <a href="http://yahoo.com">This will only display if $condition is true</a>
<?php endif; ?>

요청에 따라 elseif 및 else ( 문서 에서도 찾을 수 있음 )

<?php if($condition) : ?>
    <a href="http://yahoo.com">This will only display if $condition is true</a>
<?php elseif($anotherCondition) : ?>
    more html
<?php else : ?>
    even more html
<?php endif; ?>

그렇게 간단합니다.

HTML은 조건이 충족되는 경우에만 표시됩니다.


"... ([문서] [1]에서도 찾을 수 있음)"이 문서는 정확히 어디에 있습니까?
gmeben

39

예,

<?php
if ( $my_name == "someguy" ) {
    ?> HTML GOES HERE <?php;
}
?>

15

예.

<?  if($my_name == 'someguy') { ?>
        HTML_GOES_HERE
<?  } ?>

6
일부 서버에는 libxml 또는 pdo_mysql이 설치되어 있지 않지만이를 사용하는 솔루션을 권장 할 수 있습니다.
chaos

2
나는 이것이 Jon의 대답에 대한 주석이어야한다고 생각합니다.
Rimas Kudelis 2009

3
음 .. 주석에 형식화 된 코드를 정확히 삽입하는 방법을 알려주시겠습니까?
chaos

3

PHP 닫기 / 열기 태그를 사용하는 것은 두 가지 이유 때문에 그다지 좋은 해결책이 아닙니다. PHP 변수를 일반 HTML로 인쇄 할 수없고 코드를 읽기가 매우 어렵게 만듭니다 (다음 코드 블록은 끝 괄호로 시작합니다). } 하지만 독자는 이전에 무엇이 있었는지 전혀 모릅니다.)

heredoc 구문 을 사용하는 것이 더 좋습니다 . 다른 언어 (예 : bash)와 동일한 개념입니다.

 <?php
 if ($condition) {
   echo <<< END_OF_TEXT
     <b>lots of html</b> <i>$variable</i>
     lots of text...
 many lines possible, with any indentation, until the closing delimiter...
 END_OF_TEXT;
 }
 ?>

END_OF_TEXT구분 기호입니다 (기본적으로 EOF, EOT와 같은 텍스트 일 ​​수 있음). PHP는 그 사이의 모든 것을 큰 따옴표로 묶은 것처럼 문자열로 간주하므로 변수를 인쇄 할 수 있지만 따옴표를 이스케이프 할 필요가 없으므로 html 속성을 인쇄하는 데 매우 편리합니다.

닫는 구분 기호는 줄의 시작 부분에서 시작해야하며 세미콜론은 다른 문자 ( END_OF_TEXT;) 없이 바로 뒤에 있어야합니다 .

작은 따옴표 ( ')로 묶인 문자열의 동작을 가진 Heredoc을 nowdoc 라고 합니다 . nowdoc 내부에서는 구문 분석이 수행되지 않습니다. heredoc과 같은 방식으로 사용합니다. 여는 구분 기호를 작은 따옴표로 묶기 만하면 echo <<< 'END_OF_TEXT'됩니다.


이를 상기시켜 주셔서 대단히 감사합니다. Heredoc은 여러 조건이있는 더 복잡한 HTML에 매우 유용하며 속성과 따옴표를 이스케이프하는 것보다 훨씬 쉽습니다!
UTCWebDev

2

따라서 조건이 원하는 값과 같으면 PHP 문서는 "include"를 실행하고 include는 해당 문서를 현재 창에 추가합니다. 예를 들면 다음과 같습니다.

`

<?php
$isARequest = true;
if ($isARequest){include('request.html');}/*So because $isARequest is true then it will include request.html but if its not a request then it will insert isNotARequest;*/
else if (!$isARequest) {include('isNotARequest.html')}
?>

`


0
<?php if ($my_name == 'aboutme') { ?>
    HTML_GOES_HERE
<?php } ?>

1
답변에 대한 설명을 추가하십시오.
Parixit

10
P : 설명은 "오년의 오래된 답변을 복사 - 붙여 넣기 '가 될 수
Erenor 파스

0

나는 이것이 오래된 게시물이라는 것을 알고 있지만, 여기에 html과 php를 섞지 말 것을 제안하는 단 하나의 답변이 있다는 것이 정말 싫어요. 콘텐츠를 혼합하는 대신 템플릿 시스템을 사용하거나 기본 템플릿 시스템을 직접 만들어야합니다.

PHP에서

<?php 
  $var1 = 'Alice'; $var2 = 'apples'; $var3 = 'lunch'; $var4 = 'Bob';

  if ($var1 == 'Alice') {
    $html = file_get_contents('/path/to/file.html'); //get the html template
    $template_placeholders = array('##variable1##', '##variable2##', '##variable3##', '##variable4##'); // variable placeholders inside the template
    $template_replace_variables = array($var1, $var2, $var3, $var4); // the variables to pass to the template
    $html_output = str_replace($template_placeholders, $template_replace_variables, $html); // replace the placeholders with the actual variable values.
  }

  echo $html_output;
?>

HTML (/path/to/file.html)

<p>##variable1## ate ##variable2## for ##variable3## with ##variable4##.</p>

결과는 다음과 같습니다.

Alice ate apples for lunch with Bob.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.