将PHP与HTML混合

时间:2013-12-16 01:28:14

标签: php html mixins

我正在创建一个表单,我需要为X和Y插入2个值来创建一个X行和Y行的表。但是我无法使表格出现。该函数被调用,但HTML被忽略,出于某种原因,我只得到一行内容为“Line 1 Line 2 Line3 ... Row 1,Row 2,....”

这是我的代码:

<body>
<form method="post" action="<?php $_SERVER['REQUEST_URI'] ?>" >

    X= <input type="text" name="x"  /> <br />
    Y= <input type="text" name="y"  /> <br  />
    Diferença=  <select name="expressao">
                    <option value=">"> > </option>
                    <option value="<"> < </option>
                    <option value="="> = </option>
                </select>
    <input type="submit" value="enviar"  />
    <input type="hidden" name="enviar" value="1" />

</form>
<hr />

<?php 

function tabela () {
    tabelashow ();  
}

if (!empty($_POST['enviar'])) {

    $x=$_POST['x'];
    $y=$_POST['y'];
    $expressao=$_POST['expressao'];

    echo "O valor da expressão $x $expressao $y é ";

    if ($expressao == ">") { 
        if ($x > $y) {
            echo "Verdadeiro";
            tabela ();
            }
        else {
            echo "Falso"; }
    }

    elseif ($expressao == "<") {
        if ($x < $y) {
            echo "Verdadeiro"; }
        else { 
            echo "Falso"; }
        }

    else {
        if ($x == $y) {
            echo "Verdadeiro";
        }
        else { 
            echo "Falso"; }
        }
}

?>
<hr />
<table border="1">
<?php
function tabelashow () { 
    for ($t=1; $t<=3; $t++) { 
        echo "<tr>";
        for ($u=1; $u<=3; $u++) {
            echo("<td>Coluna $u </td>");
        }
        echo "</tr>";
    }
}
?>
</table>
</body>

5 个答案:

答案 0 :(得分:2)

您错过了第一行的分号和echoprint这个词

<?php print $_SERVER['REQUEST_URI']; ?>

做jessh也说的话。似乎是合法的。

答案 1 :(得分:1)

您在定义之前调用tabelashow ();,向底部调用。

切换调用函数的位置(https://gist.github.com/jshawl/7981130#file-so-php-L20

在哪里定义它(https://gist.github.com/jshawl/7981130#file-so-php-L60)应该做的。

答案 2 :(得分:1)

实际问题是表格的HTML代码在标记之前输出

以下是您的PHP输出:

O valor da express�o 3 > 2 � Verdadeiro<tr><td>Coluna 1 </td><td>Coluna 2 </td><td>Coluna 3 </td></tr><tr><td>Coluna 1 </td><td>Coluna 2 </td><td>Coluna 3 </td></tr><tr><td>Coluna 1 </td><td>Coluna 2 </td><td>Coluna 3 </td></tr><hr />
<table border="1">

</table>

解决此问题的一种方法是将<table border="1">标记置于之上调用tabela(),如下所示:

</form>
<hr />
<table border="1">
<?php 

function tabela () {
    tabelashow ();  
}

if (!empty($_POST['enviar'])) {
...

或者你可以在tabelashow()函数中回显table标签,如下所示:

function tabelashow () { 
    echo '<table border="1">';
    for ($t=1; $t<=3; $t++) { 
        echo "<tr>";
        for ($u=1; $u<=3; $u++) {
            echo("<td>Coluna $u </td>");
        }
        echo "</tr>";
    }
    echo "</table>";
}

我只是在我自己的服务器上试过它,无论哪种方式都可以。

答案 3 :(得分:1)

将echo short tag用于表单的action属性..

<form method="post" action="<?= $_SERVER['REQUEST_URI']; ?>" >

答案 4 :(得分:0)

多么老的帖子。以防它可以帮助某人。

<form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>" >

    X= <input type="text" name="x"  /> <br />
    Y= <input type="text" name="y"  /> <br  />
    Diferença=  <select name="expressao">
                    <option value=">"> > </option>
                    <option value="<"> < </option>
                    <option value="="> = </option>
                </select>
    <input type="submit" value="enviar"  />
    <input type="hidden" name="enviar" value="1" />

</form>
<hr />
<?php
$tabela_poner = false;

if(isset($_POST['enviar'])){
    $x = $_POST['x'];
    $y = $_POST['y'];
    $expressao = $_POST['expressao'];

    function tabelashow(){
        global $tabela_poner;
        if($tabela_poner):
            global $x, $y;
            ?>
            <table border="1">
                <?php for($i = 1; $i <= $x; $i++): ?>
                <tr>
                    <?php for($j = 1; $j <= $y; $j++): ?>
                    <td>Fila #<?php echo $i; ?> / Coluna #<?php echo $j; ?></td>
                    <?php endfor; ?>
                </tr>
                <?php endfor; ?>
            </table>
        <?php endif; // ($tabela_poner)
    }

    function tabela(){
        global $tabela_poner;
        $tabela_poner = true;
    }

    echo "O valor da expressão $x $expressao $y é ";

    // verdad o no
    switch($expressao){
        case '>':
            if($x > $y){
                echo 'Verdadeiro';
                tabela();
            }
            else
                echo 'Falso';
            break;
        case '<':
            echo $x < $y ? 'Verdadeiro' : 'Falso';
            break;
        case '=':
            echo $x === $y ? 'Verdadeiro' : 'Falso';
    }
    ?><hr /><?php
}
?>
<?php tabelashow(); ?>