我正在创建一个表单,我需要为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>
答案 0 :(得分:2)
您错过了第一行的分号和echo
或print
这个词
<?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(); ?>