2009-04-06 11 views
89

Me gustaría incrustar HTML dentro de una declaración PHP if, si es posible, porque estoy pensando que el HTML aparecerá antes de que se ejecute la instrucción PHP if.¿Se puede incluir HTML dentro de la declaración "si" de PHP?

estoy tratando de acceder a una tabla en una base de datos. Creé un menú desplegable en HTML que enumera todas las tablas de la base de datos y una vez que selecciono la tabla del menú desplegable, presiono el botón Enviar.

utilizo la función isset para ver si el botón de envío ha sido presionado y ejecutar un bucle en PHP para mostrar el contenido de la tabla en la base de datos. Entonces, en este punto, tengo la tabla completa, pero quiero ejecutar más consultas en esta tabla. De ahí la razón por la que estoy tratando de ejecutar más HTML dentro de la declaración if. En definitiva, intento actualizar los contenidos (1 o más contenidos en una fila o varias filas) o eliminarlos (1 o más filas) en la tabla. Lo que trato de hacer es crear otro menú desplegable que corresponda a una columna en una tabla para facilitar la búsqueda en la tabla y botones de opción que correspondan a si me gustaría actualizar o eliminar contenido en la tabla.

+3

ver aquí para una solución http://php.net/manual/en/control-structures.alternative-syntax.php – puk

Respuesta

32

Sí,

<?php 
if ($my_name == "someguy") { 
    ?> HTML GOES HERE <?php; 
} 
?> 
283
<?php if($condition) : ?> 
    <a href="http://yahoo.com">This will only display if $condition is true</a> 
<?php endif; ?> 

Por petición, esto es elseif y else (que también se puede encontrar en the docs)

<?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; ?> 

Es así de simple.

El HTML sólo se mostrará si se cumple la condición.

+4

1 porque estoy a favor de que el estilo de código específica de la vista. –

+30

¡Odio hacer eco de html! –

+1

+1 para responder la pregunta. Dicho esto, el PO posible que desee ver a un buen lenguaje de plantillas Smarty como para separar su punto de vista de su modelo algo. –

9

Sí.

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

short tags bad m'kay. Algunos servidores no los tienen habilitados. –

+6

Algunos servidores no tienen instalados libxml o pdo_mysql, pero aún podemos recomendar soluciones que los usen. – chaos

+2

Creo que esto debería haber sido solo un comentario para la respuesta de Jon. –

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

Agregue alguna descripción a su respuesta. Descripción – Parixit

+9

podría ser "copiar y pegar de 5 años de edad respuestas": P –

2

usando PHP etiquetas de cierre/apertura no es muy buena solución, debido a 2 razones: no puede imprimir las variables de PHP en HTML plano y hacer que su código muy difícil de leer (el siguiente bloque de código comienza con un corchete final }, pero el lector no tiene idea de lo que era antes).

mejor es utilizar heredoc sintaxis. Es el mismo concepto que en otros idiomas (como 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 es su delimitador (que puede ser básicamente cualquier texto como EOF, EOT). Todo lo que se encuentra en medio se considera cadena por PHP como si estuviera entre comillas dobles, por lo que puede imprimir variables, pero no tiene que escapar de ninguna comilla, por lo que es muy conveniente para imprimir atributos html.

Tenga en cuenta que el delimitador de cierre debe comenzar al principio de la línea y el punto y coma debe colocarse justo después sin otros caracteres (END_OF_TEXT;).

Heredoc con el comportamiento de la secuencia en comillas simples (') se llama nowdoc. No se realiza ningún análisis dentro de nowdoc. Lo usa de la misma manera que heredoc, simplemente coloca el delimitador de apertura entre comillas simples: echo <<< 'END_OF_TEXT'.

+0

Muchas gracias por recordarme esto. ¡Heredoc es extremadamente útil para HTML más complejo con múltiples condiciones, y es mucho más fácil que escapes de atributos y citas! – UTCWebDev

0

Así que si la condición es igual al valor que desee y luego el documento php se ejecutará "incluir" e incluir agregará dicho documento a la ventana actual por ejemplo:

`

<?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

Por favor, elabore su respuesta. –

+0

@HarshWardhan Hecho –

Cuestiones relacionadas