POST到同一个页面的显示问题
来源:2-12 作业题
Raaaaaaay
2017-08-15 01:03:26
两个图形的显示已经完成了,但是每次在打开到这个页面的时候,会在提交按钮下面自动输出一句话:请输入数值(这个是我在代码段里面写到的),请问怎么解决?代码如下:
<html>
<head>
<meta charset='utf-8'>
<title></title>
</head>
<body>
<form action="#" method="POST">
<input type="text" name="row" placeholder="请输入要打印的行数"><br>
<input type="submit" value="金字塔" name="pyramid">
<input type="submit" value="空心菱形" name="hollowDiamond">
</form>
<?php
//隐藏notice级信息提示
error_reporting(E_ALL&~E_NOTICE);
//接收表单POST形式发送的参数并赋值给变量
$num1=$_POST['pyramid'];
$num2=$_POST['hollowDiamond'];
$row=$_POST['row'];
//判断用户输入的内容是否为数值型
if (is_numeric($row)){
//判断用户提交按钮是否为金字塔
if ($num1){
//外循环次数等于用户输入的的层数
for ($i=1; $i<=$row; $i++) {
//每一层的输出内容分为三部分,(总层数-行数的个数的空格)+(总层数*2-1的个数的*)+(总层数-行数的个数的空格)
for ($j=1; $j<=$row-$i; $j++) {
echo "<span style='color:#FFF'>*</span>";
}
for ($k=1; $k<=$i*2-1; $k++) {
echo "*";
}
for ($m=1; $m<=$row-$i; $m++) {
echo "<span style='color:#FFF'>*</span>";
}
echo "<br/>";
}
}
//判断用户提交按钮是否为空心菱形
if ($num2){
//空心菱形的上半部(包含中间一行)循环
for ($i=1;$i<=$row;$i++) {
for ($j=1;$j<=$row-$i;$j++) {
echo "<span style='color:#FFF'>*</span>";
}
for ($k=1;$k<=$i*2-1;$k++) {
if($k==1||$k==$i*2-1){
echo "*";
}else{
echo "<span style='color:#FFF'>*</span>";
}
}
echo "<br/>";
}
//下半部循环
for ($i=1;$i<=$row-1;$i++) {
for ($j=1;$j<=$i;$j++){
echo "<span style='color:#FFF'>*</span>";
}
for ($k=1;$k<=($row-$i)*2-1;$k++) {
if($k==1||$k==($row-$i)*2-1){
echo "*";
}else{
echo "<span style='color:#FFF'>*</span>";
}
}
echo "<br/>";
}
}
}else{
echo "请输入数值";
}
?>
</body>
</html>
1回答
您好,进入页面,判断$row是否是数字的控制语句执行,此时因为我们还没有任何输入,is_number($row)的返回结果为false,程序就会走else流程,输出“请输入数值”,应该在最外层添加$row这个变量是否存在或者是否为空的判断,包裹住整个php执行代码,$row存在或者不为空,才能走下面的php代码。在你的代码基础上添加结果如下:
或者:
如果解决了您的问题,请采纳,祝学习愉快~
相似问题